A self-hosted media server that just works. Request a movie or TV show from your Plex watchlist and it automatically downloads and appears in your library β no manual steps required.
Simplarr bundles Plex with the popular *arr suite (Radarr, Sonarr, Prowlarr) and handles all the wiring between them. Run the setup, start the containers, complete two quick wizards, and you're streaming.
β οΈ Early Release Notice: While comprehensive automated testing has been completed, full end-to-end validation in diverse environments is ongoing. You may encounter issues during setup or operation. Please report any problems via GitHub issues β feedback is actively being collected and addressed to improve the setup experience.
Setting up a media server typically involves lots of manual configuration. Simplarr handles the tedious parts for you:
- Plex watchlist integration β Add to your Plex watchlist, Overseerr picks it up, and it downloads automatically
- Pre-wired services β The configure script connects qBittorrent, Radarr, Sonarr, and Prowlarr so you don't have to
- Sensible defaults β qBittorrent comes pre-configured with reasonable limits, public trackers, and proper paths
- One dashboard β Access everything from a simple homepage at
http://your-server/(or your server's IP address)
Once set up, your family and Plex friends just use the Plex app β they don't need to know about the automation behind it.
| Service | What It Does |
|---|---|
| Plex | Streams your media to any device |
| Radarr | Finds and downloads movies |
| Sonarr | Finds and downloads TV shows |
| Prowlarr | Manages torrent indexers for Radarr/Sonarr |
| qBittorrent | Downloads torrents |
| Overseerr | Lets users request content (syncs with Plex watchlists) |
| Tautulli | Shows Plex statistics and history |
| Nginx | Provides clean URLs and a unified entry point |
| Homepage | Dashboard with links to all services + status page |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β YOUR EXPERIENCE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 1. Add to Plex Watchlist βββΊ 2. Automatically Downloads β
β β β β
β βΌ βΌ β
β βββββββββββββββββββ βββββββββββββββββββ β
β β Plex App β β Appears in β β
β β (any device) β β Your Library β β
β βββββββββββββββββββ βββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βΌ WHAT HAPPENS BEHIND THE SCENES βΌ
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β Overseerr ββββββΊβ Radarr/SonarrββββββΊβ qBittorrent β
β β β β β β
β Watches your β β Searches via β β Downloads β
β Plex watchlist β Prowlarr β β the file β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β² β β
β βΌ βΌ
β ββββββββββββββββ ββββββββββββββββ
β β Prowlarr β β Media Libraryβ
β β β β β
βββββββββββββββ Pre-wired β β /movies /tv β
Configured β indexers β β β
automatically ββββββββββββββββ ββββββββββββββββ
Automated Wiring: After you complete the Plex and Overseerr sign-in wizards, the configure script wires everything together β Overseerr monitors your Plex watchlist and sends requests to Radarr/Sonarr.
- Docker and Docker Compose installed on your server
- Storage for your media library (local disk, NAS, or mounted drive)
- A free Plex account β sign up at plex.tv
Simplarr works with a free Plex account. Plex Pass (paid subscription) adds:
- Hardware transcoding (useful for lower-powered servers)
- Secure remote access to your server from anywhere
If you don't have Plex Pass, remote access isn't available β but that's fine since Simplarr is designed for LAN use only anyway. This keeps the setup simple and avoids SSL certificate complexity.
git clone https://github.com/parsoFish/simplarr.git
cd simplarr# Linux/macOS
./setup.sh
# Windows PowerShell
.\setup.ps1The script will ask for your timezone, storage paths, and Plex claim token.
docker compose -f docker-compose-unified.yml up -dWait a few minutes for all services to start. Check status with:
docker compose -f docker-compose-unified.yml psOnly a few quick manual steps remain. Replace your-server-ip with your server's IP address (e.g., 192.168.1.100):
Plex (http://your-server-ip:32400/web)
- Sign in with your Plex account
- Add library β Movies β
/movies - Add library β TV Shows β
/tv
Overseerr (http://your-server-ip:5055)
- Sign in with Plex (one-time OAuth authentication - this is required to initialize Overseerr)
π‘ Why this step is required first: Overseerr requires Plex OAuth sign-in before it can be configured via API. Complete this before running the configure script.
# Linux/macOS
./configure.sh
# Windows PowerShell
.\configure.ps1This automatically connects all services together:
- qBittorrent β Radarr/Sonarr β Prowlarr
- Overseerr β Radarr/Sonarr (automatic requests)
- Overseerr Watchlist Sync (auto-approval enabled)
Access your dashboard at http://your-server-ip/ (replace with your server's IP, e.g., http://192.168.1.100/) and start adding content to your Plex watchlist.
All services run on one server. Use docker-compose-unified.yml.
If your NAS struggles with the *arr apps, you can run Plex and qBittorrent on the NAS while running the automation services on a Raspberry Pi or separate server. This keeps the NAS focused on storage and transcoding.
| Device | Services | Compose File |
|---|---|---|
| NAS | Plex, qBittorrent | docker-compose-nas.yml |
| Pi/Server | Radarr, Sonarr, Prowlarr, Overseerr, Tautulli, Nginx | docker-compose-pi.yml |
Setup:
- Run
./setup.sh(or./setup.ps1) and choose Split Setup on each device to generate a local .env with the correct paths. - On NAS:
docker compose -f docker-compose-nas.yml up -d - On Pi/Server: Mount NAS storage via NFS, then
docker compose -f docker-compose-pi.yml up -d - On Pi/Server: Run
./configure.sh(or./configure.ps1)
β Split setup note: For the Pi/Server, the configure script should point qBittorrent at the NAS. Set
QBITTORRENT_HOSTto your NAS IP (or hostname) and useQBITTORRENT_URLif the WebUI is not on the Pi.
If you donβt want to keep the full repo on both the NAS and the Pi/Server, you can copy only the required files from a primary machine:
NAS requires:
docker-compose-nas.yml.envsetup.shorsetup.ps1(optional, if you want to generate .env locally on NAS)templates/qBittorrent/qBittorrent.conf(optional, for preconfigured qBittorrent settings)
Pi/Server requires:
docker-compose-pi.yml.envconfigure.shorconfigure.ps1nginx/split.confhomepage/(the dashboard container build context)
Suggested flow:
- Clone the repo on your primary machine.
- Run setup on each device (or generate
.envon the primary machine and copy it). - Copy only the files listed above to each device.
- Start the NAS services first, then the Pi/Server services.
Replace your-server with either:
- Your server's IP address β e.g.,
http://192.168.1.100/(find it withifconfigon Linux/Mac oripconfigon Windows) - A friendly hostname β e.g.,
http://simplarr.local/(requires DNS setup, see below)
Once running, access services via direct ports or through the homepage:
Homepage Dashboard: http://your-server-ip/
- Provides a clean dashboard with links to all services
- Status page available at
http://your-server-ip/status
Direct Port Access:
| Service | Port | Example URL |
|---|---|---|
| Plex | 32400 | http://your-server-ip:32400/web |
| Radarr | 7878 | http://your-server-ip:7878/ |
| Sonarr | 8989 | http://your-server-ip:8989/ |
| Prowlarr | 9696 | http://your-server-ip:9696/ |
| qBittorrent | 8080 | http://your-server-ip:8080/ |
| Overseerr | 5055 | http://your-server-ip:5055/ |
| Tautulli | 8181 | http://your-server-ip:8181/ |
Example: If your server's IP is 192.168.1.100, the homepage is at http://192.168.1.100/ and Radarr is at http://192.168.1.100:7878/
Note: The homepage JavaScript automatically detects your server hostname and builds the correct URLs for all services.
If you have a DNS server like Pi-hole, you can set up local domains:
plex.local β your-server-ip
radarr.local β your-server-ip
overseerr.local β your-server-ip
See the Pi-hole Local DNS guide for setup instructions.
qBittorrent is pre-configured with sensible defaults when you run the setup script:
- Download path:
/downloads - Auto-add trackers: Enabled (public trackers for better peer discovery)
- Connection limits: 500 global, 100 per torrent
- Seeding: 1:1 ratio or 48 hours
First login: Username is admin. Find the password in container logs:
docker logs qbittorrent 2>&1 | grep -i passwordLower-powered server (Raspberry Pi, older hardware)?
- Reduce connection limits: Options β Connection β Max connections global:
100-200 - Enable "Use alternative web UI": Upload lightweight UI instead of default
- Reduce upload/download slots: Connection β Parallel downloads:
2-4
High-speed connection (100+ Mbps)?
- Increase connection limits: Max connections global:
1000+ - Increase upload/download slots: Connection β Parallel downloads:
8-16
Running private trackers?
- Disable auto-add trackers to avoid getting banned: Options β BitTorrent β uncheck "Automatically add these trackers"
- Use higher seeding ratio: Advanced β Seeding β set to
2:1or higher
Want faster torrents?
- Enable UPnP/NAT-PMP: Options β Connection β check both boxes (allows external peers to find you)
- Increase BEP3 extension: Options β BitTorrent β check "Enable DHT (for torrent discovery)"
Advanced: Changing the pre-configured settings
All settings are stored in the qBittorrent config. To reset or manually edit:
- Stop the container:
docker compose -f docker-compose-unified.yml down qbittorrent - Edit the config:
/path/to/qbittorrent/config/qBittorrent/qBittorrent.conf - Restart:
docker compose -f docker-compose-unified.yml up -d qbittorrent
Or use the WebUI: Open http://your-server-ip/torrent, go to Options, and adjust any setting.
β οΈ Note: VPN support is included but currently untested. Use at your own discretion.
If your ISP monitors torrent traffic or you want additional privacy, you can route qBittorrent through a VPN using Gluetun.
When to use a VPN:
- You want to maintain privacy from your ISP
- You want additional privacy for your download activity
- You're using public trackers (private trackers often ban VPN IPs)
Setup: Uncomment the gluetun service in your compose file and add your VPN credentials. See comments in docker-compose-unified.yml for details.
Since Simplarr is designed for LAN-only use, the VPN only affects outbound torrent traffic β it doesn't change how you access the services locally.
Simplarr uses HTTP (not HTTPS) because it's designed for your home network only. This keeps setup simple β no certificates to manage.
Do not expose these services to the internet. If someone outside your network could access them:
- Passwords and API keys would be sent unencrypted
- Your viewing/download activity would be visible to network observers
- These services aren't hardened against attacks
If you need to access your media outside your home:
- Plex has secure built-in remote access (requires Plex Pass or free for local playback)
- For other services, use a VPN to securely connect to your home network
- Change qBittorrent's default password
- Don't port-forward these services on your router
Found a bug or have a suggestion? Open an issue on GitHub.
Please include:
- What you expected to happen
- What actually happened
- Your OS and Docker version
- Relevant logs (
docker compose logs service-name)
For contributors: The dev-testing/ directory contains an automated test suite that validates the entire setup. This is for development only and not needed for normal use.
test.ps1(PowerShell) - Comprehensive test suite with ~83 tests
See dev-testing/README.md for details.
MIT License β use and modify freely for your home setup.
Built with:
- LinuxServer.io container images
- Plex, Radarr, Sonarr, Prowlarr
- Overseerr, qBittorrent, Tautulli