Skip to content
🚧 These docs are a work in progress and may contain inaccuracies. Content is being actively reviewed and validated.

Seerr / Overseerr / Jellyseerr

Seerr (and its forks Overseerr and Jellyseerr) is a media request management tool. Users can request movies and TV shows, and Seerr sends them to Sonarr/Radarr for download. Dubby integrates with all three variants to show media availability.

Dubby acts as a “media server” in Seerr’s configuration, similar to how Plex or Jellyfin integrate. This enables:

  • Availability display — Seerr shows which requested media is already available in your Dubby library
  • Library sync — Seerr periodically fetches your Dubby library to update availability status
  • Webhook notifications — Dubby notifies Seerr when new media is added

You can connect Seerr to Dubby in two ways: during the initial setup wizard, or later in settings.

The setup wizard includes an optional Seerr integration step (after Playback, before Optimization). The guided flow walks you through:

  1. Enter your Seerr URL and API key — Find the API key in your Seerr instance under Settings > General > API Key
  2. Test connection — Dubby verifies connectivity and auto-detects your variant (Seerr, Overseerr, or Jellyseerr) and version
  3. Save credentials — Dubby generates a Dubby API key for the Seerr side. You’ll see step-by-step instructions for configuring your Seerr instance to connect back to Dubby

You can skip this step and configure it later in Settings.

  1. Go to Settings > Integrations > Seerr in the Dubby admin panel
  2. Click Add Instance and enter your Seerr URL and API key
  3. Test the connection, then save

After connecting from Dubby, configure Seerr to talk back to Dubby:

  1. In your Seerr instance, go to Settings > Dubby
  2. Enter your Dubby server URL (e.g., http://dubby:3000)
  3. Paste the Dubby API key that was generated during setup
  4. Click Save and Sync Libraries

Dubby exposes several endpoints specifically for Seerr integration:

EndpointDescription
GET /api/seerr/system/infoServer identity (no auth required)
GET /api/seerr/librariesList all libraries
GET /api/seerr/libraries/:id/itemsPaginated media items in a library
GET /api/seerr/items/:idSingle item details
POST /api/seerr/availability/checkCheck if specific media is available
GET /api/seerr/recentRecently added media
POST /api/seerr/webhookReceive availability updates

These endpoints use a separate API key (not your user Bearer token) that is exchanged during the initial registration handshake.

If running both Dubby and Seerr in Docker, ensure they’re on the same Docker network so they can communicate by service name:

services:
dubby:
image: dubbytv/dubby:latest
networks:
- media
seerr:
image: seerr/seerr:latest
networks:
- media
networks:
media:

Then use http://dubby:3000 as the server URL in Seerr’s configuration.

If running both Dubby and Seerr in Kubernetes, use the internal ClusterIP service name:

Seerr runs in…URL to enter in SeerrExample
Same namespace as Dubbyhttp://<service>:<port>http://dubby-server:3000
Different namespacehttp://<service>.<namespace>:<port>http://dubby-server.dubby:3000
Outside the clusterExternal hostname or IPhttp://dubby.example.com

Find the Dubby service name with:

Terminal window
kubectl get svc -n dubby

If Seerr uses an external hostname (e.g. seerr.example.com) rather than an internal service name, the Dubby pod must be able to resolve it via DNS. Some Kubernetes distributions (k3s, air-gapped clusters) may not forward external DNS queries by default.

Test resolution from a pod:

Terminal window
kubectl run -it --rm dns-test --image=busybox -- nslookup seerr.example.com

If this fails, check your CoreDNS ConfigMap for a working forward directive:

Terminal window
kubectl get configmap coredns -n kube-system -o yaml

Ensure it includes a forward rule pointing to a DNS server that can resolve external hostnames (e.g. forward . 8.8.8.8 1.1.1.1).

When a connection test fails, Dubby provides a friendly error message and a platform-specific troubleshooting hint. Common errors include:

ErrorMeaning
DNS lookup failedThe hostname could not be resolved
Could not reach…The server is not responding (connection refused)
Connection timed outThe server is unreachable or blocked
SSL/TLS errorCertificate issue (e.g., self-signed certs)
Invalid API keyThe Seerr API key is wrong