Jellyseerr is the media request manager for Jellyfin, Emby, and Plex — it lets users request movies and TV shows through a clean web UI, and the *arr stack handles the rest automatically.
What it is
| Platform | TrueNAS Scale (Docker custom app) |
| Port | 5055 (web UI) |
| Image | fallenbagel/jellyseerr:latest |
| Config path | /mnt/apps/jellyseerr/config → /config |
| Purpose | Media request management for Jellyfin/Plex/Emby |
| License | MIT |
Jellyseerr is the open-source fork of Overseerr, built for Jellyfin but also supporting Plex and Emby. Users browse or search for movies and TV shows, click "Request," and Jellyseerr communicates with Radarr/Sonarr to download and organize the content. The user gets a notification when the media is available.
It solves the "WhatsApp message" problem: instead of someone texting you "can you add this movie to Plex," they request it themselves through Jellyseerr, you approve it (or auto-approve), and the *arr stack handles the rest.
The hard part: connecting to Radarr/Sonarr and Jellyfin
The install is five minutes. The hard part is configuring the connections to Jellyfin, Radarr, and Sonarr so that requests flow through the entire pipeline without manual intervention.
- Request flow
- → Jellyseerr notifies user
- "Your movie is ready"
- Connection chain
- Jellyseerr → Jellyfin
- http://<nas-ip>:8096 (library sync, user auth)
- Jellyseerr → Radarr
- http://<nas-ip>:7878 + API key
- Jellyseerr → Sonarr
- http://<nas-ip>:8989 + API key
- Jellyseerr → Prowlarr
- (indirect, via Radarr/Sonarr)
The mistake everyone makes: using localhost as the hostname for Jellyfin, Radarr, or Sonarr. On TrueNAS Scale with Docker networking, localhost inside the Jellyseerr container points to Jellyseerr itself. Use the NAS IP.
- Correct connection chain
- Jellyseerr → http
- //192.168.1.x:8096 (NAS IP + Jellyfin port)
- Jellyseerr → http
- //192.168.1.x:7878 (NAS IP + Radarr port)
- Jellyseerr → http
- //192.168.1.x:8989 (NAS IP + Sonarr port)
- Wrong connection chain
- Jellyseerr → http
- //localhost:8096 (Jellyseerr talks to itself)
- Jellyseerr → http
- //jellyfin:8096 (only works if on host networking)
How to install it
Docker Compose (TrueNAS Scale custom app)
services:
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
ports:
- 5055:5055
volumes:
- /mnt/apps/jellyseerr/config:/config
After deploy:
# Open the web UI at http://<nas-ip>:5055
# First-time setup wizard guides you through connections
Initial configuration
- Open Jellyseerr at
http://<nas-ip>:5055 - Sign in with your Jellyfin/Plex account (or create a local account)
- Setup wizard runs:
- Jellyfin URL:
http://<nas-ip>:8096 - Jellyfin API key: from Jellyfin → Settings → API Keys
- Radarr URL:
http://<nas-ip>:7878+ API key from Radarr → Settings → General - Sonarr URL:
http://<nas-ip>:8989+ API key from Sonarr → Settings → General - Test connections → all three should return "Successfully connected"
- Import libraries → Jellyseerr scans Jellyfin libraries to know what is already available
Configuration that matters
Connection settings
| Service | URL | Where to find API key |
|---|---|---|
| Jellyfin | http://<nas-ip>:8096 |
Jellyfin → Settings → API Keys |
| Radarr | http://<nas-ip>:7878 |
Radarr → Settings → General → API Key |
| Sonarr | http://<nas-ip>:8989 |
Sonarr → Settings → General → API Key |
Request settings
| Setting | Recommended value | Why |
|---|---|---|
| Default language profile | Original | Matches most users' preference |
| Default quality profile | HD-1080p | Balances quality and storage |
| Auto-approve requests | Off (initially) | Review requests before approving |
| Enable 4K requests | Off (unless you have the storage) | 4K files are 3–5x larger |
| Maximum queue size | 50 per user | Prevents abuse |
User permissions
| Permission | Description |
|---|---|
| Request | Can submit movie/TV requests |
| Approve | Can approve requests from other users |
| Auto-approve | Requests are approved automatically |
| Admin | Full access to settings and all requests |
Notifications
| Agent | Setup |
|---|---|
| Settings → Notifications → Email → SMTP server details | |
| Discord | Settings → Notifications → Discord → Webhook URL |
| Telegram | Settings → Notifications → Telegram → Bot token + chat ID |
| Webhook | Settings → Notifications → Webhook → Custom URL + template |
What I'd tell anyone building this
-
Jellyseerr is the open-source alternative to Overseerr. Overseerr stopped active development; Jellyseerr is the maintained fork with Jellyfin support. If you run Jellyfin, use Jellyseerr. If you run Plex only, Overseerr still works but Jellyseerr is the better long-term choice.
-
The API keys are mandatory. Jellyseerr cannot communicate with Radarr, Sonarr, or Jellyfin without valid API keys. If any connection fails, check that the API key matches what is in the target app's Settings → General.
-
Auto-approve is useful but risky. For a personal server with one user, auto-approve saves time. For a shared server with multiple users, manual approval prevents someone from requesting 200 movies and filling your disk.
-
Jellyseerr imports Jellyfin libraries to know what you already have. If a user requests a movie that is already in Jellyfin, Jellyseerr shows "Available" instead of "Request." This prevents duplicate downloads.
-
The request queue is the bottleneck. If Radarr or Sonarr is not running, requests queue in Jellyseerr but do not download. Check that all three apps are running before enabling requests.
Get it
Links:
Quick install (Docker Compose):
services:
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
ports:
- 5055:5055
volumes:
- /mnt/apps/jellyseerr/config:/config
Log in at http://<nas-ip>:5055, connect Jellyfin, Radarr, and Sonarr via the setup wizard, and start requesting.