Leo
Leo
Docs/home server/media automation/installation/deploy docker compose

Last updated Jun 3, 2026

Deploy Docker Compose Stack#

This deploys all five automation services in a single command.

docker-compose.yml#

Create this file at /srv/media-stack/docker-compose.yml:

networks:
  media_net:
    driver: bridge
 
services:
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Zurich
    volumes:
      - /srv/media-stack/config/prowlarr:/config
    ports:
      - "9696:9696"
    networks:
      - media_net
    restart: unless-stopped
 
  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Zurich
    volumes:
      - /srv/media-stack/config/sonarr:/config
      - /mnt/media/tv:/tv
      - /mnt/media/downloads:/downloads
    ports:
      - "8989:8989"
    networks:
      - media_net
    restart: unless-stopped
 
  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Zurich
    volumes:
      - /srv/media-stack/config/radarr:/config
      - /mnt/media/movies:/movies
      - /mnt/media/downloads:/downloads
    ports:
      - "7878:7878"
    networks:
      - media_net
    restart: unless-stopped
 
  sabnzbd:
    image: lscr.io/linuxserver/sabnzbd:latest
    container_name: sabnzbd
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Zurich
    volumes:
      - /srv/media-stack/config/sabnzbd:/config
      - /mnt/media/downloads:/downloads
    ports:
      - "8080:8080"
    networks:
      - media_net
    restart: unless-stopped
 
  seerr:
    image: ghcr.io/seerr-team/seerr:latest
    init: true
    container_name: seerr
    environment:
      - TZ=Europe/Zurich
    volumes:
      - /srv/media-stack/config/seerr:/app/config
    ports:
      - "5055:5055"
    networks:
      - media_net
    restart: unless-stopped

Start the stack#

cd /srv/media-stack
docker compose up -d

Verify all containers are running#

docker compose ps

All five services should show Up. If any are in Restarting state, check the logs:

docker logs <container-name>

The most common cause of a restart loop at this stage is a config directory that does not exist or is not writable. Make sure /srv/media-stack/config/ exists and is owned by 1000:1000.

Service URLs#

ServiceURL
Prowlarrhttp://<docker-vm-ip>:9696
Sonarrhttp://<docker-vm-ip>:8989
Radarrhttp://<docker-vm-ip>:7878
SABnzbdhttp://<docker-vm-ip>:8080
Seerrhttp://<docker-vm-ip>:5055

Open each URL to confirm the web UI loads. You do not need to configure anything yet.

Continue to Install & Configure Plex.