This guide will help you deploy a complete media automation stack using Docker. This setup is based on the configuration from the mediaStack GitHub repository.
First, download the necessary configuration files from the GitHub repository. You can do this by cloning the repository or downloading the ZIP file.
# Example of cloning the repository
git clone [https://github.com/frandevaux/mediaStack.git](https://github.com/frandevaux/mediaStack.git)
cd mediaStackBefore you start, it is crucial to configure the .env file. This file is located in the same folder as docker-compose.yml.
- Open the
.envfile with a text editor. - Define your
ARRPATH: This is the main path on your host machine where all configurations and media files will be stored.- Linux Example:
ARRPATH=/media/Arr - Windows Example:
ARRPATH=C:\Docker\Arr
- Linux Example:
- Define your
PUIDandPGID: These are the User and Group IDs. On Linux,1000:1000is usually correct for the main user. For Windows, you can leave them as1000:1000since Docker Desktop handles permissions differently.
Make sure you are in the same folder as your docker-compose.yml and .env files.
- To bring up all services:
docker-compose up -d
- To stop the services:
docker-compose stop
- To stop and remove the containers:
docker-compose down
The containers need permission to write to the folder you defined in ARRPATH. Run the chown command to assign ownership of the folder to the user and group specified in your .env file.
# Replace 1000:1000 and /media/Arr with the values from your .env
sudo chown -R 1000:1000 /media/ArrYou do not need to use chown. Instead, ensure that your Windows user account has "Full control" over the ARRPATH folder.
- Right-click the folder (e.g.,
C:\Docker\Arr) -> Properties. - Go to the Security tab.
- Select your user, click Edit..., and check the Full control box.
You can now access and configure each service from your web browser.
- Find the temporary password in the container logs:
docker logs qbittorrent
- Access the web UI: http://localhost:8080.
- Log in with the username
adminand the temporary password. - Go to Tools -> Options -> WebUI.
- Change the username and password to permanent ones.
- (Optional) Check "Bypass authentication for clients on localhost".
- Access the web UI: http://localhost:9696 (will require creating a username and password).
- Go to Settings -> Download Clients and click
+. - Select qBittorrent.
- Configure it as follows:
- Host:
qbittorrent(this is the service name in Docker, more reliable than an IP). - Port:
8080. - Username/Password: The ones you just configured in qBittorrent.
- Host:
- Click Test to verify the connection, then Save.
- Go to Indexers, add your preferred ones (e.g., yts, rarbg), and then click Sync App Indexers.
- Access the web UI: http://localhost:8989.
- Set up the Root Folder: Go to Settings -> Media Management -> Add Root Folder. The path you must add is
/tv. - Connect the Download Client: Go to Settings -> Download Clients, click
+, and configure qBittorrent (same as in Prowlarr, usingqbittorrentas the host). - Connect with Prowlarr: Go to Settings -> General, and copy the API Key. Then, in Prowlarr, go to Settings -> Apps, click
+, select Sonarr, and paste the API Key. Usesonarras the hostname.
- Access the web UI: http://localhost:7878.
- Set up the Root Folder: Go to Settings -> Media Management -> Add Root Folder. The path is
/movies. - Connect the download client and sync with Prowlarr following the same steps as for Sonarr, using
radarras the hostname and its own API Key.
- Access the web UI: http://localhost:8686.
- Follow the same steps as for Sonarr/Radarr. The root media folder is
/music.
- Access the web UI: http://localhost:6767.
- Connect with Sonarr and Radarr:
- Go to Settings -> Sonarr. Enable it.
- Host:
sonarr. - Port:
8989. - Paste the Sonarr API Key.
- Test the connection and save.
- Repeat the process in Settings -> Radarr (Host:
radarr, Port:7878, Radarr API Key).
- Access the web UI: http://localhost:8096.
- During the initial setup wizard, add your media libraries.
- When asked for the folder path, use the standardized paths that the containers see:
- Movies:
/movies - TV Shows:
/tv - Music:
/music
- Movies:
- Access the web UI: http://localhost:7575.
- Configure your services to have a centralized dashboard.
To securely access your services from outside your home, you can use Tailscale.
- Generate an Auth Key in the Tailscale admin console. Disable expiration for convenience.
- Add the key to your
.envfile:TS_AUTHKEY=tskey-auth-your-key-here...
The docker-compose.yml file already includes the Tailscale service. Simply bring up the stack with docker-compose up -d.
- Authorize Routes: In your Tailscale admin console's Machines page, find your new machine (
docker-gateway). Click the...menu -> Review subnet routes... and enable the routes it advertises. - Disable Key Expiry: In the same menu, click Disable key expiry....
To access a service, you need its internal Docker IP. To find Sonarr's IP, for example:
docker inspect sonarr | grep IPAddressIf the IP is 172.20.0.5, you can access Sonarr from any device on your Tailnet at the URL: http://172.20.0.5:8989. Repeat this step for the other services.
That's it! Your media automation stack is complete and accessible.