Migration guide
Read our release announcement to learn what Seerr means for Jellyseerr and Overseerr users.
Whether you come from Overseerr or Jellyseerr, you don't need to perform any manual migration steps, your instance will automatically be migrated to Seerr. This migration will run automatically the first time you start your instance using the Seerr codebase (Docker image or source build or Kubernetes, etc.). An additional migration will happen for Overseerr users, to migrate their configuration to the new codebase.
Before doing anything you should backup your existing instance so that you can rollback in case something goes wrong. See Backups for details on how to properly backup your instance.
Installation methods are now divided into two categories: official and third-party methods. The Seerr team is only responsible for official installation methods, while third-party methods are maintained by the community. Some methods are currently not maintained, but this does not mean they are permanently discontinued. The community may restore and support them if they choose to do so.
- Unraid app: Not maintained
- Snap package: Not maintained
Docker
Refer to Seerr Docker Documentation, all of our examples have been updated to reflect the below change.
Seerr provides a secure, fully featured image with everything you need included. We sincerely appreciate the past contributions from third-party maintainers, which helped enhance this image and its capabilities. To maintain consistency and security, we encourage everyone to use the features available in the official Seerr image. If you feel something is missing, please submit a feature request—your feedback is always welcome!
Our Docker images are available with the following tags:
latest: Always points to the most recent stable release.- Version tags (e.g.,
v3.0.0): For specific stable versions. develop: Rolling release/nightly builds for using the latest changes (use with caution).
Changes :
- Renamed all references from
overseerrorjellyseerrtoseerr. - The container image reference has been updated.
- The container can now be run as a non-root user (
nodeuser); remove theuserdirective if you have configured it. - The container no longer provides an init process, so you must configure it by adding
init: truefor Docker Compose or--initfor the Docker CLI.
Config folder permissions
Since the container now runs as the node user (UID 1000), you must ensure your config folder has the correct permissions. The node user must have read and write access to the /app/config directory.
If you're migrating from a previous installation, you may need to update the ownership of your config folder:
docker run --rm -v /path/to/appdata/config:/data alpine chown -R 1000:1000 /data
This ensures the node user (UID 1000) owns the config directory and can read and write to it.
Unix
Summary of changes :
- Docker compose
- Docker CLI
---
services:
seerr:
image: ghcr.io/seerr-team/seerr:latest
init: true
container_name: seerr
environment:
- LOG_LEVEL=debug
- TZ=Asia/Tashkent
- PORT=5055 #optional
ports:
- 5055:5055
volumes:
- /path/to/appdata/config:/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
docker run -d \
--name seerr \
--init \
-e LOG_LEVEL=debug \
-e TZ=Asia/Tashkent \
-e PORT=5055 \
-p 5055:5055 \
-v /path/to/appdata/config:/app/config \
--restart unless-stopped \
ghcr.io/seerr-team/seerr:latest
Windows
Summary of changes :
- Docker compose
- Docker CLI
---
services:
seerr:
image: ghcr.io/seerr-team/seerr:latest
init: true
container_name: seerr
environment:
- LOG_LEVEL=debug
- TZ=Asia/Tashkent
ports:
- 5055:5055
volumes:
- seerr-data:/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
volumes:
seerr-data:
external: true
docker run -d \
--name seerr \
--init \
-e LOG_LEVEL=debug \
-e TZ=Asia/Tashkent \
-e PORT=5055 \
-p 5055:5055 \
-v seerr-data:/app/config \
--restart unless-stopped \
ghcr.io/seerr-team/seerr:latest
Build From Source
Refer to Seerr Build From Source Documentation, all of our examples have been updated to reflect the below change.
Install from scratch by following the documentation, restore your data as described in Backups, and then start Seerr. No additional steps are required.
Kubernetes
Refer to Seerr Kubernetes Documentation, all of our examples have been updated to reflect the below change.
Changes :
- All references to
jellyseerrhave been renamed toseerrin the manifests. - The container image reference has been updated.
- The default
securityContextandpodSecurityContexthave been updated to support running the container without root permissions.
Summary of changes :
- Old values
- New values
image:
repository: fallenbagel/jellyseerr
podSecurityContext: {}
securityContext: {}
image:
repository: seerr-team/seerr
podSecurityContext:
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: false
runAsNonRoot: true
privileged: false
runAsUser: 1000
runAsGroup: 1000
seccompProfile:
type: RuntimeDefault
Third-party installation methods
Nix
Waiting for https://github.com/NixOS/nixpkgs/pull/450096 and https://github.com/NixOS/nixpkgs/pull/450093
AUR
See https://aur.archlinux.org/packages/seerr
TrueNAS
Waiting for https://github.com/truenas/apps/issues/3374