Homelab
I created this homelab to learn tools and techniques around platform engineering. This is a place of experimentation.
---
config:
theme: 'base'
themeVariables:
darkMode: true
primaryColor: 'hsl(236, 36.59%, 18.04%)'
lineColor: '#75c13e'
secondaryColor: '#75c13e'
tertiaryColor: 'hsl(236, 36.59%, 8.04%)'
---
flowchart TB
Laptop["Laptop<br/><small>Admin workstation</small>"]
subgraph Proxmox["Proxmox host"]
direction LR
subgraph DockerVM["Docker VM"]
Registry["Private registry<br/><small>TLS · local CA</small>"]
end
subgraph K3s["k3s cluster — 1 control plane + 2 workers"]
direction TB
Traefik["Traefik<br/><small>Ingress</small>"]
GitOps["Forgejo · Woodpecker · ArgoCD<br/><small>Git · CI · GitOps sync</small>"]
Monitoring["kube-prometheus-stack<br/><small>Prometheus · Grafana</small>"]
App["PageTurner (Helm chart)<br/><small>Go · React · Postgres · Redis</small>"]
end
end
Laptop -->|ssh · kubectl| Proxmox
Stack
Foundation Layer
- Proxmox: I only have one computer for this project, Proxmox allows me to have a virtualized cluster. - read more
- K3s: a lightweight kubernetes distribution - read more
- Traefik: Integrated with K3s, for Ingress and proxy - read more
- Docker Private Registry: where I store the container images - read more
GitOps Layer
- Forgejo: I run a forgejo instance locally to store my homelab repositories
- Woodpecker: The pipeline runner
- ArgoCD: The main tool to manage my k3s app deployments
Monitoring Layer
- Prometheus: Metrics collection, deployed through the
kube-prometheus-stackHelm chart - Grafana: Dashboards on top of Prometheus, exposed through Traefik
The Apps Layer
- Pageturner: Deployed as a Helm chart, this is a homemade reading manager - read more
What’s next
- Add ServiceMonitors to the rest of the apps on the cluster.
- Add log collection and alerting to complete the observability stack.
- Install a S3 node into my proxmox system.
- Learn how to backup / migrate the cluster storage.
- Use real domains, both for private and externally visible parts of the system.
- Add a second hardware node to proxmox.