Seerr and Jellyfin: setup guide for the Jellyseerr replacement (2026)
Seerr replaced Jellyseerr and Overseerr. Install it with Docker, connect Jellyfin, Radarr and Sonarr, and request from inside your Jellyfin app.
By Swiftly Player11 min read
Disclosure: we build Swiftly Player, one of the clients in this article. We point out where other apps do better.
Checked in September 2026. Details on Seerr come from its official documentation and the seerr-team/seerr repository on GitHub. Seerr moves quickly; check the linked pages before relying on a specific setting name or default value.
TL;DR
- Jellyseerr and Overseerr merged into a single project called Seerr. The merger was announced on 10 February 2026; Seerr's codebase combines Overseerr's functionality with Jellyseerr's Jellyfin and Emby support.
- Seerr is a request and discovery manager: users browse what's trending or search for a title, request it, and Seerr passes approved requests to Radarr and Sonarr to download.
- Install with Docker using the official
ghcr.io/seerr-team/seerrimage; the config volume needs to be owned by UID 1000 before the first start. - If you're moving from Jellyseerr or Overseerr, Seerr migrates your existing data automatically on first start — but back up first.
- Several Jellyfin clients, including Swiftly Player, let users request titles through Seerr without leaving the app. Support varies by client and sometimes by build; check each one before assuming it's there.
What Seerr does
Seerr describes itself as "a free and open source software application for managing requests for your media library" (docs.seerr.dev). In practice: a user opens Seerr (as its own web page, or from inside a supporting Jellyfin client), searches for or browses a movie or show that isn't in the library yet, and submits a request. Depending on how permissions are set, that request either goes straight to Radarr or Sonarr to be downloaded, or first needs approval from an admin.
Seerr connects to one of three media servers — Jellyfin, Plex or Emby — to know what you already have, so it doesn't show titles you've already got as requestable. It syncs library contents from that server on a schedule and on demand.
Background: how Jellyseerr and Overseerr became Seerr
Overseerr was originally built for Plex. Jellyseerr started as a fork of Overseerr by Fallenbagel that added Jellyfin and Emby support. Both projects were popular, actively maintained, and increasingly overlapping in what they did.
On 10 February 2026, the two teams announced they were merging into one project and one codebase, called Seerr, hosted at github.com/seerr-team/seerr. The release announcement describes Seerr as combining "all existing Overseerr functionalities with the latest Jellyseerr features, along with Jellyfin and Emby support" in a single shared codebase, rather than three separate projects tracking each other's features. The Jellyseerr repository's README now points users to that same announcement to explain the change, and it remains up as a reference; new development happens in seerr-team/seerr.
If you are currently running Jellyseerr or Overseerr, nothing breaks on its own — those images keep working. But new features and fixes now land in Seerr, not in the old repositories, so migrating is the way to keep getting updates.
Installing Seerr with Docker
Per Seerr's Docker installation docs, the container runs as the node user, UID 1000, and needs its config directory to already exist and be owned by that UID before the first start:
mkdir -p /path/to/appdata/seerr/config
chown -R 1000:1000 /path/to/appdata/seerr/configPaste it into a terminal and press Enter.
Then the compose file:
services:
seerr:
image: ghcr.io/seerr-team/seerr:latest
container_name: seerr
init: true
environment:
- LOG_LEVEL=info
- TZ=Europe/Berlin
ports:
- 5055:5055
volumes:
- /path/to/appdata/seerr/config:/app/config
restart: unless-stopped
security_opt:
- no-new-privileges
cap_drop:
- ALLThe docs call out init: true as required for the container's init process to behave correctly under Compose, and warn that if the config volume mount is set up incorrectly, "your Seerr settings/data will not be persisted when the container is recreated." On Windows, the docs recommend named volumes instead of host-path bind mounts, to avoid database corruption, and note that WSL2 is required.
Start it, then open http://<server-ip>:5055 and follow the setup screens to pick a media server and sign in as its administrator.
Connecting Jellyfin
Seerr's media server settings docs walk through the fields:
- Email address — used only for Seerr's own notifications, password resets and local sign-in. It is not tied to your Jellyfin account in any way.
- Internal URL — the address Seerr itself uses to reach Jellyfin, which "should be accessible from the machine running Seerr." If Jellyfin runs in its own container on a bridge network,
localhostor127.0.0.1will resolve to the Seerr container itself, not to Jellyfin — the docs point out this exact trap. Put both containers on the same custom Docker network and use Jellyfin's container name as the hostname instead. - External URL — the address your users actually use to reach Jellyfin. Seerr uses it to build links for playback and avatars, so it should be whatever address a real client would connect with — a Tailscale name, a reverse-proxied domain, whatever you've set up for remote access.
- Port and SSL — default port 8096, with an option to enable SSL if Jellyfin is behind HTTPS.
After saving, Seerr lets you choose which Jellyfin libraries to scan. It syncs automatically roughly every 24 hours, and the docs mention a manual "Sync Libraries" button and a full manual scan option for the first setup, useful if a freshly added library doesn't show up right away.
Connecting Radarr and Sonarr
Requests don't do anything on their own — Seerr hands them off to Radarr for movies and Sonarr for TV. Per Seerr's services settings docs:
- In Seerr, go to Settings → Services and add a Radarr or Sonarr server.
- Enter the hostname or local IP address — if Seerr and the *arr app are on the same network, the local IP works; otherwise use a resolvable hostname.
- Enter the port. Radarr defaults to 7878, Sonarr to 8989.
- Enable HTTPS if your *arr instance uses it, including support for self-signed certificates.
- Paste the API key, found in Radarr or Sonarr under Settings → General → Security.
- Mark at least one Radarr server and one Sonarr server as Default — the docs are explicit that without a default, "requests to Radarr/Sonarr" will not go through.
Only Radarr and Sonarr v3 and v4 are supported; the docs say a v2 instance needs to be upgraded first.
User import and permissions
You don't have to manually recreate every Jellyfin user in Seerr. Per Seerr's user documentation, an admin can click Import Jellyfin Users to pull in everyone with access to the connected Jellyfin server at once. But the docs also note this step is optional: "any user with access to the Jellyfin server can log in to Seerr even if they have not been imported" — as long as New Jellyfin Sign-In is left enabled in Settings → Users, users can just sign in with their existing Jellyfin credentials the first time and get created automatically.
New users, whether imported or self-registered on first sign-in, receive whatever default permissions you've configured under Settings → Users. Importing users specifically requires the admin doing the import to have the Manage Users permission themselves.
Seerr also supports local accounts (email and password, unrelated to any media server login) alongside media-server sign-in, and both can be toggled independently in Settings → Users if you want to restrict how people get in.
Request limits
Per Seerr's user settings docs, you set global default quotas for movies and TV separately: a quota limit (how many items) and a quota period in days (the rolling window it applies to). A limit of zero, or left blank, means unlimited for that media type. Individual users can be given their own override that replaces the global default; if a user's own quota fields are left empty, they simply inherit whatever the global setting currently is.
One exception: users with the Manage Users permission are exempt from quotas entirely, since that same permission lets them submit requests on other users' behalf.
Migrating from Jellyseerr
If you're moving an existing Jellyseerr (or Overseerr) install, Seerr's migration guide opens with a warning worth repeating exactly: "Before doing anything you should backup your existing instance so that you can rollback in case something goes wrong."
With that done, the guide describes an automatic migration: "No manual migration steps are required. The system automatically migrates your instance the first time you start using the Seerr codebase." In Docker terms, that means:
- Back up your Jellyseerr config volume.
- Change the image in your compose file from
fallenbagel/jellyseerr(or the Overseerr equivalent) toghcr.io/seerr-team/seerr:latest. - Add
init: trueto the service definition. - Point the existing config volume at the new container's
/app/configpath. - Since Seerr runs as UID 1000 rather than root, fix ownership on the existing data before starting it:
docker run --rm -v /path/to/appdata/config:/data alpine chown -R 1000:1000 /data. - Start the container and confirm your requests, users and service settings carried over before removing the old image.
The guide has separate notes for Unraid (copy the appdata folder into a new Seerr-named directory first) and TrueNAS (rsync ixVolume data with UID/GID 568:568 before switching), which are worth reading directly if you're on either platform.
Which Jellyfin clients let you request through Seerr
Requesting from inside a playback client, instead of opening Seerr's own web page separately, is a convenience feature that not every client has — and it sometimes only exists in certain build variants of the same app. Based on each project's own README:
- Swiftly Player lists "Request through Seerr — ask for a movie or show that is missing, without leaving the app" in its README, under the app's search and discovery features.
- Streamyfin's README lists "Seerr (formerly Jellyseerr) integration: Request media directly in the app," and its companion Jellyfin plugin adds an option for admin-approved automatic sign-in to Seerr using an API key, with the plugin's own docs warning that any signed-in Jellyfin user can read that key, so it should only be set on servers where every user is trusted.
- Wholphin's README lists "Integration with Seerr to discover new movies and TV shows," with a note that this is "only available when installed from GitHub or the Play store" — not from its Amazon Appstore build.
- Moonfin's README describes "Discovery with Seerr built into the details screen, with trending, popular, and upcoming rows and request status overlays."
- JellyWatch Player (the Android TV/mobile playback client, distinct from the separate JellyWatch server-monitoring app of the same family) lists Seerr integration under browsing and discovery: "Discover trending titles and request movies or TV shows directly from your remote or phone. Track request status in real time."
If a client you use isn't listed here, that means it wasn't checked for this article, not that it lacks the feature — check that project's own README before assuming either way.
FAQ
Is Jellyseerr dead?
The Jellyseerr repository is still up and the app still runs, but active development has moved to Seerr, which merges Jellyseerr and Overseerr into one project. New features and fixes go into seerr-team/seerr going forward.
Do I lose my requests and users if I switch from Jellyseerr to Seerr?
No, according to Seerr's own migration guide, the switch migrates your existing instance automatically the first time it starts on the new codebase. Back up your config volume first regardless, in case something goes wrong.
Can users request movies without an admin approving each one?
Yes, if you don't require approval for their permission level. Approval requirements and per-media-type quotas are both configured under Settings → Users, and are separate from whether the user was imported or signed up themselves.
Does Seerr work with Plex and Emby too, or only Jellyfin?
Seerr supports Jellyfin, Plex and Emby as the media server it connects to, picked once during initial setup.
Why can't Seerr reach my Jellyfin server when both run in Docker?
The most common cause is using localhost or 127.0.0.1 as Seerr's internal URL for Jellyfin while both run in separate containers on a bridge network — that address resolves to the Seerr container itself. Put both containers on the same custom Docker network and use Jellyfin's container name as the hostname.
Which Jellyfin apps can I use to request a movie without opening a separate Seerr page?
Swiftly Player, Streamyfin, Wholphin, Moonfin and JellyWatch Player all document a built-in Seerr integration, though details differ — Wholphin's, for instance, is missing from its Amazon Appstore build. Check the specific app's own documentation for its current state.
Summary
Jellyseerr and Overseerr are now one project, Seerr, announced in February 2026 and hosted at seerr-team/seerr. Installing it with Docker means an image running as UID 1000, a config volume you own before the first start, and a straightforward connection to Jellyfin plus at least one default Radarr and Sonarr server. User import is optional, since anyone with Jellyfin access can sign in and get created automatically; quotas and approval requirements are both set per user or globally. Migrating an existing Jellyseerr install is automatic on first start, provided you back up first. A growing list of Jellyfin clients, including Swiftly Player, let people request titles without leaving the app — but support and completeness vary, so check the client's own README.


