Docker
Docker Compose is the recommended deployment method for most server and NAS installs. It keeps Scryer’s config and media mounts explicit, restarts the container automatically, and makes upgrades a two-command operation.
Save this as docker-compose.yml, replacing the /path/to/... entries with your folders:
services: scryer: image: ghcr.io/scryer-media/scryer:latest container_name: scryer restart: unless-stopped ports: - "8080:8080" volumes: - scryer-config:/config # for best performance, ensure docker mounts match the download client exactly - /path/to/downloads:/downloads # optional, can be configured in-app - /path/to/movies:/data/movies - /path/to/series:/data/series - /path/to/anime:/data/anime
volumes: scryer-config:Optional: To run Weaver alongside Scryer, add the following service block inside the services: key and include the shared volumes: section at the end.
weaver: image: ghcr.io/scryer-media/weaver:latest container_name: weaver restart: unless-stopped ports: - "9090:9090" volumes: - weaver-config:/config - /path/to/downloads:/downloads
volumes: scryer-config: weaver-config:Start the stack:
docker compose up -dOpen http://localhost:8080.
After the container starts, confirm the UI opens and the setup flow loads.
Path Layout And Hard Linking
Section titled “Path Layout And Hard Linking”Hard links require the source and destination to share the same filesystem. In Docker, that means your downloads staging path and all media roots must map to the same underlying host directory.
Use a single parent bind mount with subdirectories for each role:
volumes: - /host/media:/dataThen configure Scryer’s media roots and staging path as subdirectories under /data:
/data/movies/data/series/data/anime/data/downloadsBecause all paths share the same mount, Scryer hard-links files on import instead of copying — no disk is doubled until the source is cleaned up.
If your downloads and media roots use separate bind mounts — for example /host/downloads:/downloads and /host/movies:/data/movies — they land on different filesystems inside the container. Hard links fail silently and Scryer falls back to copying.
Upgrading
Section titled “Upgrading”To upgrade a Docker install, pull the latest image and restart:
docker compose pulldocker compose up -dFor all install methods, see Upgrading.
Related Concepts
Section titled “Related Concepts”- Import — how Scryer moves completed local items into a managed library location; requires the correct path layout to hard-link instead of copy
- Library Scan — run this after confirming media roots are mounted correctly
- Upgrading — full upgrade reference for all install methods