A self-hosted home server running on a 2017 Acer laptop with Debian 12 and Docker.
- 2017 Acer Laptop
- 1TB Storage
- Connected via Ethernet
For a detailed breakdown of each service and why it was chosen, see SERVICES.md.
- Navidrome - Music streaming server with Subsonic API support
- Jellyfin - Movies and TV shows media server with Intel QSV hardware transcoding
- Jellyseerr - Request interface for movies and shows, integrates with Radarr and Sonarr
- Radarr - Automatic movie downloading and management
- Sonarr - Automatic TV show and anime downloading and management
- Prowlarr - Indexer manager for Radarr and Sonarr
- Jackett - Additional indexer support for public trackers (YTS, 1337x, Nyaa.si, Pirate Bay)
- qBittorrent - Torrent download client
- Bazarr - Automatic subtitle downloading for Jellyfin
- Tdarr - Automated media transcoding to save disk space
- FlareSolverr - Cloudflare bypass for Jackett indexers
- Nextcloud - Self hosted cloud storage with cross device sync
- Filebrowser - Web based file manager
- AdGuard Home - Network wide ad blocking and DNS privacy with DNS-over-HTTPS
- Headscale - Self-hosted WireGuard coordination server replacing Tailscale
- Caddy - Reverse proxy with automatic HTTPS via Let's Encrypt
- Vaultwarden - Self hosted Bitwarden password manager
- SearXNG - Self hosted private search engine
- Portainer - Docker container management dashboard
- Uptime Kuma - Service uptime monitoring and alerting
- Watchtower - Automatic Docker container updates
- Homarr - Unified dashboard for all services
All services run as Docker containers managed with Docker Compose. Each service has its own stack folder under /opt/stacks/. Caddy handles reverse proxy and HTTPS for all services using a Let's Encrypt certificate issued for the DuckDNS domain.
Remote access is handled via Headscale — a self-hosted open source replacement for Tailscale's coordination server. All devices connect via WireGuard encrypted tunnels. AdGuard Home is configured as the DNS server for all connected devices, providing ad blocking and DNS-over-HTTPS privacy everywhere.
A DuckDNS domain with auto-renewing Let's Encrypt certificates provides trusted HTTPS for Headscale and all services.
Movies and TV shows are automatically downloaded using the arr stack:
- Request content in Jellyseerr
- Jellyseerr sends the request to Radarr or Sonarr
- Prowlarr and Jackett search indexers for the best release
- qBittorrent downloads the file
- Radarr/Sonarr moves it to the correct media folder
- Jellyfin picks it up automatically
- Bazarr downloads English subtitles automatically
| Service | Port |
|---|---|
| Navidrome | 4533 |
| Jellyfin | 8096 |
| Jellyseerr | 5055 |
| Nextcloud | 8080 |
| AdGuard Home | 8889 |
| Portainer | 9000 |
| Uptime Kuma | 3001 |
| Homarr | 7575 |
| qBittorrent | 8090 |
| Radarr | 7878 |
| Sonarr | 8989 |
| Prowlarr | 9696 |
| Jackett | 9117 |
| Bazarr | 6767 |
| Filebrowser | 8082 |
| SearXNG | 8099 |
| Vaultwarden | 8181 |
| Tdarr | 8265 |
| Headscale | 443 |
scripts/backup.sh— backs up all Docker volumes and compose files, keeps 7 days of historyscripts/sync-music.sh— syncs your local music library to the server via rsync
MIT — see LICENSE for details.
See CONTRIBUTING.md for guidelines.
