The setup
- Server: Ubuntu Server 24.04, 10+ Dockerized services — Jellyfin, qBittorrent, Sonarr, Radarr, Prowlarr, Bazarr, PostgreSQL, Redis, and more.
- Gaming PC: Windows + WSL2, RTX 4060 Ti 16 GB. Runs Ollama for local LLM inference and acts as the GPU compute node for ML experiments (Llama QLoRA, Playwright screenshot automation).
- Networking: UFW for host firewall, Tailscale VPN mesh between server, gaming PC, and laptop. Samba shares for file access across devices.
- Access: Everything is accessible from anywhere via Tailscale — no public ports open.
Why it exists
It's a deliberate playground. I wanted a place to:
- Fine-tune and serve models at zero marginal cost.
- Run long jobs (QLoRA training, batch scrapes) without worrying about cloud bills.
- Host personal services without handing data to a third party.
- Stay sharp on Linux admin, networking, and systemd.
10+
Dockerized services on the server
16 GB
GPU VRAM for local inference
0
Public ports — everything via Tailscale
What I've learned
The boring operational skills — systemd unit files, UFW rules, Docker volume discipline, Tailscale ACLs — are the ones that keep a homelab alive. The interesting stuff (Ollama + a custom dashboard) only works because the boring stuff is solid.