Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Servarr Home Server Docker Config

Welcome to my home server setup, everything runs on a old Debian machine via Docker for a self-hosted setup. It runs the full Servarr suite plus media management and VPN tunneling.

Services

Service Port Description
Gluetun WireGuard VPN gateway
qBittorrent 8181 Torrent client (shares Gluetun network)
Prowlarr 9696 Indexer manager for Sonarr/Radarr
Sonarr 8989 TV show management
Radarr 7878 Movie management
Lidarr 8686 Music management
Bazarr 6767 Subtitle management
ytdl-sub YouTube channel/playlist downloader
Seerr 5055 Request/manage media (Plex, Emby, Jellyfin)
Jellyfin 8096 Media server
Kavita 5000 Manga / book / comic reader
Portainer 9443 Docker management UI
Cloudflared Cloudflare Tunnel for reverse proxy
deunhealth Docker health-check monitor (restarts unhealthy containers)

Network

All services share the servarrnetwork external Docker network (172.39.0.0/24). The VPN gateway (Gluetun) acts as the gateway for qBittorrent and Prowlarr via network_mode: service:gluetun. The remaining services connect through the shared servarrnetwork with static IPs for reliable DNS/connectivity.

Static IP assignments:

Service IP
Gluetun 172.39.0.2
Sonarr 172.39.0.3
Radarr 172.39.0.4
Lidarr 172.39.0.5
Bazarr 172.39.0.6
ytdl-sub 172.39.0.8
Seerr 172.39.0.9
Jellyfin 172.39.0.10
Portainer 172.39.0.12
Kavita 172.39.0.11
Cloudflared 172.39.0.14

Project Structure

Servarr/
├── README.md
├── .gitignore
├── cloudflared/
│   ├── compose.yml
│   ├── .env
│   └── .env.example
├── kavita/
│   └── compose.yml
├── portainer/
│   └── compose.yml
└── servarr/
    ├── compose.yml
    ├── .env
    └── .env.example

Prerequisites

  1. Docker and Docker Compose installed
  2. An external network servarrnetwork created:
    docker network create servarrnetwork --subnet=172.39.0.0/24
  3. A WireGuard VPN provider (currently configured for Windscribe)
  4. A Cloudflare account with a tunnel configured (for cloudflared)

Setup

  1. Copy .env.example to .env in each directory and fill in your values:
    • VPN credentials (WireGuard keys, region, forwarded port)
    • PUID / PGID for file permissions
    • TZ for timezone
  2. Adjust the Gluetun VPN config in servarr/.env if using a different provider.
  3. Start the services:
    # From the top-level directory
    docker compose -f servarr/compose.yml up -d
    docker compose -f cloudflared/compose.yml up -d
    docker compose -f portainer/compose.yml up -d
    docker compose -f kavita/compose.yml up -d

Notes

  • NZBGet is included but commented out in servarr/compose.yml. Uncomment to enable.
  • deunhealth monitors all containers and restarts any that become unhealthy.
  • Jellyfin media directories (/movies, /shows) are mounted read-only from the host at /home/sadsuite/data.
  • Seerr accesses media at /home/sadsuite/data and has its own config at ./seerr.

About

Personal home server docker setup for media management.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors