Table of Contents
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
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 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
- Visit http://localhost:9696.
- 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
- 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:
/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…