Personal home server infrastructure — Berlin, Germany.
This repo documents the migration from a single Docker Compose server to a K3s-based homelab. The public repo contains architecture docs, sanitized manifests, runbooks, and legacy Docker-era setup files. Secrets, real IPs, kubeconfig, and tokens belong in the private homelab-private repo.
| Node | Machine | Role |
|---|---|---|
| Node-1 | HP EliteDesk 705 G4 | K3s Master |
| Node-2 | Dell OptiPlex 9020 | K3s Worker (Ollama/ML) |
| Node-3 | Arduino Uno Q | Monitoring (standalone) |
Both x86 machines were bought second-hand on Kleinanzeigen for around €80 each.
homelab/
├── legacy/ ← Docker Compose era (2023–2025)
│ ├── proxy/ ← nginx-proxy + acme-companion setup
│ ├── services/ ← docker-compose.yml per service
│ ├── ddclient.conf.example
│ └── .github/workflows/ ← CI/CD deploy workflow
│
├── cluster/ ← K3s bootstrap (current)
├── apps/ ← K3s manifests per service (current)
├── monitoring/ ← Node-3 standalone stack
└── docs/
├── master-plan.md ← sanitized migration master plan
├── articles/ ← blog/article drafts
├── legacy/ ← Docker era architecture docs
├── adr/ ← Architecture Decision Records
└── runbooks/
One machine. nginx-proxy routes by hostname. Let's Encrypt via companion container.
All config lives in legacy/. Read the full story: Medium article →
Two-node K3s cluster. Traefik replaces nginx-proxy. cert-manager replaces the Let's Encrypt companion.
All config lives in cluster/ and apps/.
| Area | Status |
|---|---|
| Phase 0 — Network | Done |
| Phase 1 — K3s master on Node-1 | Done |
| Phase 2 — Traefik + cert-manager | Done |
| Phase 3 — static landing pages | Done |
| FlashDeutsch | Done |
| Phase 4 — migrate RAG Studio, finance-agent, n8n | Next |
| Node-2 K3s worker + Ollama pod | Planned |
| CloudNativePG | Planned |
Known correction: the Node-1 hostname used in Kubernetes manifests is elitedesk-node1.
If you want to replicate the Docker setup on your own machine:
# 1. Clone this repo
git clone https://github.com/tusher16/homelab.git
cd homelab/legacy
# 2. Start the proxy (do this once, before any services)
cd proxy
docker compose up -d
# 3. Create the shared network if it doesn't exist yet
docker network create nginx-proxy
# 4. Deploy any service
cd ../services/template
cp .env.example .env
nano .env # fill in your values
docker compose up --build -dFull step-by-step guide in docs/legacy/README.md.
| Repo | What |
|---|---|
| tusher16/rag-studio | RAG pipeline — FastAPI + ChromaDB + Ollama |
| tusher16/family-finance-agent | AI finance tool — FastAPI + Claude Sonnet |
| tusher16/rag-from-scratch | Original RAG research repo |
Berlin, Germany · Docker era since 2023 · K3s migration since May 2026

