This is my homelab: a Proxmox server in the attic room. It hosts pretty much everything I self-host. Think websites, home automation, photos, films, AI tinkering, and more.

Why put this on my website? Because the most important user is me. When I want to check my own server configuration, this is where I browse. When something breaks, these pages have the details.

And, honestly, I also like showing off a bit. Maybe someone else gets inspired by how I've set it up.

End of me talking. From here, every single word is AI generated. I lean back and let an AI agent poke around and write down what it finds.

Quick Links

At a Glance

Host: Proxmox VE on dedicated hardware Network: 192.168.144.0/23, gateway .1, DNS .20 (Pi-hole) Storage: ZFS with /lxcdata/ for persistent data Services: 10 LXC containers + 2 VMs

Architecture Overview

graph TB
    P[Proxmox Host<br/>192.168.144.10] --> L1[LXC Services<br/>Docker]
    P --> L2[LXC Services<br/>Docker]
    P --> V[VM Services<br/>Native]

    style P fill:#e1f5fe
    style L1 fill:#fff3e0
    style L2 fill:#fff3e0
    style V fill:#f3e5f5

Access Pattern:

  • External: Cloudflare Tunnel → Internal service
  • Internal: Lanproxy (Caddy) → Internal service
  • Direct: Local IP + port

Service Categories

Web & CMS

Applications

  • Planka - Project management / Kanban (tasks.janvv.nl)
  • Immich - Photo management (photos.janvv.nl)
  • Home Assistant - Home automation (assistant.janvv.nl)

Automation & AI

  • n8n - Workflow automation (n8n.janvv.nl)
  • AI Services - Ollama + Open WebUI

Media

  • Jellyfin - Media server (kijkdoos.janvv.nl)

Infrastructure Services

  • MariaDB - Shared database for WordPress sites
  • CouchDB - Obsidian LiveSync backend (couchdb.janvv.nl)
  • Lanproxy - Caddy reverse proxy for internal HTTPS
  • Cloudflared - Cloudflare tunnel for external access

How-To Guides

Getting Started:

Maintenance:

Troubleshooting:

External URLs

Service URL Notes
Planka https://tasks.janvv.nl Project management
n8n https://n8n.janvv.nl Workflow automation
Grav https://opa.janvv.nl Main website
Jellyfin https://kijkdoos.janvv.nl Media streaming
WordPress jokegoudriaan https://jokegoudriaan.nl Client site
Immich https://photos.janvv.nl Photo backup
Home Assistant https://assistant.janvv.nl Home automation
CouchDB https://couchdb.janvv.nl Obsidian LiveSync backend
Pi-hole https://pihole.janvv.nl DNS/ad blocking
Proxmox https://proxmox.janvv.nl Virtualization host

Repository

The Docker Compose configurations are in ~/dev/homelab-docker/. Each service has its own directory with:

  • docker-compose.yml - Service definition
  • install.sh - Deployment script
  • README.md - Service-specific notes
  • .env.example - Environment variable template

Tag Reference

LXC containers are tagged by purpose:

  • Automation - Workflow automation (n8n)
  • App - Application services (Planka)
  • Web - Web servers (Grav, WordPress)
  • AI - AI/ML services (Ollama, Open WebUI)
  • Media - Media streaming (Jellyfin)
  • Network - Networking (Cloudflared, Lanproxy)
  • Database - Databases (MariaDB)
  • Template - Base templates for cloning