Back to Blog

Docker Compose Media Server: Jellyfin, Sonarr, Radarr Stack

Build the ultimate self-hosted media server with Docker Compose. Deploy Jellyfin, Sonarr, Radarr, Prowlarr, and qBittorrent for automated media management.

Posted by

Docker Compose media server stack

The Ultimate Media Stack

Cancel Netflix, Disney+, and all those streaming subscriptions. With this self-hosted media stack, you'll have a better experience with your own content library - all running on Docker Compose.

Stack Components

  • Jellyfin: Media server (streams to all devices)
  • Sonarr: TV show management
  • Radarr: Movie management
  • Prowlarr: Indexer management
  • qBittorrent: Download client

Docker Compose Configuration

version: "3.8"
services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./jellyfin/config:/config
      - ./media/movies:/data/movies
      - ./media/tv:/data/tv
    ports:
      - "8096:8096"
    restart: unless-stopped

  sonarr:
    image: linuxserver/sonarr:latest
    container_name: sonarr
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./sonarr:/config
      - ./media/tv:/tv
      - ./downloads:/downloads
    ports:
      - "8989:8989"
    restart: unless-stopped

  radarr:
    image: linuxserver/radarr:latest
    container_name: radarr
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./radarr:/config
      - ./media/movies:/movies
      - ./downloads:/downloads
    ports:
      - "7878:7878"
    restart: unless-stopped

  prowlarr:
    image: linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./prowlarr:/config
    ports:
      - "9696:9696"
    restart: unless-stopped

  qbittorrent:
    image: linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - WEBUI_PORT=8080
    volumes:
      - ./qbittorrent:/config
      - ./downloads:/downloads
    ports:
      - "8080:8080"
      - "6881:6881"
    restart: unless-stopped

Setup Steps

  • 1. Deploy the stack with docker compose up -d
  • 2. Configure Prowlarr with your indexers
  • 3. Connect Sonarr/Radarr to Prowlarr
  • 4. Add qBittorrent as download client
  • 5. Add media libraries to Jellyfin

Hardware Transcoding

For smooth 4K playback, enable hardware transcoding in Jellyfin. Intel Quick Sync is recommended for most homelabs.

# Add to jellyfin service for Intel GPU
devices:
  - /dev/dri:/dev/dri

Continue Reading