https://github.com/bartektelec/homelab
Desired state of my k3s homelab cluster. Managed by ArgoCD.
https://github.com/bartektelec/homelab
argocd gitops homelab self-hosted
Last synced: 28 days ago
JSON representation
Desired state of my k3s homelab cluster. Managed by ArgoCD.
- Host: GitHub
- URL: https://github.com/bartektelec/homelab
- Owner: bartektelec
- Created: 2025-03-01T11:00:17.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-03-07T11:55:03.000Z (4 months ago)
- Last Synced: 2026-03-07T18:12:51.836Z (4 months ago)
- Topics: argocd, gitops, homelab, self-hosted
- Language: Shell
- Homepage:
- Size: 248 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# π‘ homelab
This repo hosts the desired state of my homelab kubernetes cluster. The cluster runs ArgoCD application that monitors the repository for recent changes and applies them to the cluster automatically.
## βWhy Homelab
When I moved in to a new apartament I really wanted to expand my "home automation" setup, which was previously just a couple Phillips Hue bulbs.
I started by building the server out of two Raspberry Pis, these were fine for hosting a few apps like Home Assistant and an MQTT broker, but were somewhat unstable and crashing from time to time.
Not only that but adding more Raspberry Pis in 2025 gets quite expensive pretty quickly, a Raspberry Pi is no longer a cheap single board computer that would let people play with hardware and software for low cost, instead a 4GB Pi 5 model costs around 800 NOK (aprox. 75 USD), that is without Power supply, MicroSD card and case.
Later I figured there is a huge market for used small form-factor PCs / thin clients.
These may not sound very performant but are usually a good value for the buck.
First one I bought was a HP ProDesk 600 G1 - sure, it is over 10 years old, but for 600 NOK (aprox. 55 USD) I've got a 4 Core CPU, 8GB memory, 250GB SSD PC that doesn't need much power to run and is built on top of x86 which is way more compatible with most software than ARM-based architecture.
## π» Hardware
| Model | CPU | Storage | Memory |
| ----------------------- | ------------------------ | ------------ | ------ |
| Raspberry Pi 3b | ARM64 (Quad @ 1.2Ghz) | 32GB MicroSD | 1GB |
| Raspberry Pi 5 | ARM64 (Quad @ 2.4Ghz) | 32GB MicroSD | 4GB |
| HP ProDesk 600 G1 | i5-4590T (Quad @ 2Ghz) | 250GB SSD | 8GB |
| Lenovo ThinkCentre M92p | i5-3470T (Quad @ 2.9Ghz) | 120GB SSD | 8GB |
## π Security
I am attempting to follow GitOps good practices, learning a lot on the way.
Kubescape is used as a linter to scan the manifest files in order to find security vulnerabilities.
All secrets are encrypted used the "SealedSecrets" method. Encryption happens by utilizing the `publickey.peb` certificate and running `kubeseal --cert [path_to_cert] -o yaml -n [namespace] < [path_to_secret_file].yaml > [path_to_output_file].yaml`.
Additionally, to keep myself from exposing raw secrets to the public, any file called `secret.yaml` is ignored by git.
## πΎ Installed applications and tools
### Apps
End user applications, daily drivers
| Name | Description |
| ----------------- | ----------------------------------------------------- |
| π Glance | A customized dashboard/startpage |
| π Home Assistant | Home automation tool |
| πΈοΈ Adguard | Lightweight DNS server filtering out unwanted domains |
| π€ Budge | A personal finance tracker |
### Monitoring
Apps that help me monitor if everything on the cluster works as expected
| Name | Description |
| -------------------- | ------------------------------------- |
| π¦ Traefik Dashboard | A dashboard for Traefik reverse proxy |
| π‘ Headlamp | A kuberenetes dashboard |
| π§ββοΈ Uptime Kuma | Uptime Tracker |
### Infrastructure
Tools that help managing my cluster and deploy apps in a secure way
| Name | Description |
| ---------------- | --------------------------------------------------- |
| π€ SealedSecrets | An operator that decrypts my encrypted secret files |
| π Tailscale | Operator for using Tailscale as an Ingress type |
| π¦ DuckDNS | A tiny DynDNS watcher |
## Honorable mentions and inspirations
I have gotten some inspirations, ideas to what apps to host and how to structure things by peeking at other's repositories and YouTube videos from time to time. I have learned a lot about Kuberenets, Linux and hardware from them and I think they deserve a cred.
[Mischa van den Burg](https://github.com/mischavandenburg/homelab)
[/gruberdev](https://github.com/gruberdev/homelab)
[DevOps Toolbox](https://www.youtube.com/@devopstoolbox)
[Jim's Garage](https://www.youtube.com/@Jims-Garage)
[Christian Lempa](https://www.youtube.com/@christianlempa)
[Hardware Haven](https://www.youtube.com/@HardwareHaven)