systems:media_server:install_docker
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
systems:media_server:install_docker [2025/05/20 08:35] – [Configure qBittorrent service] peter | systems:media_server:install_docker [2025/07/30 09:52] (current) – peter | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Systems - Media Server - Install Docker ====== | ====== 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 ===== | ===== Install Docker ===== | ||
- | <code bash> | + | Follow |
- | sudo apt install docker.io docker-compose -y | + | |
- | </ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Create a Media Directory ===== | + | |
- | + | ||
- | <code bash> | + | |
- | mkdir /media | + | |
- | </ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Change ownership of the Media Directory ===== | + | |
- | + | ||
- | <code bash> | + | |
- | chown -R 1000:1000 /media | + | |
- | </ | + | |
<WRAP info> | <WRAP info> | ||
- | **NOTE: | + | **NOTE: |
- | + | ||
- | * Check the contents of **/ | + | |
- | * This should show the user associated | + | |
- | + | ||
- | * Alternatively, | + | |
- | id 1000</ | + | |
</ | </ | ||
---- | ---- | ||
- | ===== Create an environment file ===== | + | ===== Allow docker to be run without using sudo ===== |
- | <file text docker-media.env> | + | Follow the instructions at: [[Docker:Allow docker |
- | # Main path for all MEDIA apps: | + | |
- | MEDIAPATH=/ | + | |
- | + | ||
- | # Global Variables | + | |
- | PUID=1000 | + | |
- | PGID=1000 | + | |
- | TZ=Europe/ | + | |
- | </ | + | |
- | + | ||
- | <WRAP info> | + | |
- | **NOTE: | + | |
- | </ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Create a Docker | + | |
- | + | ||
- | <file yaml docker-compose.yml> | + | |
- | services: | + | |
- | + | ||
- | # | + | |
- | # PROWLARR | + | |
- | # | + | |
- | + | ||
- | prowlarr: | + | |
- | image: linuxserver/ | + | |
- | container_name: | + | |
- | hostname: prowlarr | + | |
- | volumes: | + | |
- | - ${MEDIAPATH}Prowlarr/ | + | |
- | - ${MEDIAPATH}Prowlarr/ | + | |
- | - ${MEDIAPATH}Downloads:/ | + | |
- | ports: | + | |
- | - 9696:9696 | + | |
- | restart: unless-stopped | + | |
- | env_file: | + | |
- | - 'docker-media.env' | + | |
- | + | ||
- | # | + | |
- | # SONARR | + | |
- | # | + | |
- | + | ||
- | sonarr: | + | |
- | image: linuxserver/ | + | |
- | container_name: | + | |
- | hostname: sonarr | + | |
- | volumes: | + | |
- | - ${MEDIAPATH}Sonarr/ | + | |
- | - ${MEDIAPATH}Sonarr/ | + | |
- | - ${MEDIAPATH}Sonarr/ | + | |
- | - ${MEDIAPATH}Downloads:/ | + | |
- | ports: | + | |
- | - 8989:8989 | + | |
- | restart: unless-stopped | + | |
- | env_file: | + | |
- | - ' | + | |
- | + | ||
- | # | + | |
- | # RADARR | + | |
- | # | + | |
- | + | ||
- | radarr: | + | |
- | image: linuxserver/ | + | |
- | container_name: | + | |
- | hostname: radarr | + | |
- | volumes: | + | |
- | - ${MEDIAPATH}Radarr/ | + | |
- | - ${MEDIAPATH}Radarr/ | + | |
- | - ${MEDIAPATH}Radarr/ | + | |
- | - ${MEDIAPATH}Downloads:/ | + | |
- | ports: | + | |
- | - 7878:7878 | + | |
- | restart: unless-stopped | + | |
- | env_file: | + | |
- | - ' | + | |
- | + | ||
- | # | + | |
- | # LIDARR | + | |
- | # | + | |
- | + | ||
- | lidarr: | + | |
- | image: linuxserver/ | + | |
- | container_name: | + | |
- | hostname: lidarr | + | |
- | volumes: | + | |
- | - ${MEDIAPATH}Lidarr/ | + | |
- | - ${MEDIAPATH}Lidarr/ | + | |
- | - ${MEDIAPATH}Downloads:/ | + | |
- | ports: | + | |
- | - 8686:8686 | + | |
- | restart: unless-stopped | + | |
- | env_file: | + | |
- | - ' | + | |
- | + | ||
- | # | + | |
- | # READARR | + | |
- | # | + | |
- | + | ||
- | readarr: | + | |
- | image: linuxserver/ | + | |
- | container_name: | + | |
- | hostname: readarr | + | |
- | volumes: | + | |
- | - ${MEDIAPATH}Readarr/ | + | |
- | - ${MEDIAPATH}Readarr/ | + | |
- | - ${MEDIAPATH}Downloads:/ | + | |
- | ports: | + | |
- | - 8787:8787 | + | |
- | restart: unless-stopped | + | |
- | env_file: | + | |
- | - ' | + | |
- | + | ||
- | + | ||
- | # | + | |
- | # HOMARR | + | |
- | # | + | |
- | + | ||
- | homarr: | + | |
- | container_name: | + | |
- | image: ghcr.io/ | + | |
- | restart: unless-stopped | + | |
- | volumes: | + | |
- | - ${MEDIAPATH}Homarr/ | + | |
- | - ${MEDIAPATH}Homarr/ | + | |
- | - ${MEDIAPATH}Homarr/ | + | |
- | ports: | + | |
- | - ' | + | |
- | env_file: | + | |
- | - ' | + | |
- | + | ||
- | + | ||
- | # | + | |
- | # JELLYFIN | + | |
- | # | + | |
- | + | ||
- | jellyfin: | + | |
- | image: linuxserver/ | + | |
- | container_name: | + | |
- | ports: | + | |
- | - ' | + | |
- | - ' | + | |
- | - ' | + | |
- | volumes: | + | |
- | - ${MEDIAPATH}Jellyfin/ | + | |
- | - ${MEDIAPATH}Radarr/ | + | |
- | - ${MEDIAPATH}Sonarr/ | + | |
- | - ${MEDIAPATH}Lidarr/ | + | |
- | - ${MEDIAPATH}Readarr/ | + | |
- | env_file: | + | |
- | - ' | + | |
- | restart: unless-stopped | + | |
- | + | ||
- | # | + | |
- | # QBITTORRENT | + | |
- | # | + | |
- | + | ||
- | qbittorrent: | + | |
- | image: linuxserver/ | + | |
- | container_name: | + | |
- | hostname: qbittorrent | + | |
- | restart: unless-stopped | + | |
- | labels: | + | |
- | - " | + | |
- | volumes: | + | |
- | - ${MEDIAPATH}qbittorrent/ | + | |
- | - ${MEDIAPATH}Downloads:/ | + | |
- | ports: | + | |
- | - 8080:8080 | + | |
- | - 6881:6881 | + | |
- | - 6881: | + | |
- | environment: | + | |
- | - WEBUI_PORT=8080 | + | |
- | - TORRENTING_PORT=6881 | + | |
- | healthcheck: | + | |
- | start_period: | + | |
- | env_file: | + | |
- | - ' | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Change ownership of the Media directory ===== | + | |
- | + | ||
- | <code bash> | + | |
- | chown -R 1000:1000 /media | + | |
- | </ | + | |
- | + | ||
- | <WRAP info> | + | |
- | **NOTE: | + | |
- | + | ||
- | * Use the UID (user id) and GID (group id) configured in the **docker-media.env** file. | + | |
- | </ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Do an initial | + | |
- | + | ||
- | <code bash> | + | |
- | sudo docker-compose up -d | + | |
- | sudo docker-compose stop | + | |
- | sudo docker-compose rm | + | |
- | </ | + | |
- | + | ||
- | <WRAP info> | + | |
- | **NOTE: | + | |
- | + | ||
- | * This may take a long time the first time this is run. | + | |
- | + | ||
- | To stop and remove the docker containers: <code bash> | + | |
- | 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. | + | |
- | + | ||
- | <code bash> | + | |
- | sudo docker | + | |
- | </ | + | |
- | + | ||
- | 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:// | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ==== 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:// | + | |
- | * 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 | + | |
- | * Return to the ' | + | |
- | * Click the **Test** button at the bottom to make sure you get a green **tick**. | + | |
- | * Click **Save**. | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Configure the Sonarr service ===== | + | |
- | + | ||
- | * Visit http:// | + | |
- | * 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/ | + | |
- | * Therefore, set **/ | + | |
- | * 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 ' | + | |
- | * Navigate to **Settings -> General**, and switch to **show advanced** in top left corner. | + | |
- | * Scroll down to **Backups** and choose **/ | + | |
- | * This is currently ${MEDIAPATH}Sonarr/ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Configure the Radarr service ===== | + | |
- | + | ||
- | * Visit http:// | + | |
- | * Navigate to **Settings -> Media Management -> Add Root Folder**, and set **/ | + | |
- | * Navigate to **Settings -> Download clients**, and click the **' | + | |
- | * 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 **/ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Configure the Lidarr service ===== | + | |
- | + | ||
- | * Visit http:// | + | |
- | * Follow the same steps as for the above applications. | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Configure the Readarr service ===== | + | |
- | + | ||
- | * Visit http:// | + | |
- | * Follow the same steps as for the above applications. | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== Configure the Homarr service ===== | + | |
- | + | ||
- | * Visit http:// | + | |
- | * 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:// | + | |
- | * Add media library in Jellyfin matching folders configured in the **docker-compose.yml** file, so in Jellyfin you should see them as: | + | |
- | + | ||
- | < | + | |
- | / | + | |
- | / | + | |
- | / | + | |
- | / | + | |
- | </ | + | |
- | + | ||
- | <WRAP info> | + | |
- | **NOTE: | + | |
- | + | ||
- | If the volume configuration looks like this: | + | |
- | + | ||
- | < | + | |
- | volumes: | + | |
- | - ${MEDIAPATH}Radarr/ | + | |
- | - ${MEDIAPATH}Sonarr/ | + | |
- | - ${MEDIAPATH}Lidarr/ | + | |
- | - ${MEDIAPATH}Readarr/ | + | |
- | </ | + | |
- | + | ||
- | then on the container match the right side from the colon, e.g. / | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ===== 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**, | + | |
- | + | ||
- | * Check QBitTorrent which should show the downloading... | + | |
---- | ---- | ||
Line 426: | Line 21: | ||
https:// | https:// | ||
- | https:// | ||
- | |||
- | https:// | ||
- | |||
- | https:// | ||
- | |||
- | https:// | ||
- | |||
- | http:// | ||
- | |||
- | http:// | ||
systems/media_server/install_docker.1747730117.txt.gz · Last modified: 2025/05/20 08:35 by peter