Seerr

repository·develop·Indexed 10 days ago

https://github.com/seerr-team/seerr

An open-source media request management application that integrates with media servers such as Jellyfin, Plex, and Emby, and automation tools like Sonarr and Radarr. It provides a user-friendly interface for requesting movies and shows, managing permissions, and automating request workflows. Supports both PostgreSQL and SQLite databases and can be deployed via Docker Compose or Kubernetes using the seerr-chart Helm chart.

Tokens
40.8K
Snippets
92
Records
199
Agent score
95%

What's inside Seerr

  1. Introduction to Seerr

    develop

    Seerr is a free and open-source application designed to manage media requests for your library. It acts as a request management layer that integrates with media servers and automation tools to streamline the process of adding content to your collection.

    Core Integrations:

    • Media Servers: Jellyfin, Plex, and Emby.
    • Automation Services: Sonarr and Radarr.

    Key Capabilities:

    • Library Syncing: Automatically syncs with your media server to identify which titles you already own.
    • Request Management: Provides a clean UI for users to request movies, shows, or mixed libraries (including individual seasons) and a management UI for administrators to approve requests.
    • Access Control: Features a granular permission system and integrates directly with your media server for user login and access management.
    • Database Support: Compatible with both PostgreSQL and SQLite.
    • Customization: Supports override rules for requests, various notification agents, and localization.
  2. Understand Seerr data storage and backup requirements

    develop

    Seerr splits its data into two main categories:

    1. Settings: All configurations from the Settings panel (integrations with Radarr, Sonarr, Jellyfin, Plex, and notification settings) are stored in the settings.json file located in the Seerr data folder.
    2. User Data: All other data, including user accounts, media requests, and blocklists, are stored in the database (either SQLite or PostgreSQL).

    To ensure a complete recovery, you should back up both the settings.json file and your database.

  3. Watchlist Auto Request limitations and behavior

    develop

    When using the Watchlist Auto Request feature, be aware of the following operational constraints:

    • Content Quality: Auto-request only works for standard quality content. 4K content must be requested manually even if you have 4K permissions.
    • User Type: Only Plex users can use this feature; local users are excluded.
    • Library Check: Seerr will not request content that is already present in your media libraries.
    • Quotas: The feature respects all configured user request limits and quotas.
    • Authentication: Users must have an established session linked to their Plex account within Seerr.
  4. Understand the Owner Account role

    develop

    The account created during the initial Seerr setup is designated as the Owner account. This account has unique properties:

    • Immutability: It cannot be deleted or modified by any other user in the system.
    • Primary Authority: It is used to authenticate with your media server and is the primary account for configuring global Seerr settings.
    • Media Server Access: For Jellyfin or Emby installations, the Owner account is specifically used for API access to your media server.

    Important for Jellyfin/Emby users: The Owner account must possess a valid authentication token for your media server to ensure Seerr can communicate with it correctly.

  5. Use Special Template Variables in JSON payloads

    develop

    Certain variables must be used as keys in your JSON payload to include entire objects or arrays. If the relevant object does not exist for the specific event, the value will be null.

    Special Keys

    • "{{media}}": The media object.
    • "{{request}}": The request object.
    • "{{issue}}": The issue object.
    • "{{comment}}": The issue comment object.
    • "{{extra}}": An array of additional data (e.g., season/episode numbers).

    Nested Variable Scopes

    Media Variables (within {{media}})

    Only available in media-related notifications (e.g., requests):

    • {{media_type}}: movie or tv.
    • {{media_imdbid}}, {{media_tmdbid}}, {{media_tvdbid}}.
    • {{media_status}}: UNKNOWN, PENDING, PROCESSING, PARTIALLY_AVAILABLE, or AVAILABLE.
    • {{media_status4k}}: 4K availability status.
    • {{media_jellyfinMediaId}}.
    • {{media_plexRatingKey}} / {{media_plexRatingKey4k}}.

    Request Variables (within {{request}})

    • {{request_id}}.
    • {{requestedBy_username}}, {{requestedBy_email}}, {{requestedBy_avatar}}.
    • {{requestedBy_jellyfinUserId}}.
    • {{requestedBy_settings_discordIds}}, {{requestedBy_settings_telegramChatId}}.

    Issue Variables (within {{issue}})

    • {{issue_id}}.
    • {{reportedBy_username}}, {{reportedBy_email}}, {{reportedBy_avatar}}.
    • {{reportedBy_settings_discordIds}}, {{reportedBy_settings_telegramChatId}}.

    Comment Variables (within {{comment}})

    • {{comment_message}}.
    • {{commentedBy_username}}, {{commentedBy_email}}, {{commentedBy_avatar}}.
    • {{commentedBy_settings_discordIds}}, {{commentedBy_settings_telegramChatId}}.
    {
      "event": "{{event}}",
      "subject": "{{subject}}",
      "media_info": "{{media}}",
      "extra_data": "{{extra}}"
    }
  6. Configure TheTVDB as a Metadata Provider (Experimental)

    develop

    Seerr allows you to use TheTVDB as a metadata provider for series and anime. This is useful for ensuring consistent season and episode numbering when using Sonarr, as Sonarr also uses TheTVDB. This feature is currently experimental.

    To enable it, navigate to the "Metadata Providers" tab in the Seerr settings page.

  7. Why Seerr does not support PUID/PGID

    develop

    Unlike some other media management tools, Seerr does not use the PUID/PGID pattern.

    The Reason: The PUID/PGID pattern requires the container to start as root (UID 0) to execute chown and chmod commands before dropping privileges. Starting a container as root increases the risk of a host-level compromise if a process escapes the container namespace.

    Seerr follows Docker best practices by using the USER directive to run as the node user (UID 1000) from the moment the container starts, significantly reducing the attack surface.

  8. Use Dynamic Placeholders in Webhook URLs

    develop

    Seerr supports dynamic placeholders in webhook URLs, allowing you to inject real-time values (such as the requester's username) directly into the URL at runtime. This is useful for integrating with third-party services that require user-specific endpoints.

    This feature is currently experimental. You can find a list of available placeholders for reference on the Notifications settings page.

  9. Enable Plex Watchlist Auto Request

    develop

    The Plex Watchlist Auto Request feature allows Seerr to automatically create requests for media items you add to your Plex Watchlist. This feature is exclusive to Plex users; local users cannot use it.

    Prerequisites

    • You must have logged into Seerr at least once using your Plex account.
    • Your Plex account must have access to the Plex server configured in Seerr.
    • You must satisfy a two-tier permission requirement: Administrator Permissions must be granted to your profile, AND you must Activate the feature in your own settings.

    Activation Steps

    1. Verify Permissions: Ensure your administrator has granted you Auto-Request, Auto-Request Movies, and/or Auto-Request Series permissions.
    2. Enable in Profile:
      • Go to your user profile settings.
      • Navigate to the General section.
      • Enable the toggles for Auto-Request Movies and/or Auto-Request Series.
    3. Usage: Simply add content to your Plex Watchlist. Seerr will periodically check for new items, verify they aren't already in your libraries, and automatically submit requests.