What is Seerr?Seerr is the unified successor to both Overseerr and Jellyseerr — a free and open-source media request and discovery manager. It integrates with Jellyfin, Plex, and Emby, along with existing services like Sonarr and Radarr, giving your users a clean interface to request movies and TV shows.
Seerr v3.0.0 merges the Overseerr and Jellyseerr codebases into a single project, combining all existing Overseerr functionality with the latest Jellyseerr features.
Docker
TrueNASservices:
seerr:
image: ghcr.io/seerr-team/seerr:latest
init: true
container_name: seerr
environment:
- LOG_LEVEL=debug
- TZ=America/New_York
- PORT=5055
ports:
- 5055:5055
volumes:
- /mnt/tank/configs/seerr:/app/config
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
restart: unless-stopped
The
init: truedirective is required. Seerr no longer provides its own init process inside the container.
The Seerr Docker container runs internally as the
nodeuser (UID 1000) and does not respect theuser:directive in your compose file. This is different from most containers in the arr stack. See Section 2 · Permissions for how to handle this on TrueNAS.
/mnt/tank/configs/seerrThe TrueNAS app runs as user/group 568 (the standard
appsuser), so permissions work the same as the rest of your arr stack. No special ownership changes are needed.
This section only applies to Docker (Dockge) deployments. The TrueNAS app runs as 568:568 and handles permissions normally.
The Seerr Docker container always runs as UID 1000 (the node user) regardless of any user: directive in your compose file. On TrueNAS, where the standard apps user is UID 568, this means the config directory must be owned by UID 1000 for Seerr to function properly.
chown -R 1000:1000 /mnt/tank/configs/seerr
If Seerr is having trouble writing to its config directory, permissions are almost always the cause. Check with
ls -la /mnt/tank/configs/seerrand verify UID 1000 owns the files.
If you're coming from Jellyseerr or Overseerr, the migration to Seerr is mostly automatic — but the steps differ depending on whether you deployed via Docker or the TrueNAS app.
Docker
TrueNAS (Host Path)
TrueNAS (ixVolume)Do not point Seerr at your existing Jellyseerr/Overseerr dataset. Create a new dataset and copy your data into it. This keeps your Jellyseerr install intact as a rollback option.
Stop the Jellyseerr container in Dockge or in the TrueNAS shell run:
docker stop jellyseerr
Create a new dataset for Seerr
Copy your Jellyseerr config into the new dataset with rsync by running this command in the TrueNAS shell:
rsync -avh /mnt/tank/configs/jellyseerr/ /mnt/tank/configs/seerr/
Note the trailing slash on the source path — this copies the contents of the directory, not the directory itself.
Set ownership to UID 1000
Jellyseerr ran as root, so the copied files will be owned by root:root. Seerr runs as UID 1000 internally and needs ownership of these files. Run this command in the TrueNAS shell:
chown -R 1000:1000 /mnt/tank/configs/seerr
Go into the permissions of the Seerr dataset on TrueNAS. Leave user permissions as-is and set the Group to read/write/execute, and set Other to none.
Deploy the Seerr stack
Create a new stack in Dockge using the compose from Section 1, with the volume pointed at your new dataset:
volumes:
- /mnt/tank/configs/seerr:/app/config
Seerr will automatically detect and migrate your Jellyseerr database on first boot.
Verify the migration
Navigate to http://your-server-ip:5055 and confirm your settings, users, and request history carried over. Once you're satisfied everything is working, you can remove the old Jellyseerr container and dataset at your discretion.
If your Jellyseerr/Overseerr TrueNAS app was configured with a Host Path, the migration is straightforward — just point Seerr at the same path.
/mnt/tank/configs/jellyseerr)If your Jellyseerr/Overseerr TrueNAS app was using ixVolume storage, you'll need to copy the data out into a Host Path dataset before installing Seerr.
If you're not sure whether you used Host Path or ixVolume, check your Jellyseerr app configuration in the TrueNAS UI under Apps → Jellyseerr → Edit. If you see a path like
/mnt/tank/configs/jellyseerr, you're using Host Path. If you don't see an explicit path, you're using ixVolume.
Stop the Jellyseerr app in the TrueNAS UI
Create a new dataset for Seerr
In the TrueNAS UI, create a new dataset at configs/seerr. You can also do this from the shell:
zfs create tank/configs/seerr
Copy the ixVolume data into the new dataset
Open System Settings → Shell or SSH into your TrueNAS server as root and run:
rsync -avh /mnt/.ix-apps/app_mounts/jellyseerr/ /mnt/tank/configs/seerr/
If you were running Overseerr instead of Jellyseerr, replace
jellyseerrwithoverseerrin the path above.
Install the Seerr app from the TrueNAS app catalog and set the Host Path to /mnt/tank/configs/seerr
Start the Seerr app — it will automatically migrate your database on first boot
Verify your settings, users, and request history carried over, then delete the old Jellyseerr app
| Field | Value |
|---|---|
| Default Server | check this box if you are only running one instance of Radarr/Sonarr |
| 4K Server | for advanced users who run separate servers for 4K and 1080p content |
| Server Name | usually just "Radarr" or "Sonarr" |
| Host or IP Address | IP of the Radarr or Sonarr server |
| Port | port of the Radarr or Sonarr server |
| Use SSL | leave this unchecked |
| API Key | API key for Radarr or Sonarr |
| Field | Value |
|---|---|
| URL Base | leave this blank |
| Quality Profile | select the quality profile content will be downloaded with by default |
| Root Folder | there should only be one option here — select the folder you set up for Radarr/Sonarr |
| Minimum Availability | change this to Announced |
| Tags | leave blank |
| External URL | leave blank |
| Enable Scan | check this box |
| Enable Automatic Search | check this box |
Seerr v3.0.0 adds optional PostgreSQL support. By default, Seerr uses SQLite (stored in the config directory). If you want to switch to PostgreSQL, refer to the official database configuration docs.
If you run Pi-hole or AdGuard, Seerr's new DNS caching feature can help reduce DNS query spam from the container. This is experimental and can be enabled in the Seerr settings.
5 · Video