MCPSERV.CLUB
Seerr

Seerr

Self-Hosted

Self-hosted media request manager for Jellyfin, Plex, and Emby

Active(100)
6.8kstars
0views
Updated 4 days ago

Overview

Discover what makes Seerr powerful

Seerr (formerly Jellyseerr) is a lightweight, self‑hosted request manager that sits between your media server (Jellyfin, Plex, or Emby) and automated downloaders such as Sonarr and Radarr. From a developer’s perspective, it is essentially a micro‑service that exposes a REST API and a GraphQL‑style UI while delegating media discovery to the underlying server’s own APIs. The core idea is simple: users submit requests for missing titles, and admins approve or deny them, triggering the appropriate downloader to fetch the content. This tight coupling is achieved through a combination of OAuth2 authentication against the media server and webhook hooks that notify Sonarr/Radarr once a request is approved.

Language & Framework

Database

Communication

Containerization

Overview

Seerr (formerly Jellyseerr) is a lightweight, self‑hosted request manager that sits between your media server (Jellyfin, Plex, or Emby) and automated downloaders such as Sonarr and Radarr. From a developer’s perspective, it is essentially a micro‑service that exposes a REST API and a GraphQL‑style UI while delegating media discovery to the underlying server’s own APIs. The core idea is simple: users submit requests for missing titles, and admins approve or deny them, triggering the appropriate downloader to fetch the content. This tight coupling is achieved through a combination of OAuth2 authentication against the media server and webhook hooks that notify Sonarr/Radarr once a request is approved.

Architecture

  • Language & Framework: Written in TypeScript, the backend uses NestJS for modular routing and dependency injection, while the frontend is a Vue 3 SPA built with Vite. The separation of concerns allows developers to extend either layer independently.
  • Database: Supports both SQLite (for quick, single‑node deployments) and PostgreSQL (recommended for production). The ORM layer is Prisma, which provides type‑safe query generation and migration tooling.
  • Communication: RESTful endpoints (/api/*) are documented via OpenAPI and can be consumed by external tooling. Webhooks are exposed for Sonarr/Radarr to post updates, and an optional GraphQL endpoint is available for advanced querying.
  • Containerization: A ready‑to‑run Docker image (fallenbagel/jellyseerr) bundles the runtime, database migrations, and a simple init script. The image is multi‑arch (AMD64, ARM64) and pulls automatically from Docker Hub.

Core Capabilities

  • User & Permission Management: Syncs users from the media server, supports granular roles (admin, approver, requester), and offers JWT‑based session handling.
  • Request Lifecycle: CRUD operations on requests, with state transitions (pending, approved, denied, in‑progress, completed). Each transition triggers corresponding webhooks to Sonarr/Radarr.
  • Library Scanning: Periodic scans of the media server’s library to maintain a cache of available titles, preventing duplicate requests.
  • Notification Agents: Built‑in support for SMTP, Discord webhooks, and Slack. Developers can plug in custom agents by implementing a simple interface.
  • Extensibility: A plugin system allows third‑party modules to register new media servers or downloaders. The core exposes hooks (onRequestApproved, onUserCreated) that plugins can subscribe to.

Deployment & Infrastructure

  • Self‑Hosting: No external dependencies beyond a relational database and the media server. The Docker image can be run behind Nginx/Traefik with TLS termination.
  • Scalability: Stateless API servers can be horizontally scaled behind a load balancer; the database is the single source of truth, so replication is straightforward.
  • Observability: Exposes Prometheus metrics (/metrics) and structured logs (JSON) that integrate with Loki or ELK stacks.

Integration & Extensibility

  • API: Full OpenAPI spec available at /api-docs. Endpoints cover user management, request CRUD, media lookup, and webhook configuration.
  • Webhooks: Sonarr/Radarr can be configured to POST to /webhook/sonarr or /webhook/radarr. Developers can create custom endpoints for other downloaders.
  • Plugins: The plugin API is defined in src/plugins/. Adding a new media server involves implementing an interface that fetches library items and authenticates users.
  • Customization: Theme variables, localization files (.po), and a simple templating system for emails allow deep UI/UX tailoring without code changes.

Developer Experience

  • Documentation: Comprehensive docs at docs.seerr.dev, including API reference, deployment guides, and plugin tutorials.
  • Community: Active Discord channel, GitHub Discussions, and a public issue tracker. The project follows semantic versioning and publishes changelogs automatically.
  • Testing: Jest for unit tests, Cypress for end‑to‑end UI tests. CI pipelines run on GitHub Actions and publish Docker images to Docker Hub.

Use Cases

  1. Home Media Labs – A developer sets up Seerr behind a reverse proxy, connects it to Jellyfin and Radarr, and gives family members a web portal to request new movies. The admin can approve requests from a phone app.
  2. Enterprise Media Management – An organization uses Plex for internal distribution and Radarr for automated ingestion; Seerr acts as a gatekeeper, ensuring only approved content is added.
  3. Custom Download Pipelines – A dev writes a plugin that forwards approved requests to an in‑house torrent client, bypassing Sonarr/Radarr entirely.

Advantages

  • Performance: NestJS and Prisma provide a fast, type‑safe backend; the UI is single‑page and lazy‑loads components.
  • Flexibility: The plugin architecture means you can swap out Sonarr for a custom downloader or add new media servers with minimal code.
  • Licensing: MIT license encourages commercial use without copyleft obligations.
  • Community & Support: Rapid issue resolution, active contributors, and extensive documentation reduce onboarding time.

In short, Seerr delivers a production‑ready request workflow that is easy to deploy, highly extensible, and fully documented—making it a compelling choice for developers who need an integrated media request layer without reinventing the wheel.

Open SourceReady to get started?

Join the community and start self-hosting Seerr today