User Tools

Site Tools


systems:media_server:install_docker

This is an old revision of the document!


Systems - Media Server - Install Docker

Docker will be installed, together with some useful media-related docker containers, including:

  • Prowlarr is an indexer manager, offering complete management of indexers with no per app Indexer setup required.
  • Sonarr manages TV shows.
  • Radarr manages Movies.
  • Readarr manages Books (ebooks and audiobooks).
  • Bazarr manages Subtitles.
  • Sabnzbd manages NZB files.
  • QBitTorrent manages Torrents.
  • JellyFin Streams media.

Install Docker

sudo apt install docker.io docker-compose -y

Create a Media Directory

mkdir /media

Change ownership of the Media Directory

chown -R 1000:1000 /media

NOTE: The 1000:1000 is usually the first user created on the system.

  • Check the contents of /etc/passwd and /etc/group files.
    • This should show the user associated with UID 1000 and GID 1000.
  • Alternatively, check which UID and GID is associated with 1000:1000 by running:
    id 1000

Create an environment file

docker-media.env
# Main path for all MEDIA apps:
MEDIAPATH=/media/
 
# Global Variables
PUID=1000
PGID=1000
TZ=Europe/London

NOTE: Ensure the UID and GID point to the same user as before.


Create a Docker Compose file

docker-compose.yml
services: 
 
#
# PROWLARR
#
                    
  prowlarr:
    image: linuxserver/prowlarr:latest
    container_name: prowlarr
    hostname: prowlarr
    volumes:
      - ${MEDIAPATH}Prowlarr/config:/config
      - ${MEDIAPATH}Prowlarr/backup:/data/Backup
      - ${MEDIAPATH}Downloads:/downloads
    ports:
      - 9696:9696
    restart: unless-stopped
    env_file:
      - 'docker-media.env'
 
#
# SONARR
#

  sonarr:
    image: linuxserver/sonarr:latest
    container_name: sonarr
    hostname: sonarr
    volumes:
      - ${MEDIAPATH}Sonarr/config:/config
      - ${MEDIAPATH}Sonarr/backup:/data/Backup
      - ${MEDIAPATH}Sonarr/tvshows:/data/tvshows
      - ${MEDIAPATH}Downloads:/downloads
    ports:
      - 8989:8989
    restart: unless-stopped
    env_file:
      - 'docker-media.env'
 
#
# RADARR
#

  radarr:
    image: linuxserver/radarr:latest
    container_name: radarr
    hostname: radarr
    volumes:
      - ${MEDIAPATH}Radarr/config:/config
      - ${MEDIAPATH}Radarr/movies:/data/movies
      - ${MEDIAPATH}Radarr/backup:/data/Backup
      - ${MEDIAPATH}Downloads:/downloads
    ports:
      - 7878:7878
    restart: unless-stopped
    env_file:
      - 'docker-media.env'
 
#
# LIDARR
#

  lidarr:
    image: linuxserver/lidarr:latest
    container_name: lidarr
    hostname: lidarr
    volumes:
      - ${MEDIAPATH}Lidarr/config:/config
      - ${MEDIAPATH}Lidarr/music:/data/musicfolder
      - ${MEDIAPATH}Downloads:/downloads
    ports:
      - 8686:8686
    restart: unless-stopped
    env_file:
      - 'docker-media.env'
 
#
# READARR
#

  readarr:
    image: linuxserver/readarr:develop
    container_name: readarr
    hostname: readarr
    volumes:
      - ${MEDIAPATH}Readarr/config:/config
      - ${MEDIAPATH}Readarr/books:/data/books
      - ${MEDIAPATH}Downloads:/downloads
    ports:
      - 8787:8787
    restart: unless-stopped
    env_file:
      - 'docker-media.env'
 
 
#
# HOMARR
#

  homarr:
    container_name: homarr
    image: ghcr.io/ajnart/homarr:latest
    restart: unless-stopped
    volumes:
      - ${MEDIAPATH}Homarr/configs:/app/data/configs
      - ${MEDIAPATH}Homarr/icons:/app/public/icons
      - ${MEDIAPATH}Homarr/data:/data
    ports:
      - '7575:7575'
    env_file:
      - 'docker-media.env'
 
 
#
# JELLYFIN
#

  jellyfin:
    image: linuxserver/jellyfin
    container_name: jellyfin
    ports:
      - '8096:8096/tcp'   # Jellyfin web interface
      - '7359:7359/udp'   # Network discovery
      - '1900:1900/udp'   # DLNA port
    volumes:
      - ${MEDIAPATH}Jellyfin/config:/config
      - ${MEDIAPATH}Radarr/movies:/data/Movies
      - ${MEDIAPATH}Sonarr/tvshows:/data/TVShows
      - ${MEDIAPATH}Lidarr/music:/data/Music
      - ${MEDIAPATH}Readarr/books:/data/Books
    env_file:
      - 'docker-media.env'
    restart: unless-stopped
 
#
# QBITTORRENT
#

  qbittorrent:
    image: linuxserver/qbittorrent:latest
    container_name: qbittorrent
    hostname: qbittorrent
    restart: unless-stopped
    labels:
      - "com.centurylinklabs.watchtower.enable=false"
    volumes:
      - ${MEDIAPATH}qbittorrent/config:/config
      - ${MEDIAPATH}Downloads:/downloads
    ports:
      - 8080:8080
      - 6881:6881
      - 6881:6881/udp
    environment:
      - WEBUI_PORT=8080
      - TORRENTING_PORT=6881
    healthcheck:
      start_period: 15s
    env_file:
      - 'docker-media.env'

