
Jellyseerr (Seerr)
Request management and media discovery for Jellyfin, Emby, and Plex
Overview
Jellyseerr (Seerr) is a free and open-source request management and media discovery tool built to work with your existing Jellyfin, Emby, or Plex media server. It provides an intuitive interface for users to discover and request movies and TV shows, which are then automatically sent to Sonarr and Radarr for download. With user quota management, approval workflows, and extensive notification support (Discord, Slack, email, Telegram), Seerr streamlines content requests for shared media servers.
QuickBox Pro installs Jellyseerr per user from the official seerr-team/seerr GitHub repository, building with Node.js 22.11.0 and pnpm. The installer creates isolated virtual environments at /opt/username/lib/nodejs/Jellyseerr/.venv, configures systemd service management, and sets up nginx reverse proxy access at /username/jellyseerr.
Deprecated -- Use Seerr
Jellyseerr has been unified into Seerr, the canonical media request manager for Plex, Jellyfin, and Emby. New installations should use qb install seerr -u username. Existing Jellyseerr installations are automatically migrated when you run qb update jellyseerr -u username. This page is retained for reference only.
Key features
🎬 Multi-Server Support
Native integration with Jellyfin, Emby, and Plex with automatic library scanning
📡 Sonarr/Radarr Integration
Automatic request forwarding to media management tools with quality profile selection
👥 User Management
Request quotas, approval workflows, and granular permissions per user
🔔 Rich Notifications
Discord, Slack, email, Telegram, and Pushover notifications for requests and approvals
🔍 Media Discovery
Browse popular, trending, and upcoming content from TMDb with rich metadata
🧩 Per-User Service
systemd unit jellyseerr@username with isolated Node.js venv and port allocation
🔗 Reverse Proxy Ready
nginx maps /username/jellyseerr to 127.0.0.1:5055 with automatic path rewriting
🔒 TLS Domain Support
Optional domain setup via qb install lecert --jellyseerr -d domain with SSL certificates
When to use it
Prerequisites
- Need a per-user media request app for Plex, Jellyfin, or Emby
- Want Seerr served under the QuickBox user path instead of a separate vhost
- Require user quota management and approval workflows for content requests
- Need automated notifications for request status updates across multiple channels
What you get
- Install via
qb install jellyseerr -u usernameto clone seerr-team/seerr and build with pnpm - Default nginx reverse proxy publishes
https://host/username/jellyseerrto port 5055 - Optional domain support via
qb install lecert --jellyseerr -d domain -u usernamewith SSL - Per-user systemd service
jellyseerr@usernamewith Node.js 22.11.0 venv and auto-start on boot
Installation
Install from the QuickBox CLI
qb install jellyseerr -u usernameInstall with a domain (optional)
To publish Seerr at https://domain, combine lecert with the Jellyseerr flag:
qb install lecert --jellyseerr -d domain -u usernameOr, run on the install of Jellyseerr using the domain flag:
qb install jellyseerr -u username -d 'domain'The lecert workflow copies subdomain.nginx.conf, injects the Seerr port from the database, and writes /etc/nginx/sites-enabled/username.jellyseerr.conf with the provided domain and certificate paths.
Initial Configuration
First-Time Setup
On first access, Seerr prompts you to connect your media server:
- Open Seerr web interface at
http://host:port-https://host/username/jellyseerr - Select Media Server Type: Choose Jellyfin, Emby, or Plex
- Authenticate: Sign in with your media server account
- Select Server: Pick your media server from the list (for Plex/Emby)
- Library Sync: Seerr automatically scans your media libraries
- Admin Assignment: First user to sign in becomes the administrator
QuickBox Dashboard Integration
Seerr is automatically integrated into your QuickBox dashboard. Find it in the Service Control panel with port and status information. Click the LAUNCH icon to open the web interface.
Connect Sonarr and Radarr
Configure media management integrations for automatic request handling:
- Navigate to Settings → Services in Seerr
- Add Radarr Server:
- Default Server - Enable for primary Radarr instance
- Server Name - Descriptive name (e.g., “QuickBox Radarr”)
- Hostname or IP -
localhost - Port - Your Radarr port (default
7878) - Use SSL - Uncheck (reverse proxy handles SSL)
- API Key - Copy from Radarr → Settings → General → API Key
- Quality Profile - Select default profile
- Root Folder - Select default media path
- Minimum Availability - Released, In Cinemas, or Announced
- Click Test to verify connection, then Save
- Add Sonarr Server:
- Follow same steps as Radarr
- Port - Your Sonarr port (default
8989) - API Key - Copy from Sonarr → Settings → General → API Key
- Quality Profile - Select default profile (e.g., “HD-1080p”)
- Root Folder - Select TV shows path
- Season Folder - Enable for organized library structure
- Click Test, then Save
Configure Notifications
Set up notification channels for request updates:
- Go to Settings → Notifications
- Discord Integration (recommended):
- Create Discord webhook in your server
- Enter Webhook URL
- Enable notification types:
- Media Requested
- Media Approved
- Media Available
- Media Failed
- Click Test to send test notification
- Save Changes
- Email Notifications (optional):
- Configure SMTP Settings (host, port, credentials)
- Set From Email Address
- Enable desired notification types
- Save Changes
Access and authentication
URL / route
- Default:
http://host:port-https://host/username/jellyseerr(served by/etc/nginx/software/username.jellyseerr.conf→127.0.0.1:5055) - With domain:
https://domain/(served by/etc/nginx/sites-enabled/username.jellyseerr.confwhen installed with--jellyseerr -d domainfrom lecert, orqb install jellyseerr -u username -d domain)
Dashboard Quick Access
Find Seerr in your QuickBox dashboard Service Control panel with a direct LAUNCH button, port information, and service status indicator.
Security notes
- The service runs as
usernameviajellyseerr@username.serviceand reads environment settings from/opt/username/Jellyseerr/env.conf - TLS is provisioned when lecert installs certificates into
/etc/nginx/ssl/domain/and binds them in the generated vhost - First user to sign in becomes the administrator with full permissions
- Additional users inherit permissions based on their media server role
Configuration and files
Common tasks
Service Management
Seerr runs as a per-user systemd service jellyseerr@username:
# Start/stop/restart service
systemctl start jellyseerr@username
systemctl stop jellyseerr@username
systemctl restart jellyseerr@username
# Check service status
systemctl status jellyseerr@username
# View live logs
journalctl -u jellyseerr@username -f
# Enable/disable auto-start on boot
systemctl enable jellyseerr@username
systemctl disable jellyseerr@usernameApplication Management
Use QuickBox CLI for application updates and maintenance:
# Update to latest release
qb update jellyseerr -u username
# Reinstall (preserves database)
qb reinstall jellyseerr -u username
# Remove application
qb remove jellyseerr -u username
# View help
qb help jellyseerrnginx Management
Reload nginx after configuration changes:
# Test configuration
sudo nginx -t
# Reload nginx
sudo systemctl reload nginxFAQ
PORT=5055 in /opt/username/Jellyseerr/env.conf and records the same port in the QuickBox database for nginx templates and dashboard links. This is a fixed port per user./etc/systemd/system/jellyseerr@username.service. Reverse proxy: /etc/nginx/software/username.jellyseerr.conf for the default path, or /etc/nginx/sites-enabled/username.jellyseerr.conf when installed with lecert --jellyseerr -d domain.seerr-team/seerr, checks out the latest tagged release, installs Node.js 22.11.0 with pnpm inside /opt/username/lib/nodejs/Jellyseerr/.venv, runs pnpm install --frozen-lockfile, builds with pnpm build, and then starts dist/index.js under the target user.settings.json to allow browser push notifications for request updates. You can disable this in Seerr settings if not needed.Best practices
Do
- Use
qb install jellyseerr -u username(add-d domainwhen needed) so ports, nginx, and systemd stay in sync - Check service health with
systemctl status jellyseerr@usernameand tail logs withjournalctl -u jellyseerr@username -f - Reload nginx after adding or removing a domain so the Seerr location blocks are active:
sudo systemctl reload nginx - Set up Discord or email notifications for request updates to keep users informed of content availability
- Configure user quotas to prevent request spam (5-10 requests per week is a good starting point)
- Enable approval workflows for non-admin users to moderate content requests before they hit Sonarr/Radarr
- Regularly sync media server libraries to keep Seerr metadata updated and accurate
- Use separate Sonarr/Radarr quality profiles for different user tiers if managing a shared server
- Backup
/opt/username/Jellyseerr/config/before major updates or reinstalls to preserve database and settings
Don't
- Avoid editing generated nginx files by hand—rerun
qb reinstall jellyseerr -u usernameif you need to refresh templates - Do not swap
PORTinenv.confwithout updating the stored port via qb workflows; nginx and dashboard links rely on the recorded value - Don't grant admin access to all users—use request quotas and approval workflows to manage content requests
- Don't disable approval workflows without quota limits—prevents request spam and storage overload
- Don't configure multiple default servers—causes request routing conflicts between Sonarr/Radarr instances
- Don't ignore failed notifications—check logs and fix webhook/SMTP issues to keep users informed
- Don't forget to configure root folders in Sonarr/Radarr—requests will fail without valid media paths
- Don't attempt to manually migrate from Overseerr without following the official migration guide—can cause database corruption
Troubleshooting
Service will not start
Symptom: Seerr service fails to start or crashes immediately.
Checks:
- Check status:
systemctl status jellyseerr@username - View logs:
journalctl -u jellyseerr@username -f - Verify Node.js venv:
/opt/username/lib/nodejs/Jellyseerr/.venv/bin/node --version(should show v22.11.0) - Check permissions:
ls -la /opt/username/Jellyseerr(should be owned byusername:username) - Verify port availability:
ss -tuln | grep 5055(port should not be in use by another service)
Resolution: If Node environment is missing or corrupted, reinstall with qb reinstall jellyseerr -u username to rebuild the virtual environment.
404 at /username/jellyseerr
Symptom: Accessing https://host/username/jellyseerr returns 404 Not Found.
Checks:
- Verify nginx config exists:
ls -la /etc/nginx/software/username.jellyseerr.conf - Check port in config matches env.conf:
grep SOFTWARE_WEB_PORT_SED /etc/nginx/software/username.jellyseerr.confandgrep PORT /opt/username/Jellyseerr/env.conf - Test nginx config:
sudo nginx -t - Check service status:
systemctl status jellyseerr@username(should be active) - Verify service is listening:
ss -tuln | grep 5055
Resolution: Reload nginx with sudo systemctl reload nginx. If domain was installed, ensure /etc/nginx/sites-enabled/username.jellyseerr.conf references the active certificate paths under /etc/nginx/ssl/domain.
Cannot connect to Sonarr/Radarr
Symptom: Seerr reports “Failed to connect to Radarr” or “Failed to connect to Sonarr”.
Checks:
- Verify services are running:
systemctl status sonarr@username systemctl status radarr@username - Test API connectivity:
curl http://localhost:7878/api/v3/system/status?apikey=YOUR_RADARR_API_KEY curl http://localhost:8989/api/v3/system/status?apikey=YOUR_SONARR_API_KEY - Verify API keys match in Seerr settings:
- Radarr: Settings → General → Security → API Key
- Sonarr: Settings → General → Security → API Key
- Check hostname configuration in Seerr:
- Use
localhost(not127.0.0.1or server IP) - Default ports: 7878 for Radarr, 8989 for Sonarr
- SSL: Disabled (reverse proxy handles encryption)
- Use
Resolution: Update Seerr connection settings with correct API keys and ensure “Default Server” is checked for your primary Sonarr/Radarr instance.
Requests not sending to Sonarr/Radarr
Symptom: User requests are approved but not appearing in Sonarr/Radarr.
Checks:
- View Seerr logs for errors:
journalctl -u jellyseerr@username -f | grep -i error - Verify “Default Server” is configured: Settings → Services → Radarr/Sonarr → Check ‘Default Server’
- Ensure quality profiles exist and are selected in Seerr
- Verify root folders are configured and paths are valid
- Check Sonarr/Radarr logs for rejected requests
Resolution: Test manual request from Seerr UI and watch logs. Ensure quality profile and root folder are properly configured in Seerr service settings.
Discord notifications not working
Symptom: Seerr notifications are not appearing in Discord.
Checks:
- Verify webhook URL is correct in Seerr: Settings → Notifications → Discord
- Test webhook directly:
curl -X POST -H "Content-Type: application/json" \ -d '{"content":"Test from Seerr"}' \ https://discord.com/api/webhooks/YOUR_WEBHOOK_URL - Check notification types are enabled in Seerr
- View Seerr logs:
journalctl -u jellyseerr@username -f | grep -i discord
Resolution: Recreate Discord webhook if test fails. Ensure notification types (Media Requested, Media Approved, Media Available) are enabled in Seerr settings.
Related Applications
Resources
Join the Community
Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.