How to Install Jellyseerr (Let the Family Request Films and Shows for Jellyfin)

Jellyfin (42) holds what you've ripped and bought. The question it generates is "can you get…?" — in person, by text, repeatedly. Jellyseerr is the request page: a Netflix-like browse of films and shows with posters and trailers, each with a Request button, that shows what's already in the library, lets you approve or auto-approve per user, sets quotas, and notifies you (and them) when it's done. Users sign in with their Jellyfin accounts, so there's nothing new to remember.
Quick reference
| Task | What |
|---|---|
| Folder | ~/docker/jellyseerr/compose.yaml |
| Web | http://server-ip:5055 |
| Setup | sign in as Jellyfin admin → Jellyfin server URL → sync libraries |
| Users | imported from Jellyfin; permissions and quotas per user |
| Notifications | Settings → Notifications → ntfy / Telegram / email / Discord |
| Fulfilment | by hand (buy/rip/download legally) — or the *arr apps if you run them |
1. The compose file
mkdir -p ~/docker/jellyseerr/config && cd ~/docker/jellyseerr
nano compose.yaml
services:
jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
ports:
- "5055:5055"
environment:
LOG_LEVEL: info
TZ: Europe/London
volumes:
- ./config:/app/config
restart: unless-stopped
docker compose up -d
sudo ufw allow from 192.168.1.0/24 to any port 5055
2. Setup
Open http://192.168.1.50:5055. Choose Jellyfin, enter the Jellyfin URL (http://192.168.1.50:8096), sign in with your Jellyfin admin account. Sync libraries — tick Movies and TV. Skip the Radarr/Sonarr step (next). Finish.
The home page is now a discovery feed: trending, popular, upcoming, with a green tick on anything already in your Jellyfin.
3. Users and rules
Settings → Users → Import Jellyfin users: every family account appears. Per user: Request permission, Auto-approve (for the ones you trust), Movie/TV request quotas (3 a week for the kids), and whether they can request 4K.
Settings → General: hide already-available titles, region and language, Discover customisation (a kids' row from a TMDB list).
4. Requests
A user searches, clicks Request (for TV: which seasons). You get a notification; Requests page → Approve or Decline with a note. When the title appears in Jellyfin (library scan), Jellyseerr marks it Available and notifies the requester. Users see their own request status and the Issues button to report "subtitles wrong" or "won't play" — which lands with you instead of in the group chat.
5. Notifications
Settings → Notifications: ntfy (93) with your server URL, topic and token — a message per request, approval and availability; Telegram (118) the same; Email via SMTP (49) for users who want it; Webhook into n8n (77) for anything else. Each user can also set their own notification preferences.
6. Fulfilling requests
Jellyseerr just tracks. You fulfil by buying the disc or download and ripping/copying into the media folder (42) — when the file appears, the request completes. If you run Radarr/Sonarr for your own content or legal sources (public-domain archives, Creative Commons, your purchases), Jellyseerr can hand approved requests to them automatically; configure them under Settings → Services with their API keys and root folders.
Behind the proxy
requests.example.com → 127.0.0.1:5055 (28), HTTPS. It's fine on the internet behind the Jellyfin login, so relatives who stream (42) can request from their sofa. Rate-limit or Authelia (95) if you prefer.
Troubleshooting
Jellyfin sign-in fails. The Jellyfin URL must be reachable from inside the container (LAN IP, not localhost); and the user needs a password set in Jellyfin.
Available titles still show as requestable. Library sync hasn't run — Settings → Jellyfin → Sync libraries, and check the scan schedule.
Users imported but can't log in. They're disabled in Jellyfin, or Jellyseerr's login is set to local accounts; use Sign in with Jellyfin.
Posters missing. Outbound access to TMDB from the container.
Wrapping up
One container, Jellyfin sign-in, users imported with quotas, ntfy for the requests. The family browses and clicks; you approve, fulfil, and the library's "already have it" tick stops the same request coming twice. "Can you get…" becomes a queue you look at once a week.
