Homelab
I run a small pile of self-hosted services from a single machine in my house, tunnelled out to the internet through Cloudflare and a Caddy reverse proxy. Everything on one box.
Architecture
At the centre of it is a Proxmox server I built myself: a Gigabyte X570 board, an AMD Ryzen 9 3900X (12 cores, 24 threads, in case you're counting), 64GB of RAM, and a handful of NVMe and SSD drives in ZFS pools. Nothing exotic, just enough power to run everything below without breaking a sweat.
On top of that I run 16 LXC containers and 2 VMs. Most services live in Docker, each in its own container, so I can nuke and rebuild one without touching anything else. A few (Caddy, Hermes, CUPS) run natively, no Docker required.
Getting traffic in without opening a single port on my router is Cloudflare Tunnel's job. It runs in its own container (CT 126) and connects outward to Cloudflare, so there's no port forwarding and no dynamic DNS to fuss over. Cloudflare also handles DDoS protection and, for anything sensitive, the login wall.
Once traffic is inside, Caddy (CT 127) takes it from there: one config file, automatic Let's Encrypt certificates, routed to whichever backend needs to answer. So the path a request takes looks like this:
Cloudflare DNS → Cloudflare Tunnel (CT 126) → Caddy (CT 127) → backend service
The rest of the network is refreshingly boring. A FritzBox 7590 AX does router duty, and an old Raspberry Pi 3B runs Pi-hole for DNS and DHCP, blocking ads for every device in the house. All of it sits on a 192.168.144.0/23 subnet.
Curious how any of this is actually wired together? It's all in homelab-docker on GitHub.
Services
Here's what's actually running:
| Service | URL | Description |
|---|---|---|
| n8n | https://n8n.janvv.nl | Workflow automation platform (Docker, CT 120) |
| SearXNG | https://search.janvv.nl | Privacy-respecting metasearch engine (Docker, CT 121) |
| Planka | https://tasks.janvv.nl | Self-hosted Kanban project management board (Docker, CT 122) |
| Grav CMS | https://opa.janvv.nl | Personal website and blog, flat-file Grav CMS (Docker, CT 123) |
| Status Monitor | https://status.janvv.nl | Homelab service uptime monitoring dashboard, hosted on Grav CT (CT 123) |
| Broodwiki | https://brood.janvv.nl | Bread-baking wiki with AI chat assistant, Sphinx + Claude Code backend (Docker, CT 123) |
| qBittorrent | https://torrent.janvv.nl | Torrent downloader (Docker, CT 124) |
| Jellyfin | https://kijkdoos.janvv.nl | Media server for movies, series, and collections (Docker, CT 125) |
| WordPress — jokegoudriaan.nl | https://jokegoudriaan.nl | Joke Goudriaan personal blog (Docker, CT 129) |
| WordPress — piowij.nl | https://piowij.nl | Website for PioWij, Pioniersgroep Wijdemeren, which Jan maintains for them (Docker, CT 129) |
| Hermes Agent Dashboard | https://hermes.janvv.nl | AI assistant management dashboard and kanban board (Native, CT 130) |
| Hermes Web UI | https://ai.janvv.nl | Chat and kanban board interface (Native, CT 130) |
| Planning Triage | https://planning.janvv.nl | Personal planning task triage web app (Native Python, CT 130) |
| CUPS Print Server | https://printer.janvv.nl | CUPS print server admin for HP ENVY Inspire 7900 (Native, CT 131) |
| Print Upload | https://print.janvv.nl | Web-based file upload for printing (CT 131) |
| Nextcloud | https://cloud.janvv.nl | Self-hosted file sync and collaboration, Dropbox replacement (Docker, CT 132) |
| CouchDB | https://couchdb.janvv.nl | Database backend for Obsidian LiveSync (Docker, CT 133) |
| Vaultwarden | https://vault.janvv.nl | Self-hosted Bitwarden-compatible password vault (Docker, CT 134) |
| Forgejo | https://git.janvv.nl | Self-hosted Git service (Docker, CT 135) |
| Immich | https://photos.janvv.nl | Self-hosted photo and video backup/management (VM 108) |
| Home Assistant | https://assistant.janvv.nl | Home automation platform for lights, climate, blinds, and sensors (VM 114) |
| Pi-hole | https://pihole.janvv.nl | Network-wide DNS sinkhole and ad blocker, DHCP server (Raspberry Pi 3B) |
| Proxmox VE | https://proxmox.janvv.nl | Virtualization host management UI (bare metal) |
| Proxmox Terminal | https://terminal.janvv.nl | ttyd web terminal on Proxmox host |
| Laptop1 Terminal | https://laptop1.janvv.nl | ttyd web terminal on Jan's primary laptop |
| Laptop2 Terminal | https://laptop2.janvv.nl | ttyd web terminal on Jan's secondary laptop |
Last updated: 2026-07-17