Change ownership of the Media directory

chown -R 1000:1000 /media

NOTE: This is the directory specified in the docker-media.env file.

  • Use the UID (user id) and GID (group id) configured in the docker-media.env file.

Do an initial run

sudo docker-compose up -d 
sudo docker-compose stop
sudo docker-compose rm 

NOTE: Ensure the command is run within the directory that contains the docker-compose and environment files.

  • This may take a long time the first time this is run.

To stop and remove the docker containers:

sudo docker-compose stop
sudo docker-compose rm 

Configure the various services

Configure qBittorrent service

Ascertain the initial temporary password

qBittorrent will initially be using a temporary password only.

  • To ascertain what this temporary password is, check the logs for the qbittorrent container.
sudo docker logs qbittorrent

returns:

...
The WebUI administrator username is: admin
The WebUI administrator password was not set. A temporary password is provided for this session: blahblah
...

Log into qbittorrent

Visit http://localhost:8080 and log on using the details provided in the container logs.


Set a permanent password

Navigate to Tools → Options → WebUI → change the user and password and check bypass authentication for clients on localhost.


Configure the Prowlarr service

  • Navigate to Settings → Download Clients → + symbol → Add download client.
  • Choose qBittorrent.
  • Enter the port number matching the WebUI in docker-compose for qBittorrent (default is 8080), with the Username and Password that you configured for qBittorrent in the previous step.
  • Host - This may need to be changed from localhost to the IP address of the host machine.
    • To check what the IP Address is on the host system run:
      ip address<code>
        * Return to the 'qbittorrent' URL.
        * Click the **Test** button at the bottom to make sure you get a green **tick**.
        * Click **Save**.
       
      ----
       
      ===== Configure the Sonarr service =====
       
        * Visit http://localhost:8989.
        * Navigate to **Settings -> Media Management -> Add Root Folder**, and set the root folder to what it is on the right side of the colon in the **volume** config line for Sonarr.
          * In the docker-compose file it is {MEDIAPATH}Sonarr/tvshows:/data/tvshows
          * Therefore, set **/data/tvshows** as the root directory.
        * Navigate to **Settings -> Download Clients**, and click the **+ symbol**.
        * Choose qBittorrent and repeat the steps from Prowlarr.
        * Navigate to **Settings -> General**, and scroll down to the **API key**.
        * Copy this key, and then go to **Prowlarr -> Settings -> Apps**, and click the **+ - Sonarr**, and paste the API key.
        * The host might also have to be changed from **localhost** to IP address of the Host.
        * Click the **Test** button, near the bottom, to see if a green 'tick' is shown.
        * Navigate to **Settings -> General**, and switch to **show advanced** in top left corner.
        * Scroll down to **Backups** and choose **/data/Backup** (or whatever location is in the docker compose file for Sonarr backups.
          * This is currently ${MEDIAPATH}Sonarr/backup:/data/Backup, hence we set **/data/Backup**, as that is on the right side of the colon.
       
      ----
       
      ===== Configure the Radarr service =====
       
        * Visit http://localhost:7878
        * Navigate to **Settings -> Media Management -> Add Root Folder**, and set **/data/movies** as the root folder
        * Navigate to **Settings -> Download clients**, and click the **'+'** symbol, choose qBittorrent etc. - basically same steps as for Sonarr
        * Navigate to **Settings -> General**, and scroll down to the API key.
          * Copy the API key.
        * Navigate to Prowlarr, and same way as in sonarr.
        * Navigate to **Settings -> General**, switch to **show advanced** -> Backups, and choose **/data/Backup** directory.
       
      ----
       
      ===== Configure the Lidarr service =====
       
        * Visit http://localhost:8686
        * Follow the same steps as for the above applications.
       
      ----
       
      ===== Configure the Readarr service =====
       
        * Visit http://localhost:8787
        * Follow the same steps as for the above applications.
       
      ----
       
      ===== Configure the Homarr service =====
       
        * Visit http://localhost:7575
        * Return to Prowlarr and click **Indexers** at the top right.
        * Click **Add indexer**, and search for preferred indexes.
          * Good indexes include **rarbg** and **yts**, but try others...
        * Test and Save.
        * Click **Sync App Indexers** icon (next to **Add indexer**).
        * Navigate to **Settings -> Apps** and this should show in green **Full sync** next to each application.
       
      ----
       
      ===== Configure the JellyFin service =====
       
        * Visit http://localhost:8096
        * Add media library in Jellyfin matching folders configured in the **docker-compose.yml** file, so in Jellyfin you should see them as:
       
      <code>
      /data/Movies
      /data/TVShows
      /data/Music
      /data/Books

NOTE: These locations should match the right side of the config in the Jellyfin volume configuration.

If the volume configuration looks like this:

    volumes:
      - ${MEDIAPATH}Radarr/movies:/data/Movies
      - ${MEDIAPATH}Sonarr/tvshows:/data/TVShows
      - ${MEDIAPATH}Lidarr/music:/data/Music
      - ${MEDIAPATH}Readarr/books:/data/Books

then on the container match the right side from the colon, e.g. /data/Movies, /data/TVShows etc.


Configuration is complete

All docker contains are configured.


Add Movies or TV to download

Add any media, such as Movies in radarr or TV Shows in sonarr etc., and click search all or search monitored, which will trigger the download process.

  • Check QBitTorrent which should show the downloading…

References

systems/media_server/install_docker.1747729999.txt.gz · Last modified: 2025/05/20 08:33 by peter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki