-
I really like this idea for a homelab [1] jbod. Hardware Haven builds out Just a Bunch Of Disks using some pretty affordable hardware and has up to 16 disks added to his homelab with the os having full access to use with zfs.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /homelab/
[2]: /thoughts/
Posts tagged: homelab
All posts with the tag "homelab"
40 posts
latest post 2026-04-08
Publishing rhythm
Setting up 4G Backup with Google Fi and Netgear LM1200
I connected my home network to have 4G bakcup with Google Fi and Netgear
LM1200. Goodle Fi offers free data-only sim cards that you can order from
their service. It takes a couple of days, and a new sim arrives in the mail
free of charge. It does pull data from your account, so if you are not on an
unlimited plan be careful of how much you let go through the sim.
I’ve owned this for a few years now, but it’s been disconnected for a good six
months or so. I’m not s[e what happened, but it stopped recognizing the old
sim card. no need to point out the coffee stains at the end, its
definitely not related
Follow the provided instuctions # [1]
Activating the sim asked for a confirmation code shipped with the sim card,
then brought me to this page.
[2]
Clicking Have a Different Device? brought up instructions to set up the APN in the LM1200.
[3]
Restart # [4]
First thing for me was that the sim was not recognized, restarting the LM1200
did the trick to recognize it as a Google F...
Make MinIO Access Key
Today in my homelab [1] I wanted to setup a new service that needed a MinIO access
key. So I created a new user and a new access key with the MinIO CLI rather
than poking through the ui like I have before.
[2]
Global Level vs User Level # [3]
The MinIO CLI has two levels of access, global and user level. Most of the
commands in this post will have several ways to do similar tasks that would
potentially work. We are going to prefer to use the user level commands for
more control. For some commands such as listing Keys it is handy to use the
global level.
The Policy # [4]
First we are going to make a new policy file named mypages_rw_policy.json.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::mybucket"
]
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Effect": "Allow",
"Resource": [...
Manufacturer Recertified Drives | Enterprise Grade
Manufacturer Recertified enterprise drives work and look like new. Rebuilt by the manufacturer and quality tested to ensure they function as new, our recertified drives save on cost. Shop now!
ServerPartDeals.com · serverpartdeals.com [1]
For my next drive upgrade in my homelab [2] I am gong to be using one of these factory recertified drives from serverpartdeals.com. Found them on an LTT video awhile back. They are some lightly used and recertified, fully burnt in drives.
Shop for drives that are certified once again by the manufacturer to work like new. Factory ReCertified drives are cost-effective alternatives compared to factory-sealed new counter parts. Additionally, unlike in mass production, the re-certification process involves closer attention to the overall operation of the hardware so that the re-certification will not have to happen a 2nd time
Note
This post is a thought [3]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://serverpartdeals.com/collections/manufacturer-recertified-drives
[2]: /homelab/
[3]: /thoughts/
GitHub - imagegenius/docker-immich: Monolithic (Single) Docker Container for Immich
Monolithic (Single) Docker Container for Immich. Contribute to imagegenius/docker-immich development by creating an account on GitHub.
GitHub · github.com [1]
imagegenius has made an immich all in one setup that looks much easier to use than immich.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://github.com/imagegenius/docker-immich/
[2]: /thoughts/
GitHub - gitroomhq/postiz-helmchart: Helm for Postiz
Helm for Postiz. Contribute to gitroomhq/postiz-helmchart development by creating an account on GitHub.
GitHub · github.com [1]
Reminder to myself, look into self hosting postiz with this helm chart later.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://github.com/gitroomhq/postiz-helmchart
[2]: /thoughts/
linkding
A self-hosted bookmarking service that is designed to be minimal, fast and easy to set up.
linkding · linkding.link [1]
linkding looks like an interesting alternative to thoughts. Thoughts is focused on the note being a value add tweet length blog post that you share to the public. This seems more focused on fire and forget with some note taking and search ability. I should definitely level up the search and tag discovery in thoughts.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://linkding.link/
[2]: /thoughts/
I’ve been debugging a cloudflared tunnel issue in my homelab [1] all day today, and
getting really frustrated. My issue ended up being that it was running twice,
once without the correct config file and another with it. I believe that
cacheing may have compounded the issue.
In yesterday’s post I setup a cloudflared tunnel on my ubuntu server to
expose applications running on the server to the internet. I’m setting up a
new server and running cloudflared in its own vm.
setup cloudflared tunnel on ubuntu [2]
Check that dns is pointing to the correct tunnel # [3]
dig subdomain.example.com
traceroute subdomain.example.com
Check that the tunnel is running # [4]
export CLOUDFLARED_TUNNEL_ID = "my-tunnel-id"
cloudflared tunnel list
cloudflared tunnel info $CLOUDFLARED_TUNNEL_ID
References:
[1]: /homelab/
[2]: /setup-cloudflared-tunnel-on-ubuntu/
[3]: #check-that-dns-is-pointing-to-the-correct-tunnel
[4]: #check-that-the-tunnel-is-running
I run a cloudflared tunnel on my ubuntu server to expose applications running
on the server to the internet. I’m setting up a new server and running
cloudflared in its own vm.
Get the cloudflared binary # [1]
sudo wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -O /usr/local/bin/cloudflared
sudo chmod +x /usr/local/bin/cloudflared
# [2]
Now setup the config directory. For the systemd service to work, the config
file needs to be in /etc/cloudflared. I like to give my user rights to edit
the config file without being sudo, we will do that here by creating a group
cloudflared, add ourselves to the group, give ownership of /etc/cloudflared
to the group, give group write access to the directory, and refresh groups.
sudo mkdir -p /etc/cloudflared
sudo groupadd cloudflared
sudo usermod -aG cloudflared $USER
sudo chown -R root:cloudflared /etc/cloudflared
sudo chmod g+w /etc/cloudflared
newgrp cloudflared
login # [3]
Now we can log into the domain zone with cloudflared.
cloudflared tunnel login
This will give a url, follow it in a browser to log in.
cloudflared tunnel create <NAME>
mv ~/.cloudflared/cert.pem /etc/cloudflared/cert....
Fitting two hard drives and an SSD in a Dell OptiPlex 7010 SFF
The Dell OptiPlex 7010 SFF officially only has room for one 2.5" hard drive internally, I fitted two 3.25" hard drives and a 2.5" SSD in one.
willj.net [1]
This guy fit 2 3.5" drives and an sdd in a dell 7050 SFF. It looks tight, and there it probably not much airflow running in it, but its an impressive project.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://willj.net/posts/fitting-two-hard-drives-and-an-ssd-in-a-dell-optiplex-7010-usff/
[2]: /thoughts/
-
Homelabbers have been some of the best co-workers I have ever had. Typically have a get shit done, If there’s a way I will find it kind of mentality. If you are struggling to get a job in tech right now its tough. Starting a homelab on a pc you pull out of the trash is a good way to get some experience that you can talk about in interview questions.
Linked video has some great points!
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /homelab/
[2]: /thoughts/
Looking for a Heroku replacement, What I found was shocking!
Your browser does not support the audio element.
I’ve long hosted my personal blog as a static site on waylonwalker.com. It’s
all markdown, converted to html [1], and shipped as is. It’s been great, I’ve
moved it from GitHub Pages, to Netlify, tried Vercel for a minute, and have
landed on Cloudflare Pages. Each migration has not really been that
hard, it’s just pointing ci to a different host after the site has built.
[2]
What about server side # [3]
Now the part that I have struggled with is how to cheaply host a server
rendered application that can just live on forever without me paying for it.
This is a harder problem as it costs more to keep servers spinning, memory, and
disk all ready for you to use at a moments notice.
Honestly # [4]
I never really deployed anything that useful on heroku, but it seems like the
klenex of the bunch that’s why they are in the title. I’ve moved between
digital ocean and fly.io, and have had some great experiences with both. I
just don’t want...
Uptime Kuma
A self-hosted monitoring tool
uptime.kuma.pet [1]
Uptime kuma is a fantastic self hosted [2] monitoring tool. One docker run command and you are up and running. Once you are in you have full control over checking status of urls, frequency, allowed timeouts, and a HUGE list of notification providers
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
I deployed it in my homelab [3] today.
[4]
Note
This post is a thought [5]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://uptime.kuma.pet/
[2]: /self-host/
[3]: /homelab/
[4]: https://twitter.com/_WaylonWalker/status/1723077941649707468
[5]: /thoughts/
External Link
thoughts.waylonwalker.com [1]
I was looking to add running kubernetes jobs to a python cli I am creating, and I found this solution, mostly thanks to ollama run mistral:7b-instruct-q4_K_M and my loose understanding of what the yaml syntax is supposed to look like for a kubernetes job. This will let me create a job in the cluster, choose the image that runs, the command that is called, and how long until the job expires and is cleaned up. While the job still exists I can go in and look at the logs, but once its ttl has expired they are gone.
from kubernetes import client, config
# Load the default kubeconfig
config.load_kube_config()
# Define the API client for batch jobs
api_instance = client.BatchV1Api()
# Create a new job object
job = client.V1Job(
api_version="batch/v1",
kind="Job",
metadata=client.V1ObjectMeta(name="myjob"),
spec=client.V1JobSpec(
ttl_seconds_after_finished=100,
template=client.V1PodTemplateSpec(
metadata=client.V1ObjectMeta(labels={"app": "myjob"}),
spec=client.V1PodSpec(
containers=[
client.V1Container(
name="myjobcontainer",
image="busybox",
command=["ls", "/"],
),
],
restart_policy="Never",
),
),
backoff_limit=1,
)...
GitHub - mkimuram/k8sviz: Generate Kubernetes architecture diagrams from the actual state in a namespace
Generate Kubernetes architecture diagrams from the actual state in a namespace - mkimuram/k8sviz
GitHub · github.com [1]
This is a sick kubernetes architecture diagran generation tool.
Here is an example
[2]
installation # [3]
$ curl -LO https://raw.githubusercontent.com/mkimuram/k8sviz/master/k8sviz.sh
$ chmod u+x k8sviz.sh
Usage # [4]
./k8sviz.sh --kubeconfig ~/.config/kube/falcon-k3s.yaml -t png -o k8sviz.png
Note
This post is a thought [5]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://github.com/mkimuram/k8sviz
[2]: https://raw.githubusercontent.com/mkimuram/k8sviz/master/examples/wordpress/default.png
[3]: #installation
[4]: #usage
[5]: /thoughts/
Translate a Docker Compose File to Kubernetes Resources
What
Kubernetes · kubernetes.io [1]
kompose is a sick cli to convert docker-compose.yml to kubernetes manifest.
# install
curl -L https://github.com/kubernetes/kompose/releases/download/v1.26.0/kompose-linux-amd64 -o kompose
kompose convert
kompose convert -o deployment.yaml
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://kubernetes.io/docs/tasks/configure-pod-container/translate-compose-kubernetes/
[2]: /thoughts/
[1]
Running your own docker registry in one line
podman run -d -p 5000:5000 --restart=always --name registry registry:latest
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /static/https://blog.nashcom.de/nashcomblog.nsf/dx/k3s-podman-and-a-registry.htm
[2]: /thoughts/
Kubernetes Persistent Volumes with Deployment and StatefulSet
How to use Kubernetes persistent volumes with deployment and stateful set and also when you should use one or another.
Alen Komljen · akomljen.com [1]
Example of how to add a pvc to a deployment.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://akomljen.com/kubernetes-persistent-volumes-with-deployment-and-statefulset/
[2]: /thoughts/
[1]
I was curious to see what was going on inside of my minio object storage. Great technique here by Frank to create an inspector pod, then you can do as you wish with the data.
I created the manifest as pvc-inspector.yml
apiVersion: v1
kind: Pod
metadata:
name: pvc-inspector
spec:
containers:
- image: busybox
name: pvc-inspector
command: ["tail"]
args: ["-f", "/dev/null"]
volumeMounts:
- mountPath: /pvc
name: pvc-mount
volumes:
- name: pvc-mount
persistentVolumeClaim:
claimName: pvc-name
Then used it like this.
# create pvc-inspector pod
kubectl apply -f pvc-inspector.yml
# exec into inspector
kubectl exec -it pvc-inspector -- sh
# explore data
ls /pvc
# cleanup
kubectl delete -f pvc-inspector.yml
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /static/https://frank.sauerburger.io/2021/12/01/inspect-k8s-pvc.html
[2]: /thoughts/
External Link
stackoverflow.com [1]
In order to use k8s secrets manifest you first need to encode the data values.
echo -n 'mega_secret_key' | openssl base64
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://stackoverflow.com/questions/53394973/cant-create-secret-in-kubernetes-illegal-base64-data-at-input
[2]: /thoughts/