Single-source-of-truth for my homelab: hardware, network, services, runbooks, and change history.
This repo mirrors my “Homelab — Project Hub.” It’s organized so future‑me can find things fast and so I can share selected bits with friends.
- overview/ — TL;DR, topology
- inventory/ — hardware + VM inventory
- services/ — stacks & compose
- backups/ — backup policies & restores
- network/ — VLANs, DHCP, firewall
- runbooks/ — SOPs
- standards/ — conventions
- CHANGELOG.md
- Everything is plain Markdown. Use Obsidian, VS Code, or GitHub’s editor.
- If I build a docs site later with MkDocs:
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate pip install mkdocs-material mkdocs serve # open http://127.0.0.1:8000
- Compute: Single ESXi 8u3 (Supermicro H11SSL‑i, EPYC 7281, 256 GB, 10G SFP+)
- Storage: TrueNAS CORE (SSG‑5048R‑E1CR36L); pools:
tank(RAIDZ2 10×14TB Exos X14 + L2ARC 970 EVO),datastore(mirror 2×3.84TB NetApp X357); boot: 2× Kingston SA400; spare: 14TB Exos - Network: Cox WAN + T‑Mobile failover → UDM Pro → US XG 16 → US 16 PoE 150W → 3× UniFi AC Pro (10G SFP+ to ESXi/TrueNAS)
- Key VMs:
NETMNG(Portainer),Wazuh,Backup(Veeam Community) - Stacks (highlights): Bazarr, Cloudflared (Tunnel), Glances, Heimdall, Home Assistant, Overseerr, Pi‑hole, Radarr, SABnzbd (host net), Sonarr, Tautulli, Uptime Kuma, Watchtower
| Service | Image | Ports | Volumes | Notes |
|---|---|---|---|---|
| Bazarr | linuxserver/bazarr | 6767 | /srv/docker/bazarr/config, /mnt/plex/Movies, /mnt/plex/TV |
Watchtower enabled |
| Cloudflared | cloudflare/cloudflared | — | /srv/docker/cloudflared |
tunnel run via token |
| Glances | nicolargo/glances:latest-full | 8899→61208 | config/data + docker.sock (ro) | pid: host, web UI |
| Heimdall | linuxserver/heimdall | 11080/11443 | /srv/docker/heimdall/config |
— |
| Home Assistant | ghcr.io/home-assistant/home-assistant | host | /srv/docker/homeassistant/config |
privileged, host net |
| Overseerr | linuxserver/overseerr | 5055 | /srv/docker/overseerr/config, logo binds |
branding SVGs |
| Pi‑hole | pihole/pihole:2025.08.0 | 53/udp+tcp, 8088 | /srv/docker/pihole/* |
Watchtower disabled |
| Radarr | linuxserver/radarr | 7878 | /srv/docker/radarr/config, /mnt/plex/* |
/downloads matches SAB |
| SABnzbd | linuxserver/sabnzbd | host | /srv/local/sab/*, /srv/docker/sabnzbd/config |
UI on host:8080, ulimit 65k |
| Sonarr | linuxserver/sonarr | 8989 | /srv/docker/sonarr/config, /mnt/plex/* |
/downloads matches SAB |
| Tautulli | linuxserver/tautulli | 8181 | /srv/docker/tautulli/config |
— |
| Uptime Kuma | louislam/uptime-kuma | 3001 | /srv/docker/uptime-kuma/data |
— |
| Watchtower | containrrr/watchtower | — | docker.sock | nightly 04:30 updates |
Full details live in services/ with the compose snippets and notes.
- Veeam Community Edition on
BackupVM - Nightly incrementals, weekly synth fulls (target 30–90 days)
- Quarterly Instant VM Recovery test
- Prefer ports 8888/4433 for new apps (80/443 used elsewhere)
- Timezone America/Phoenix
- Log everything (timestamped), keep restore runbooks short
This repo is licensed under the MIT License (see LICENSE). Feel free to borrow structure and scripts; please attribute if you re-share.