Spoke is an open-source hub-and-spoke platform for running a modular home server with Docker Compose. The hub provides core infrastructure (reverse proxy, auth, security engine, database), and modules plug in as independent repos.
Architecture
Hub (core infrastructure)
├── Traefik — Reverse proxy with automatic TLS
├── Authentik — SSO and forward auth
├── CrowdSec — AppSec WAF and IP reputation
├── PostgreSQL — Shared database
├── Redis — Cache and session store
├── Sablier — On-demand container scaling
└── Socket Proxy — Restricted Docker API access
Modules (plug-and-play service groups)
├── Each module = independent Git repo
├── 3-layer env merge (base → module defaults → site overrides)
├── Automatic Traefik rule deployment
└── Makefile orchestrates everything
| Module | Description |
|---|---|
| spoke-monitoring | Grafana, Prometheus, Loki, Alloy, Telegraf, Dozzle, NUT |
| spoke-plex | Plex media server with Tautulli monitoring |
| spoke-piped | Piped backend, frontend, ytproxy + module-local Postgres — YouTube alt for LibreTube et al. |
| spoke-immich | Self-hosted photo and video management |
| spoke-music | Navidrome music streaming, Picard tagging |
| spoke-books | Calibre, Audiobookshelf, GraphicAudio scraper |
| spoke-database | MinIO, InfluxDB3, CouchDB, Victoria Metrics |
| spoke-homepage | Homepage dashboard |
| spoke-torrenting | VPN-tunneled qBittorrent and Soulseek |
| spoke-foundryvtt | FoundryVTT virtual tabletop |
| spoke-protonmail | Proton Mail Bridge SMTP/IMAP service |
| spoke-mail-relay | HTTP-to-SMTP mail relay for automated notifications |
| spoke-backup | Encrypted, deduplicated backups via Kopia to Backblaze B2 with Postgres dumps + email notifications |
| GeneGnome | Genetics analysis platform (Rust/Axum API, worker, frontend) |





