Taking Control of Your Media Requests
Managing a home media server gets complicated fast once more than one person is using it. Requests come in through text messages, sticky notes, or casual mentions at dinner, and keeping track of what needs to be downloaded, what is already queued, and what got lost in the shuffle becomes a full-time job. Jellyseerr solves that by giving every user on your network a clean web interface to browse, request, and track movies and TV shows – with all the backend work handled automatically through integrations with Radarr and Sonarr.
Jellyseerr is a fork of Overseerr, built specifically for Jellyfin and Emby users rather than Plex. It connects directly to your existing media automation stack, so when someone submits a request, it flows straight into your download client without you lifting a finger. Setup takes under an hour for anyone already running Docker, and the result is a proper request management system that would not look out of place on a commercial streaming platform.

What You Need Before You Start
The prerequisites are minimal but non-negotiable. You need a machine running Docker – whether that is a Raspberry Pi, a home server, or a spare desktop does not matter much. Alongside Docker, you need at least one of the following already configured and reachable on your network: Jellyfin or Emby for media playback, Radarr for movie automation, and Sonarr for TV series. Jellyseerr can technically run without Radarr or Sonarr attached, but without them it cannot actually fulfill requests – it just logs them and waits.
You also need a rough understanding of Docker Compose, since that is the cleanest way to deploy Jellyseerr. If you have already gone through the process of self-hosting something like AdGuard Home, the workflow here will feel familiar. Have your Radarr and Sonarr API keys ready before you begin, along with the local IP addresses and port numbers for each service.
Deploying Jellyseerr with Docker Compose
Create a new directory for Jellyseerr on your server. Inside it, create a file called docker-compose.yml and paste in the following configuration block. This sets up the container with a persistent config volume so your settings survive restarts and updates.
version: "3"
services:
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=America/New_York
ports:
- 5055:5055
volumes:
- ./config:/app/config
restart: unless-stopped
Adjust the TZ value to match your local timezone. The port 5055 is Jellyseerr’s default and can stay as-is unless something else on your machine is already using it. Once the file is saved, run docker compose up -d from that directory. Docker will pull the image, create the container, and start the service in the background. Give it thirty seconds, then open a browser and navigate to http://your-server-ip:5055. If everything worked, you will see the Jellyseerr setup wizard.
The wizard walks you through connecting your Jellyfin or Emby instance first. Enter the server URL – use the local IP address, not localhost, so Jellyseerr can reach it as an external service from inside the container. Provide your admin credentials and let Jellyseerr pull in your existing library data. This sync tells the app what content you already own, so it can mark those titles as available instead of flagging them as missing requests.

Connecting Radarr, Sonarr, and Managing Requests
After the media server is linked, the wizard moves to Radarr and Sonarr configuration. For each service, you enter the base URL, the API key found in that service’s settings panel, and then click the Test button. A successful test loads your existing quality profiles and root folders directly from the service. Pick the quality profile and root folder you want Jellyseerr to use as the default when forwarding requests – you can override these on a per-request basis later through the admin panel.
Once the wizard completes, you land on the main dashboard. It pulls in trending titles from The Movie Database API automatically, giving users something to browse rather than staring at a blank search bar. Every title shows its current status: available, already requested, or not in the library. Users submit requests with one click, and Jellyseerr forwards those to Radarr or Sonarr without any admin intervention. The admin account gets a notification, and the request shows up in the management queue where it can be approved manually or processed automatically depending on your permission settings.
Permission management is where Jellyseerr earns its place as a proper multi-user tool. The admin can set individual users to auto-approve status, meaning their requests go straight to the download queue without review. Everyone else waits in the queue for admin sign-off. You can also cap how many requests a user can submit per week, which keeps one enthusiastic family member from flooding the queue with every title they see on a list somewhere. User accounts are imported directly from your Jellyfin or Emby instance, so there is no separate registration process to manage.
Notifications work through a long list of supported services: email, Discord, Slack, Telegram, Pushover, and a handful of others. Setting up a Discord webhook takes about two minutes and means every approved or declined request sends an automatic message to whatever channel you designate. For households where the person running the server does not want to monitor a separate dashboard constantly, this is the detail that makes the whole system actually work day to day. Requests do not get forgotten because the notification exists outside the tool itself.

One limitation worth knowing upfront: Jellyseerr has no built-in download client of its own. It depends entirely on Radarr and Sonarr to do the actual work of finding and grabbing content. If those services are misconfigured or their indexers are not working, Jellyseerr will appear to accept requests successfully while nothing actually happens on the backend. The request queue in Jellyseerr shows status updates pulled from Radarr and Sonarr, so a request stuck at “pending” for longer than expected is usually a sign to check the logs in those tools rather than in Jellyseerr itself. Building in a quick indexer test in Radarr and Sonarr before going live with Jellyseerr will save a lot of confusion when the first round of requests comes in from users who expect their content to appear within a reasonable window.





