How To Install Prowlarr in Docker
Tired of Syncing Indexers and Downloaders Manually? Prowlarr Ends This Madness

What is Prowlarr?
Prowlarr is the download and index manager for your media server. Think of it as the glue between your torrent/Usenet sources and the Arr apps like Sonarr, Radarr, and Lidarr. Instead of configuring downloaders and indexers manually in every app, you set them up once in Prowlarr.
Here’s how it works:
- It connects to public and private torrent trackers, and/or Usenet indexers.
- It connects your loacal downloaders to the ARR apps.
- It centralizes these connections and monitors them for availability.
- It automatically syncs these indexers to your other Arr apps using API connections.
- It lets you categorize indexers by media type (TV, movies, music) and push them to the right apps.
- You log into one dashboard to manage every source your automation relies on. And when something goes wrong with an indexer? Prowlarr lets you know.
Why You Should Use Prowlarr
Running a media server without Prowlarr is like trying to drive a car without tires. You can sort of do it, but why?
Here’s why you want it:
- Saves Time: Add an indexer or downloader once. That’s it. No more copy/paste API keys and login info three or more times.
- Reduces Errors: When one app works and another doesn’t, the culprit is often a misconfigured or outdated indexer. Prowlarr fixes that.
- Monitors Health: Know immediately when an indexer or downloader goes offline. You don’t find out a week later when you are missing your favorite show.
- Supports Everything: Private trackers, paid Usenet, free public indexers—Prowlarr works with all of them.
It turns a messy, manual setup into a clean, scalable system that you can set and forget.
Step 1: Install Docker
To get started, you’ll need Docker installed on your server.
Check out this guide for step-by-step instructions: Master the Basics - How to Install Docker on Ubuntu 24.04.
Step 2: Create or Modify Your Docker Compose File
Let’s define your Prowlarr container using docker-compose.yml
. In this post we will be adding Prowlarr to our existing docker-compose.yml
that contains the settings for the rest of the stack.
Post: How to Install Sonarr in Docker
Open the Compose File
Open your existing docker-compose.yml
or create a new one:
nano /docker/docker-compose.yml
Then, copy and paste the SABnzbd Section:
services:
#################################
## PROWLARR ##
#################################
prowlarr:
# Official Linuxserver.io Prowlarr image
image: lscr.io/linuxserver/prowlarr:latest
# Sets a custom name for the container
container_name: prowlarr
# Name and location of the .env file
env_file: .env
# Ensures the container restarts if it crashes
restart: unless-stopped
ports:
- ${PROWLARR_PORT}:9696
volumes:
# Stores Sonarr's configuration data
- ${CONFIG_PATH}/sonarr:/config
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
networks:
# Connects the container to the custom media network
- media_network
#################################
## SONARR ##
#################################
sonarr:
# Official LinuxServer.io Sonarr image
image: lscr.io/linuxserver/sonarr:latest
# Sets a custom name for the container
container_name: sonarr
# Name and location of the .env file
env_file: .env
# Ensures the container restarts if it crashes
restart: unless-stopped
ports:
- ${SONARR_PORT}:8989
volumes:
# Stores Sonarr's configuration data
- ${CONFIG_PATH}/sonarr:/config
# Directory where downloaded TV shows are stored
- ${MEDIA_PATH}/Shows:/tv
# Directory where incomplete downloads are stored
- ${DOWNLOADS_PATH}:/downloads
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
networks:
# Connects the container to the custom media network
- media_network
#################################
## RADARR ##
#################################
radarr:
# Official LinuxServer.io Radarr image
image: lscr.io/linuxserver/radarr:latest
# Sets a custom name for the container
container_name: radarr
# Name and location of the .env file
env_file: .env
# Ensures the container restarts if it crashes
restart: unless-stopped
ports:
- ${RADARR_PORT}:7878
volumes:
# Stores Radarr's configuration data
- ${CONFIG_PATH}/radarr:/config
# Directory where downloaded Movies are stored
- ${MEDIA_PATH}/Movies:/movies
# Directory where incomplete downloads are stored
- ${DOWNLOADS_PATH}:/downloads
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
networks:
# Connects the container to the custom media network
- media_network
#################################
## SABnzbd ##
#################################
sabnzbd:
# Official LinuxServer.io SABnzbd image
image: lscr.io/linuxserver/sabnzbd:latest
# Sets a custom name for the container
container_name: sabnzbd
# Name and location of the .env file
env_file: .env
# Ensures the container restarts if it crashes
restart: unless-stopped
ports:
- ${SABNZBD_PORT}:8080
volumes:
# Stores SABnzbd's configuration data
- ${CONFIG_PATH}/sabnzbd:/config
# Directory where incomplete downloads are stored
- ${DOWNLOADS_PATH}:/downloads
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
networks:
# Connects the container to the custom media network
- media_network
#################################
## NETWORK ##
#################################
# Creates an isolated Docker network for media containers
networks:
media_network:
driver: bridge
💡 Tip: Make sure the spacing is correct. YAML is very picky about spacing. The key is that each indent is two spaces not a tab
.
Step 3: Customize the .env File
Open the .env File
nano /docker/.env
The content of the .env file should look like this:
# User and Group ID (Prevents permission issues)
# Main user ID
PUID=1000
# Our media group:
PGID=1001
# Timezone (Ensures correct scheduling and logs)
TZ=America/Denver
# Define Ports (Ports for each container are defined here)
# Maps Radarr’s web UI to port 7878 on the host
RADARR_PORT=7878
# Maps Sonarr’s web UI to port 8989 on the host
SONARR_PORT=8989
# Maps SABnzbd’s web UI to port 8080 on the host
SABNZBD_PORT=8080
# Maps Prowlarr's web UI to 9696
PROWLARR_PORT=9696
# Data Directories (Keeps storage paths centralized)
CONFIG_PATH=/docker
DOWNLOADS_PATH=/media/downloads
MEDIA_PATH=/media
Step 4: Start SABnzbd
Bring your new SABnzbd container online:
docker compose up -d
Check it’s running:
docker ps
You should see prowlarr
in the list of containers:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65470f79b320 lscr.io/linuxserver/radarr:latest "/init" 6 seconds ago Up 5 seconds 0.0.0.0:7878->7878/tcp, [::]:7878->7878/tcp radarr
3e96643b0ba9 lscr.io/linuxserver/sabnzbd:latest "/init" 6 seconds ago Up 5 seconds 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp sabnzbd
604d2ed3850c lscr.io/linuxserver/prowlarr:latest "/init" 6 seconds ago Up 5 seconds 0.0.0.0:9696->9696/tcp, [::]:9696->9696/tcp prowlarr
52c78c78f541 lscr.io/linuxserver/sonarr:latest "/init" 6 seconds ago Up 5 seconds 0.0.0.0:8989->8989/tcp, [::]:8989->8989/tcp sonarr
Step 5: Fix Permissions (If Needed)
Permissions issues are a common snag with media containers. Here’s how to make sure everything plays nice:
sudo chown -R `yourusername`:media /docker/ && sudo chmod -R 770 /docker/
sudo chown -R `yourusername`:media /media/ && sudo chmod -R 770 /media/
Check out this post if you want to learn more about Linux permissions:
Master the Basics - Linux Permissions
Step 6: Access and Set Up Prowlarr in Your Browser
Open a web browser and visit:
http://your-server-ip:9696
Follow the setup wizard to:
- Add your Usenet and torrent indexers
- Link your downloader (qBittorent, SABnzbd, or NZBget) via API
- Link Sonarr, Radarr, Lidarr via API
- Set up categories (movies → Radarr, TV → Sonarr, etc.)
- Turn on Sync to push indexers automatically
Once connected, Prowlarr becomes the single point to update these apps in your stack.
Step 7: Keep Your Docker Software Updated
To update:
docker compose pull # Fetches the latest image
docker compose down # Stops and removes the running container
docker compose up -d # Starts a fresh container with the new image
Radarr, Sonarr, SABnzbd, and Prowlarr will restart with the latest version, no reconfig needed.
In Closing
Prowlarr plugs a gap in the automation chain. It keeps indexers and downloaders consistent, online, and working with your stack. Run it in Docker and forget about it. You’ll spend less time troubleshooting and more time enjoying your media.
Want a real hands-off setup? Prowlarr is the piece you’re missing. Install it. Sync it. Forget it.
Need a new HDD to keep up with your downloads?
Western Digital 14TB Internal Hard Drive