--- title: Migration guide --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; 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. :::danger Before doing anything you should backup your existing instance so that you can rollback in case something goes wrong. See [Backups](/using-seerr/backups) for details on how to properly backup your instance. ::: :::warning 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](/getting-started/docker), all of our examples have been updated to reflect the below change. Changes : - Renamed all references from `overseerr` or `jellyseerr` to `seerr`. - The container image reference has been updated. - The container can now be run as a non-root user (`node` user); remove the `user` directive if you have configured it. - The container no longer provides an init process, so you must configure it by adding `init: true` for Docker Compose or `--init` for the Docker CLI. #### Config folder permissions :::info 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: ```bash 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 : ```yaml {3-6} --- 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 ``` ```bash {2-3,10} 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 : ```yaml {3-6,13,23} --- 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 ``` ```bash {2-3,8,10} 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](/getting-started/buildfromsource), 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](/using-seerr/backups), and then start Seerr. No additional steps are required. ## Kubernetes Refer to [Seerr Kubernetes Documentation](/getting-started/kubernetes), all of our examples have been updated to reflect the below change. Changes : - All references to `jellyseerr` have been renamed to `seerr` in the manifests. - The container image reference has been updated. - The default `securityContext` and `podSecurityContext` have been updated to support running the container without root permissions. Summary of changes : ```yaml image: repository: fallenbagel/jellyseerr podSecurityContext: {} securityContext: {} ``` ```yaml 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 ``` ### Nix (Third-party installation methods) Waiting for https://github.com/NixOS/nixpkgs/pull/450096 and https://github.com/NixOS/nixpkgs/pull/450093 ### AUR (Third-party installation methods) See https://aur.archlinux.org/packages/seerr ### TrueNAS (Third-party installation methods) Waiting for https://github.com/truenas/apps/issues/3374