Skip to Content
Seerr

Seerr

Unified request management for Plex, Jellyfin, and Emby

Overview

Seerr is the unified media request manager that merges Overseerr and Jellyseerr into a single application, maintained by the seerr-team. It provides native support for Plex, Jellyfin, and Emby media servers with an intuitive interface for users to discover and request movies and TV shows. Requests are automatically forwarded to Sonarr and Radarr for download. User quota management, approval workflows, and extensive notification support (Discord, Slack, email, Telegram, Pushover) make Seerr the definitive content request tool for shared media servers.

QuickBox Pro installs Seerr per user from the official seerr-team/seerr GitHub repository, building with Node.js 22.11.0 and pnpm 10.24.0. The installer creates isolated virtual environments, configures systemd service management, and sets up nginx reverse proxy access.

Replaces Overseerr and Jellyseerr

Seerr is the canonical replacement for both Overseerr and Jellyseerr in QuickBox Pro. Running qb update overseerr -u username or qb update jellyseerr -u username automatically migrates to Seerr. New installations should use qb install seerr -u username directly.

Key features

🎬 Multi-Server Support

Native integration with Plex, Jellyfin, and Emby 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

🔄 Built-in Migration

Migrate from Overseerr or Jellyseerr with --migrate --from preserving settings, database, and ports

🧩 Per-User Service

systemd unit seerr@username with isolated Node.js venv and port allocation

🔗 Reverse Proxy Ready

nginx maps user path to local port with automatic path rewriting

🔒 TLS Domain Support

Optional domain setup via qb install lecert --seerr -d domain with SSL certificates

When to use it

Prerequisites

  • Need a unified media request app supporting Plex, Jellyfin, and Emby
  • Want to consolidate separate Overseerr and Jellyseerr installations
  • 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 seerr -u username to clone seerr-team/seerr and build with pnpm
  • Default nginx reverse proxy publishes access on port 5055
  • Optional domain support via qb install seerr -u username -d domain or qb install lecert --seerr -d domain -u username
  • Per-user systemd service seerr@username with Node.js 22.11.0 venv and auto-start on boot

Installation

Install from the QuickBox CLI

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

Install with a domain (optional)

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

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

Or, run on the install of Seerr using the domain flag:

qb install seerr -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.seerr.conf with the provided domain and certificate paths. When DNS credentials are configured (e.g., Cloudflare, Route53, DigitalOcean), the installer automatically detects them and uses DNS challenge validation.

Migrate from Overseerr or Jellyseerr

Seerr includes a built-in migration utility that preserves your settings, database, port assignment, nginx configuration, and URL overrides:

# Migrate from Jellyseerr qb install seerr -u username --migrate --from jellyseerr # Migrate from Overseerr qb install seerr -u username --migrate --from overseerr

The migration process:

  1. Backs up the source application
  2. Stops the old service
  3. Copies settings.json and db.sqlite3 to the new Seerr install
  4. Preserves the original port assignment
  5. Creates new nginx configs from Seerr templates
  6. Migrates URL override entries
  7. Removes old database entries, service files, and install directories
  8. Reloads systemd and nginx

Automatic Migration on Update

Running qb update jellyseerr -u username or qb update overseerr -u username automatically triggers migration to Seerr. No manual intervention is needed.

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
  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
  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:5055 (served by /etc/nginx/software/username.seerr.conf proxying to 127.0.0.1:5055)
  • With domain: https://domain/ (served by /etc/nginx/sites-enabled/username.seerr.conf when installed with --seerr -d domain from lecert, or qb install seerr -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 seerr@username.service and reads environment settings from /opt/username/Seerr/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
  • Webpush notifications are enabled by default during installation

Configuration and files

/opt/username
Seerr/# Application root
├── env.conf# Holds PORT=5055 for this user
├── config/# Persistent app data
│ ├── settings.json# Primary application settings
│ └── db/# SQLite database storage
│ │ └── db.sqlite3# Application database
└── dist/# Built application served by Node
lib/# Isolated runtime environments
├── nodejs/
│ └── Seerr/
│ │ └── .venv/# Node.js 22.11.0 environment with pnpm 10.24.0
└── python/
│ └── Seerr/
│ │ └── .venv/# Python 3.11 helper venv for nodeenv
/home/username/.config
Seerr/# Symlinks to /opt/username/Seerr/config/ contents
/etc/nginx
software/
└── username.seerr.conf# Default reverse proxy for Seerr
sites-enabled/
└── username.seerr.conf# Domain vhost created by lecert (when -d domain used)
/etc/systemd/system
seerr@username.service# Per-user systemd service unit

Common tasks

Service Management

Seerr runs as a per-user systemd service seerr@username:

