Homelab - Day 5 - The NAS

So, it’s been a while and I have made some progress worth sharing! After keeping an eye on the auction sites for a while I ended up pulling the plug and buying 2 12TB Seagate Ironwolf drives for my NAS and now wanted to get started with setting this up. The hardware Off a recommendation from Joe at Late Night Linux I picked up a HP 290 G2 I5-8500. It comes with 8GB of RAM and a 256ssd. The form factor is reasonably nice and it fit the two drives perfectly and it’s been chugging along well. ...

June 18, 2025 · Shane Dowling

Homelab - Day 4 - Self-Hosting Gitea

Aims Today’s goal was to deploy Gitea on my K3s cluster, ensuring that: It used persistent storage via my NAS. It was accessible externally through Traefik. It could eventually replace GitHub for my FluxCD setup. What I Did Storage and Permissions Woes Running Gitea as a stateless container worked fine initially, but as soon as I introduced persistence, things got tricky. I ran into permission issues almost immediately, thanks to the interplay between Kubernetes’ user permissions and my NAS file system. ...

March 7, 2025 · Shane Dowling

Homelab - Day 3 - The first software deployment

Aims The goal for today was to get my first piece of software running on the cluster, ensuring that: It leveraged the NAS for storage. It was accessible externally via Traefik. The process was repeatable for future deployments. I chose the Unifi Management Console as my first self-hosted application. Once migrated, I could wipe my Raspberry Pi 4, which was previously running the console, and add it as a worker node to the cluster. ...

February 28, 2025 · Shane Dowling

Homelab - Day 2 - Setting Up a New K3s Control Plane and Node

After going back and forth multiple times and making plenty of mistakes, I finally managed to set up a new K3s control plane and node. It turned out to be relatively straightforward once I got the steps right, so I’m documenting this for future reference! Aims The goal was to set up a fresh K3s cluster, ensuring that: The control plane and node are configured correctly. Flux is properly bootstrapped to manage cluster state. Common pitfalls are documented to save time in the future. What I Did Control Plane Setup Install K3s: curl -sfL https://get.k3s.io | sh Add an SSH key for Flux to connect to GitHub. Bootstrap Flux with Git: flux bootstrap git \ --url=ssh://git@github.com/<your-repo> \ --branch=main \ --private-key-file=/home/<user>/.ssh/<flux_key> \ --path=clusters/k3s Retrieve the control plane token: cat /var/lib/rancher/k3s/server/token Allow traffic on the K3s API port: iptables -A INPUT -p tcp --dport 6443 -j ACCEPT Node Setup To join a new node to the cluster: ...

February 21, 2025 · Shane Dowling

Homelab - Day 1 - Really Ghetto Data Storage

Setting Up Storage for the Kubernetes Cluster The first step in setting up my homelab Kubernetes cluster is ensuring some reliable data storage. Right now, I have two main categories of data in mind: 1. Operationally Critical Data Needs RAID with redundancy Requires both on-site and off-site backups Approximately 1TB of data 2. Media Data Non-critical, so no backups required Several terabytes of storage needed Since the Kubernetes cluster depends on Operationally Critical Data, I need to establish a RAID-backed storage solution with proper backups before moving forward. ...

February 11, 2025 · Shane Dowling

Homelab Setup: The Journey to Kubernetes

Why I’m Migrating My Self-Hosted Services I’ve decided to migrate all my existing self-hosted services—and add a few new ones—to a Kubernetes (K8s) cluster that I’m going to build. There are several motivations behind this decision: Learning Kubernetes Beyond Ephemeral Clusters My role as an Engineering Manager at Syntasso involves a lot of K8s development using Kind, but these environments are entirely ephemeral. I want to experience the long-term challenges of operating a cluster to build greater empathy for our customers. I want to deepen my understanding of Kubernetes, particularly in areas like: Hardening a K8s cluster Managing multiple clusters effectively Increased Focus on Self-Hosting The British government’s baffling approach to tech privacy has pushed me toward self-hosting more of my personal services. My current setup is a mix of manually configured systems and Docker Compose-based services running on different machines. It’s time to bring structure to the chaos. The Plan Time Constraints and Approach I’m a dad with two small kids, so my time for this project is limited. My approach will be: ...

February 10, 2025 · Shane Dowling