My k3s Homeserver Setup
June 2025 (653 Words, 4 Minutes)
I’ve been getting more into self-hosted apps, with the main aim of trying to reduce my dependence on the Google ecosystem, and also to hone some of my DevOps skills. Over the past few months, I’ve setup a physical Kubernetes (k3s) cluster with regular consumer hardware that I’ve either bought or “borrowed” from friends and family. This post gives a broad overview of the setup and its components.
The configuration consists of three nodes, where one is a master node (with no pods running), and two worker nodes. Each node is an entirely different kind of machine, but they’re all old/used:
- A Dell Optiplex desktop unit with an i7-4770 and 16GB of RAM (worker)
- A Lenovo Thinkstation Mini PC (very compact and cute) with an i7-8700 (6c 12t) with 16GB RAM (worker)
- A Acer Travelmate laptop with some dual-core CPU and 4GB RAM (master)
Each node is connected to a 1GbE network switch, which is then directly connected to my router. I didn’t feel like I needed a 10GbE switch because my ISP provided router only does 1GbE (that too, shared between its 4 ports), and also it is more expensive.
There are a decent amount of power cuts where I live, and as a result, the entire setup is connected to a 660W UPS. It’s just a regular UPS, which does not have any smart network-enabled features, like some do. These tend to be significantly more expensive where I live, almost as much as my entire setup itself. I plan to add a smart feature in the future, by implementing a logic where I send something like MQTT packets over the local network to an ESP32 MQTT broker, connected directly to the plug without backup. Once the power goes off, this will break the MQTT connection, which will trigger a safe shutdown script after a set interval. I have also decided to use a laptop as the master node, as it will have some backup power via the battery, should the power ever go down for an extended period of time, eventhough it is quite underpowered. However, I do not think k3s will be a significant load on my laptop.
All nodes are running Debian 12. I have never had any problems with Debian in my past 5 years of using it in the server and desktop.
I use Tailscale to access my self-hosted apps. All my devices are connected to the same Tailnet, so I can access my apps from anywhere, without making them publicly accessible.
Currently, I am running:
- FreshRSS, a self-hosted newsfeed aggregator. I use the Capy Reader app on Android to read articles.
- Prometheus, Node Exporter, and Grafana to monitor my cluster. I have Grafana dashboards that monitor the basics like uptime, CPU, RAM, disk, temperatures across nodes and in my overall cluster.
- Postgres database for FreshRSS and some other custom apps that need a database.
Things that I would like to to self-host soon:
- Immich, which is a photo management software with apps, auto-backup and AI search features similar to Google Photos.
- Gitea, a Git-forge software like GitHub.
- NextCloud, a Google Drive alternative.
- Some kind of local LLM that can run on my limited hardware. Hopefully in the future, they will require less compute to run.
Things that I would like to figure out about my setup:
- Peak power draw. Whether the UPS I’m using for my setup is sufficient or not is still a mystery. Based on some basic math, however: The mini PC has a 95W adapter, so its peak consumption will not exceed that. Same goes for the laptop and the cabinet, which has a 65W charger and a 200W power supply respectively. This totals to about 360W of power, which should power the setup at peak workloads (max CPU on all machines, with fans running at full speed) for ~1.8 hrs.
- Backups. I need to have a consistent, automated solution to backup my volumes, or at the very least, my Postgres database and my Grafana dashboards. Setting up some kind of Github sync by using provisioned dashboards might be a path to explore further.
Some maybes:
- An e-mail server, that will let me send and receive e-mails from my own server. However, this is quite challenging, and would also require me to make my server publicly accessible.
- Matrix chat, but it is difficult to convince other people in your lives to move from their existing modes of communication to an enirely new one.