# Start/stop/restart service systemctl start seerr@username systemctl stop seerr@username systemctl restart seerr@username # Check service status systemctl status seerr@username # View live logs journalctl -u seerr@username -f # Enable/disable auto-start on boot systemctl enable seerr@username systemctl disable seerr@username

Application Management

Use QuickBox CLI for application updates and maintenance:

# Update to latest release qb update seerr -u username # Reinstall (preserves database) qb reinstall seerr -u username # Remove application qb remove seerr -u username # View help qb help seerr

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/Seerr/env.conf and records the same port in the QuickBox database for nginx templates and dashboard links. When migrating from Overseerr or Jellyseerr, the original port is preserved.
Systemd unit: /etc/systemd/system/seerr@username.service. Reverse proxy: /etc/nginx/software/username.seerr.conf for the default path, or /etc/nginx/sites-enabled/username.seerr.conf when installed with -d domain.
QuickBox clones seerr-team/seerr, checks out the latest tagged release, installs Node.js 22.11.0 with pnpm 10.24.0 inside /opt/username/lib/nodejs/Seerr/.venv, runs pnpm install --frozen-lockfile, builds with pnpm build, and starts the application under the target user.
Seerr supports Jellyfin, Emby, and Plex, but you choose one media server type during initial setup. You can connect to multiple Sonarr and Radarr instances for content management. To switch media server types, reconfigure or reinstall.
Use the built-in migration: qb install seerr -u username --migrate --from overseerr or --from jellyseerr. This preserves your settings, database, port, nginx config, and URL overrides. Alternatively, running qb update jellyseerr or qb update overseerr automatically triggers the migration.
Seerr is the official merger of Jellyseerr and Overseerr into a single application maintained by seerr-team. It combines Jellyseerr's Jellyfin/Emby support with Overseerr's Plex support. Both Jellyseerr and Overseerr are deprecated in QuickBox Pro and will auto-migrate to Seerr on update.
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.
The migration copies settings.json and db.sqlite3 from the old application, preserves the port assignment, creates new nginx configs from Seerr templates, and removes the old install. A backup of the source application is created before any changes are made.

Best practices

Do

  • Use qb install seerr -u username for new installations (add -d domain when needed)
  • Run qb update jellyseerr -u username or qb update overseerr -u username to auto-migrate existing installations to Seerr
  • Check service health with systemctl status seerr@username and tail logs with journalctl -u seerr@username -f
  • Reload nginx after adding or removing a domain: sudo systemctl reload nginx
  • Set up Discord or email notifications for request updates to keep users informed
  • 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
  • Regularly sync media server libraries to keep Seerr metadata updated
  • Backup /opt/username/Seerr/config/ before major updates or reinstalls

Don't

  • Avoid editing generated nginx files by hand -- rerun qb reinstall seerr -u username to refresh templates
  • Do not swap PORT in env.conf without updating the stored port via qb workflows
  • Don't install both Seerr and Jellyseerr/Overseerr for the same user -- use migration instead
  • Don't grant admin access to all users -- use request quotas and approval workflows
  • Don't configure multiple default servers in Sonarr/Radarr settings -- causes request routing conflicts
  • Don't ignore failed notifications -- check logs and fix webhook/SMTP issues
  • Don't forget to configure root folders in Sonarr/Radarr -- requests will fail without valid paths

Troubleshooting

Service will not start

Symptom: Seerr service fails to start or crashes immediately.

Checks:

  1. Check status: systemctl status seerr@username
  2. View logs: journalctl -u seerr@username -f
  3. Verify Node.js venv: /opt/username/lib/nodejs/Seerr/.venv/bin/node --version (should show v22.11.0)
  4. Check permissions: ls -la /opt/username/Seerr (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 seerr -u username to rebuild the virtual environment.

404 on Seerr URL

Symptom: Accessing Seerr through the reverse proxy returns 404 Not Found.

Checks:

  1. Verify nginx config exists: ls -la /etc/nginx/software/username.seerr.conf
  2. Check port in config matches env.conf: grep PORT /opt/username/Seerr/env.conf
  3. Test nginx config: sudo nginx -t
  4. Check service status: systemctl status seerr@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.seerr.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
  4. Check hostname configuration: use localhost (not 127.0.0.1 or server IP)

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: journalctl -u seerr@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
  4. Verify root folders are configured and paths are valid

Resolution: Test manual request from Seerr UI and watch logs. Ensure quality profile and root folder are properly configured.

Migration preserved wrong port

Symptom: After migration from Overseerr/Jellyseerr, Seerr is not accessible on the expected port.

Checks:

  1. Check env.conf: cat /opt/username/Seerr/env.conf
  2. Check database port: the migration reads the port from user_software and writes it to env.conf
  3. Verify nginx config port matches

Resolution: If the port is incorrect, update /opt/username/Seerr/env.conf and the nginx config, then restart the service and reload nginx.

🎬

Media Servers

📡

Media 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