Taking Control of Your Media Library
If you run a Plex or Jellyfin server for friends and family, you already know the chaos that follows: messages at odd hours asking whether you can add a specific movie, threads going cold because you forgot someone’s request, and zero visibility into what’s already in your queue. Jellyseerr was built to solve exactly that problem. It gives your users a clean, Netflix-style interface to browse and request media, while you get a centralized dashboard that talks directly to your existing download stack.
Jellyseerr is a fork of Overseerr, retooled to work with Jellyfin and Emby alongside Plex. It connects to Radarr and Sonarr under the hood, so when a request gets approved, the acquisition pipeline kicks off automatically without any manual input from you. The result is a media server that largely runs itself – at least on the request side.

What You Need Before You Start
Jellyseerr does not operate in isolation. Before you install it, you need a working Jellyfin, Emby, or Plex server already running on your network. You will also want at least one instance of Radarr for movies or Sonarr for TV series – preferably both – since Jellyseerr routes approved requests directly to those services. If neither is set up yet, get those running first. Jellyseerr without a connected download manager is essentially a request form with nowhere to send the data.
On the hardware side, Jellyseerr is lightweight. It runs comfortably on a Raspberry Pi 4, a small home server, a VPS, or any machine already hosting your media stack. Docker is the cleanest installation path and what this guide covers. Make sure Docker and Docker Compose are installed, and that your user has permission to run Docker commands without sudo if you prefer that workflow.
Installing Jellyseerr with Docker Compose
Create a directory for Jellyseerr’s config files. Something like /opt/jellyseerr or a folder inside your existing Docker project directory works fine. Inside that directory, create a docker-compose.yml file. The official image is published as fallenbagel/jellyseerr on Docker Hub and stays well maintained. Your compose file should map port 5055 on the host to port 5055 in the container, and mount a local config directory so your settings survive container restarts.
A minimal compose file looks like this:
- image: fallenbagel/jellyseerr:latest
- container_name: jellyseerr
- ports: “5055:5055”
- volumes: ./config:/app/config
- environment: TZ=America/New_York (adjust to your timezone)
- restart: unless-stopped
Run docker compose up -d from that directory. Docker will pull the image and start the container. Within a few seconds, Jellyseerr should be reachable at http://your-server-ip:5055. If you hit the address and see nothing, check that port 5055 is not blocked by a firewall rule – ufw allow 5055 fixes that on Ubuntu-based systems.
The first time you load the web interface, Jellyseerr walks you through a setup wizard. You will sign in with your Jellyfin, Emby, or Plex account to establish the media server connection, then add your Radarr and Sonarr instances one by one. Each service needs its URL and API key – you will find those inside each app under Settings. Test each connection before saving. The wizard will confirm whether Jellyseerr can reach the service, which saves troubleshooting time later.

Configuring Requests, Permissions, and Notifications
Once the initial setup is done, the real configuration work begins in the admin panel. Jellyseerr pulls your existing user list from your media server automatically – anyone with a Jellyfin or Plex account connected to your server can log into Jellyseerr with those same credentials. By default, new users land with limited permissions, meaning their requests require manual approval from you before anything gets sent to Radarr or Sonarr. That is a sensible default, especially if you are opening the service to people outside your household.
Auto-approval is available on a per-user basis. Navigate to the Users section, click any account, and you can toggle auto-approval for movies, TV shows, or both. You can also set request limits – for instance, capping any single user at a certain number of movie requests per week. This matters if storage space is finite or your download bandwidth has real limits. Without a cap, an enthusiastic user can queue up dozens of requests at once and saturate your setup for days.
Notification support in Jellyseerr is broader than most self-hosters expect. The settings panel includes integrations for email, Discord webhooks, Slack, Telegram, Pushover, and several others. Setting up a Discord webhook is the fastest option: create a webhook URL in your Discord server settings, paste it into Jellyseerr, and from that point on, every request and status update lands in a channel of your choice. You get notified when someone requests something, when approval is needed, and when the media is finally available – all without checking the dashboard manually.
One configuration detail worth getting right early is the default quality profile inside your Radarr and Sonarr instances. Jellyseerr passes requests through to those services using whatever profile you have set as the default, unless you configure a specific override per user or per library. If you want 4K content handled separately from 1080p – routing them to different Radarr instances with different root folders – Jellyseerr supports that through its “4K” request type, which you can enable in settings and wire to a separate Radarr connection. That separation keeps your libraries clean and your storage paths organized without manual sorting on your end.

Exposing Jellyseerr beyond your local network is worth doing if family or friends live elsewhere and you want them to browse and request without needing a VPN connection. A reverse proxy like Nginx Proxy Manager or Caddy sitting in front of Jellyseerr handles HTTPS termination and gives you a proper domain rather than a bare IP and port. If you are already running other self-hosted services – including a self-hosted WireGuard VPN – you may prefer to keep Jellyseerr internal and require users to connect through the VPN instead, which limits your attack surface considerably. Either path works; the choice comes down to how much friction you are willing to add for your users versus how locked down you want the access to be.
Whichever exposure method you choose, enable authentication in Jellyseerr’s settings and avoid leaving the admin account with a weak password. The app does not enforce a password strength policy, so that responsibility sits with you. A forgotten admin password on a publicly reachable instance is a problem you do not want to debug at midnight when someone’s weekend movie request is suddenly the least of your concerns.
Frequently Asked Questions
Does Jellyseerr work with Plex as well as Jellyfin?
Yes. Jellyseerr supports Plex, Jellyfin, and Emby. You choose your media server during the initial setup wizard and authenticate using that server’s credentials.
Can users request media without admin approval?
By default, all requests require admin approval. You can enable auto-approval on a per-user basis inside the Users section of the Jellyseerr admin panel.
What port does Jellyseerr run on by default?
Jellyseerr runs on port 5055 by default. You can remap this in your Docker Compose file if that port conflicts with another service on your host.
Do I need both Radarr and Sonarr connected?
No. You can connect just Radarr for movies or just Sonarr for TV series. Jellyseerr will only offer request types for the services you have configured.





