Welcome to my personal HomeServer! This is a self-hosted infrastructure powered by Kubernetes, GitOps, and open source magic. ✨
| Component | Category | Main Role |
|---|---|---|
| 🐳 K3s | K8s Orchestration | Lightweight Kubernetes distribution, the foundation of the infra. |
| 🔁 FluxCD | GitOps / CI/CD | Synchronization of configurations from Git. |
| 🦦 Traefik | Ingress Controller | External traffic routing and reverse proxy management. |
| 📜 cert-manager | Security / TLS | Automatic SSL certificate management and renewal (via DNS challenge). |
| 💾 k8up | Backup | Persistent Volume Claims (PVC) backup operator via restic. |
| 🐘 CloudNativePG (CNPG) | Databases | Operator for deploying and managing PostgreSQL clusters. |
| 🧠 Prometheus Stack | Monitoring | Metrics collection and aggregation (kube-prometheus-stack + Pushgateway). |
| 🐻 Uptime Kuma | Monitoring / Status | Service availability monitoring dashboard. |
| 👤 Pocket ID | Authentication | Minimalist SSO provider with Passkey authentication. |
All configuration is declarative and stored in a Git repository. Changes are pushed and FluxCD syncs them automatically into the cluster. 🚀
- 🔐 All services are routed through Traefik with automatic HTTPS.
- 🧩 Subdomain-based access under
.egghead.infrao.topfor each service. - 🗣️ Discord is used for receiving notification alerts.
A few of the self-hosted apps currently running:
- 🍃 Paperless-ngx : Open-source Document Management System (DMS) to archive and manage your scanned documents.
- 📸 Immich : Self-hosted photo and video management solution.
- 🔑 Vaultwarden : Lightweight Bitwarden server alternative for password management.
- 🕹️ Romm (ROM Manager) : Video game ROM collection manager.
- 🍿 Jellyfin : The Free Software Media System.
- ⬇️ Deluge : A lightweight, Free Software, cross-platform BitTorrent client.
- 🧭 Prowlarr : Indexer manager/proxy for PVR integration.
- 📺 Sonarr : Smart PVR for managing TV series.
- 🎥 Radarr : Movie collection manager.
- 🐙 Jellyseerr : Media request management tool for Jellyfin.
- 🥯 Homer : Centralized static dashboard for all applications.
- 👤 Pocket ID : Minimalist OIDC provider for passwordless SSO via Passkey.
- 💻 beszel : Lightweight monitoring tool for machine resources.
- 🪁 Kite : Graphical visualization tool for Kube resources and their relationships.
- 📈 kube-prometheus-stack : Prometheus/Grafana bundle for K8s monitoring.
- ➡️ Prometheus Pushgateway : Allows ephemeral jobs to push their metrics.
- 🐻 Uptime Kuma : Infrastructure availability monitoring dashboard.
- 💾 k8up : Kubernetes backup operator for PVCs.
- 📜 cert-manager : Certificate management via DNS challenge.
- 🦦 Traefik : Ingress Controller.
- 🐘 CloudNativePG (CNPG) : Operator for PostgreSQL databases.
-
Get a GitHub token and set an env var:
export GITHUB_TOKEN=xxx -
Enter some commands
# pre create the decryption key kubectl create ns flux-system kubectl create secret generic sops-age --namespace=flux-system --from-file=age.agekey # bootstrap flux flux bootstrap github \ --owner=SpiritLooper \ --repository=egghead \ --branch=main \ --path=./k8s/flux
-
Things should start to deploy! 🪄
🛠 Built with love, open source, and a lot of YAML.