DiyMediaServer
Featured image of post Arr Stack Docker Compose Generator

Arr Stack Docker Compose Generator

Pick your services, set your paths and IDs, and get a ready-to-run docker-compose.yml, .env, and launch commands for a Usenet arr stack.

Tick the services you want, fill in your user IDs and host paths, and copy the three files a working arr stack needs: the .env, the docker-compose.yml, and the launch commands. The output matches the stack from the full arr stack guide exactly.

Services
Environment

The user the containers run as. Find both with id youruser on the Docker host.

IANA name, e.g. Europe/London. Check yours with timedatectl.

Host folder holding each app's config subfolder.

Host folder where SABnzbd drops completed downloads.

Host media root — needs Movies and Shows subfolders.

.env
Select at least one service to generate the .env file.
docker-compose.yml
Select at least one service to generate the Compose file.
Launch commands
Select at least one service to generate the launch commands.

Decisions baked into this Compose file

One shared /downloads path. SABnzbd, Sonarr, and Radarr all see completed downloads at the exact same container path, so imports work without any remote path mapping: the single most common arr-stack misconfiguration.

Everything joins media_network. A user-defined bridge lets containers resolve each other by name: when Prowlarr asks for your Sonarr address, it’s just http://sonarr:8989. The network is external so you can tear the stack down and rebuild it without breaking other containers attached to it.

env_file instead of per-service environment blocks. PUID, PGID, UMASK, and TZ live in one place. Change your timezone once, restart, done.

Minimal mounts per service. Prowlarr only manages indexers, so it gets no media or download mounts. Bazarr writes subtitles next to your media, so it sees the media folders but not /downloads.

Healthchecks on everything. docker ps shows (healthy) or (unhealthy) per app, so you can tell a genuinely working stack from one that’s merely running.

Before you launch

  1. Find your PUID/PGID with id youruser: the containers must own the config, downloads, and media paths.
  2. Make sure the Movies and Shows subfolders exist under your media path.
  3. Run the launch commands from the folder holding both files (docker compose reads .env automatically).