- Summary
- Requirements
- Auto-download configuration
- Request UIs (Jellyseerr / Requestrr)
- Services and default ports
- Downloads
- Accessing content
- Usage
This repository deploys a home media server stack with Docker Compose including:
- Jellyfin (media server)
- Sonarr (TV series)
- Radarr (movies)
- Jackett (indexers)
- FlareSolverr (CAPTCHA resolver for some indexers)
- qBittorrent (download client)
- Jellyseerr (request UI for Jellyfin)
- Requestrr (optional request bot)
- A user with sudo privileges
- git and curl (
sudo apt install git curl) - Docker and Docker Compose
- Copy
example.envto.envand editMEDIA_SERVER_PATHandMEDIA_PATHto match your folders
Clone the repo:
git clone https://github.com/jsilverdev/docker-media-server.git
cd docker-media-serverCreate the folders you will use. Example layout:
/home/user/
├── media-server
| ├── jackett
| ├── jellyfin
| ├── jellyseerr-data
| ├── qbittorrent
| ├── radarr
| ├── requestrr-config
| └── sonarr
└── media-content
└── media
├── movies
├── books
└── tvseries
└── downloads
Copy example.env to .env and edit MEDIA_SERVER_PATH and MEDIA_PATH to match your folders.
Start the stack (use the provided script):
chmod +x ./init.sh
./init.shConfigure Jackett at http://localhost:9117 to add indexers (e.g. 1337x, EZTV) and obtain Torznab feeds and API keys.
Configure qBittorrent Web UI (default http://localhost:8080) for speed limits and schedules as needed.
Interface: http://localhost:8989
Settings > Indexers: add Jackett indexers (filter for TV shows).
Interface: http://localhost:7878
Settings > Indexers: add Jackett indexers (filter for movies).
You can expose request interfaces so users can request movies or TV shows for the server:
- Jellyseerr: Web UI at
http://localhost:5055(default). Configure connections to Jellyfin, Sonarr and Radarr in the Jellyseerr settings. - Requestrr: Web UI at
http://localhost:4545(default). Configure it to forward requests to Sonarr/Radarr and to your notification/chat platform.
Both services read configuration from the environment and volumes defined in docker-compose.yaml. Adjust ports in example.env if needed.
If you want users to request content via a friendly UI, enable and configure jellyseerr (recommended) and/or requestrr.
- Jellyfin: 8096 (HTTP), 8920 (optional HTTPS)
- Sonarr: 8989
- Radarr: 7878
- Jackett: 9117
- FlareSolverr: used internally by Jackett
- qBittorrent (Web UI): 8080
- Jellyseerr: 5055
- Requestrr: 4545
Note: Ports can be overridden with environment variables in
.env.
Add series in Sonarr and movies in Radarr. Both use qBittorrent to download and move files into the MEDIA_PATH locations.
Open Jellyfin at http://localhost:8096 (or https://localhost:8920 if you configure TLS). From other devices on your LAN, replace localhost with the server IP.
- Add/monitor content in Sonarr/Radarr.
- Let qBittorrent download and complete transfers.
- Stream content in Jellyfin.