This project simplifies the deployment of a complete media stack (Plex, Sonarr, Radarr, and Bazarr) with all traffic routed through a WireGuard VPN. It is preconfigured for Hardlink support out of the box, ensuring efficient storage use and instant file moves.
Docker & Docker Compose installed.
A WireGuard .conf file from your VPN provider.
To run this project, you will need to add the following environment variables to your .env file
| Variable | Description | Example |
|---|---|---|
| PUID | User ID for file permissions | 1000 |
| PGID | Group ID for file permissions | 1000 |
| MEDIA_PATH | The root folder for all your media | C:/Media or /mnt/data |
| PLEX_CLAIM | Your Plex claim token | claim-xxxxxxx |
| WG_CONFIG | Name of your WireGuard file | wg0.conf |
Note that downloads are structured as so by default:
📁 Media
└─ 📁Completed
├─ 📁radarr
└─ 📁sonarr
If you want to change this behavior you have to edit the docker-compose.yml and settings in sonarr/radarr > Download Clients > Transmission > Category: Movies for example.
1. Clone the Repository
git clone https://github.com/AJConnelly/Servarr-Stack.gitcd Servarr-StackCreate an empty .env file (this works on both Windows and Linux):
echo > .env2. Prepare Your Environment
Copy the template from below into .env and replace with your variables
Add your VPN config: Place your WireGuard .conf file into the ./wireguard-configs/ folder.
TZ=America/Chicago
PUID=1000
PGID=1000
MEDIA_PATH="/example/path/for/downloads"
LOCAL_NETWORK=192.168.1.0/24
PLEX_CLAIM="claim-********"
WG_CONFIG="example.conf"3. Start the Stack
docker compose up -dBoth Sonarr, Radarr, and Prowlarr need to be configured with a username and password.
Due to dockers internal DNS resolving to hostname:port will not work between continers, to fix this change hostname to service-name in both Sonarr and Radarr
Download Client Setup
In Sonarr and Radarr > Download Clients > ➕ Add Transmission
| Setting | Value |
|---|---|
| Host: | transmission-wireguard |
| Port: | 9091 |
In Prowlarr Settings > Indexers > ➕ Add Indexer Proxy Flaresolverr
| Setting | Value |
|---|---|
| Tags: | flaresolverr |
| Host: | http://flaresolverr:8191/ |
In Prowlarr Settings > Apps:
| Setting | Value |
|---|---|
| Prowlarr Server: | http://prowlarr:9696 |
| Radarr Server: | http://radarr:7878 |
| Sonarr Server: | http://sonarr:8989 |
Your final file structure should look like this. When adding new tv/movies make sure to add root path in sonarr and radarr.
📁 Media
├─ 📁completed
│ ├─ 📂radarr
│ └─ 📂sonarr
├─ 📁incomplete
├─ 📁media
│ ├─ 📂movies
│ └─ 📂tv
└─ 📂watch