Skip to content

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 -d

Open http://localhost:8080.

After the container starts, confirm the UI opens and the setup flow loads.

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:/data

Then configure Scryer’s media roots and staging path as subdirectories under /data:

/data/movies
/data/series
/data/anime
/data/downloads

Because 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.

To upgrade a Docker install, pull the latest image and restart:

docker compose pull
docker compose up -d

For all install methods, see Upgrading.

  • 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