Skip to Content
Jellyseerr

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 username to clone seerr-team/seerr and build with pnpm
  • Default nginx reverse proxy publishes https://host/username/jellyseerr to port 5055
  • Optional domain support via qb install lecert --jellyseerr -d domain -u username with SSL
  • Per-user systemd service jellyseerr@username with Node.js 22.11.0 venv and auto-start on boot

Installation

Install from the QuickBox CLI

qb install jellyseerr -u username
Command
qb install jellyseerr -u username
Description
Install Jellyseerr for the user; accepts -d domain for nginx + SSL
Command
qb reinstall jellyseerr -u username
Description
Reinstall while preserving database and settings
Command
qb update jellyseerr -u username
Description
Update to the latest tagged release from seerr-team/seerr
Command
qb remove jellyseerr -u username
Description
Stop service, clean nginx, and remove files
Command
qb install jellyseerr -u username -d domain
Description
Install with domain and TLS support
Command
qb help jellyseerr
Description
Show CLI help for flags and examples

Install with a domain (optional)

To publish Seerr at https://domain, combine lecert with the Jellyseerr flag:

qb install lecert --jellyseerr -d domain -u username

Or, 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:

  1. Open Seerr web interface at http://host:port - https://host/username/jellyseerr
  2. Select Media Server Type: Choose Jellyfin, Emby, or Plex
  3. Authenticate: Sign in with your media server account
  4. Select Server: Pick your media server from the list (for Plex/Emby)
  5. Library Sync: Seerr automatically scans your media libraries
  6. 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:

  1. Navigate to Settings → Services in Seerr
  2. 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
  3. 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:

  1. Go to Settings → Notifications
  2. 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
  3. 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.conf127.0.0.1:5055)
  • With domain: https://domain/ (served by /etc/nginx/sites-enabled/username.jellyseerr.conf when installed with --jellyseerr -d domain from lecert, or qb 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 username via jellyseerr@username.service and 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

/opt/username
Jellyseerr/# Application root
├── env.conf# Holds PORT=5055 for this user
├── config/# Persistent app data
│ ├── settings.json# Primary application settings
│ └── db/# SQLite database storage
└── dist/# Built application served by Node
lib/# Isolated runtime environments
├── nodejs/
│ └── Jellyseerr/
│ │ └── .venv/# Node.js 22.11.0 environment
└── python/
│ └── Jellyseerr/
│ │ └── .venv/# Helper Python venv
/home/username/.config
Jellyseerr/# Symlink target for user config
/etc/nginx
software/
└── username.jellyseerr.conf# Default reverse proxy for /username/jellyseerr
sites-enabled/
└── username.jellyseerr.conf# Domain vhost created by lecert
/etc/systemd/system
jellyseerr@username.service# Per-user service unit

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@username

Application 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 jellyseerr

nginx Management

Reload nginx after configuration changes:

# Test configuration sudo nginx -t # Reload nginx sudo systemctl reload nginx

FAQ

The installer sets 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.
Systemd unit: /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.
QuickBox clones 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.
Seerr supports Jellyfin, Emby, and Plex, but you must choose one media server type during initial setup. To switch servers, you'll need to reconfigure or reinstall. However, Seerr can connect to multiple Sonarr/Radarr instances for content management.
QuickBox will ship a built-in migration utility once Seerr declares official release. Until then, follow the upstream migration guide. Always backup your Overseerr database before attempting migration.
The QuickBox installer automatically enables webpush notifications in 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 domain when needed) so ports, nginx, and systemd stay in sync
  • Check service health with systemctl status jellyseerr@username and tail logs with journalctl -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 username if you need to refresh templates
  • Do not swap PORT in env.conf without 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:

  1. Check status: systemctl status jellyseerr@username
  2. View logs: journalctl -u jellyseerr@username -f
  3. Verify Node.js venv: /opt/username/lib/nodejs/Jellyseerr/.venv/bin/node --version (should show v22.11.0)
  4. Check permissions: ls -la /opt/username/Jellyseerr (should be owned by username:username)
  5. 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:

  1. Verify nginx config exists: ls -la /etc/nginx/software/username.jellyseerr.conf
  2. Check port in config matches env.conf: grep SOFTWARE_WEB_PORT_SED /etc/nginx/software/username.jellyseerr.conf and grep PORT /opt/username/Jellyseerr/env.conf
  3. Test nginx config: sudo nginx -t
  4. Check service status: systemctl status jellyseerr@username (should be active)
  5. 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:

  1. Verify services are running:
    systemctl status sonarr@username systemctl status radarr@username
  2. 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
  3. Verify API keys match in Seerr settings:
    • Radarr: Settings → General → Security → API Key
    • Sonarr: Settings → General → Security → API Key
  4. Check hostname configuration in Seerr:
    • Use localhost (not 127.0.0.1 or server IP)
    • Default ports: 7878 for Radarr, 8989 for Sonarr
    • SSL: Disabled (reverse proxy handles encryption)

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:

  1. View Seerr logs for errors: journalctl -u jellyseerr@username -f | grep -i error
  2. Verify “Default Server” is configured: Settings → Services → Radarr/Sonarr → Check ‘Default Server’
  3. Ensure quality profiles exist and are selected in Seerr
  4. Verify root folders are configured and paths are valid
  5. 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:

  1. Verify webhook URL is correct in Seerr: Settings → Notifications → Discord
  2. Test webhook directly:
    curl -X POST -H "Content-Type: application/json" \ -d '{"content":"Test from Seerr"}' \ https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
  3. Check notification types are enabled in Seerr
  4. 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.

🎬

Media Servers

📡

Media Management

📥

Request Management

Resources


Join the Community

Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.

Dedicated Support
Feature Previews
Community Configs
Active Discussions
Join Discord Server