Library Layout
Two decisions shape every import Scryer does. How storage is mounted decides whether a finished download is linked into place or copied. How libraries are organized decides where each title lives and who sees it. Get both right before the first library scan, because Scryer stores these paths and they are painful to change later.
One Mount Per Physical Volume
Section titled “One Mount Per Physical Volume”Downloads and media roots must share one mount whenever they live on the same physical volume. Split them across mounts only when they are on different physical disks.
The reason is hard links. A hard link gives one file two names, so an imported release costs no extra space and no copy time, and a torrent keeps seeding from the download folder while the library sees the same bytes. Hard links only work inside a single filesystem. In Docker every volumes: entry is a separate filesystem inside the container, even when the host paths sit on the same disk. Two mounts means every import is a full copy, doubled disk usage, and a seeding copy that has to be kept separately.
Mount the common parent once, and give the download client the same mount:
services: scryer: volumes: - /srv/scryer/config:/config - /mnt/storage:/data sabnzbd: volumes: - /mnt/storage:/dataInside the containers, downloads and libraries are then subdirectories of one tree:
/data├── downloads├── movies├── series└── animeThe pattern to avoid is mounting each role separately:
volumes: - /mnt/storage/downloads:/downloads - /mnt/storage/movies:/movies - /mnt/storage/series:/seriesSame disk, three filesystems as far as the container can tell. Every import becomes a copy.
When downloads really do live on a different disk, say an SSD scratch drive with the library on a spinning array, copies are unavoidable and a second mount is the honest layout. Mount each physical volume once and expect imports to copy and then delete the source.
The same rule applies outside Docker. Homebrew and binary installs hard-link when the download folder and the library root are on the same filesystem, and copy when they are not.
Organize Libraries By Content
Section titled “Organize Libraries By Content”A facet is the behavior category: Movies, Series, or Anime. A library is a root folder inside a facet with its own quality profile, permissions, and scan schedule. Create one library per audience or kind of content, and give each its own folder under the facet’s directory.
/data├── downloads├── movies│ ├── Movies│ ├── Anime Movies│ └── Kids Movies├── series│ ├── Series│ └── Kids Series└── anime └── AnimeThis is the recommended layout for almost everyone. It works because a library boundary is exactly where Scryer applies path ownership, access policy, and quality settings:
- Permissions follow the audience. A kids account is granted the Kids libraries and nothing else, and its requests land there.
- Quality follows the content. Anime Movies can run a different profile and persona from Movies without a separate facet.
- Media servers map one to one. Plex, Jellyfin, and Emby already want one library per folder, so each Scryer library becomes one media server library with no path juggling.
- Every title has one home. A movie is in Movies or in Kids Movies, never both.
Facet directories such as movies and series are conventions, not requirements. What matters is that each library root is a distinct folder and that all of them sit under the single mount described above.
Anime series belong in the Anime facet, which carries anime-specific parsing and episode handling. Anime films are harder, and the answer depends on the film:
- Standalone films such as Spirited Away go in an Anime Movies library under Movies. They are films first, and a dedicated library keeps them out of the main Movies list.
- Films tied to a series, such as the Chainsaw Man Reze Arc film, are a gray area. Whether they belong with the series or in Anime Movies depends on your media server and how it groups a series with its films. Keeping them with the series in Anime keeps the story in one place. Putting them in Anime Movies keeps the Anime library purely episodic. Both work, and it is personal preference.
Split By Quality Profile Only If You Must
Section titled “Split By Quality Profile Only If You Must”Some setups keep a strict 4K and 1080p split, usually because a media server needs separate libraries for HDR content or because some playback devices cannot handle 4K. In Scryer that is modeled as parallel libraries in the same facet:
/data├── movies│ ├── Movies│ └── Movies 4K└── series ├── Series └── Series 4KEach 4K library runs a quality profile whose tiers include only 2160p, and each standard library caps at 1080p. This is the layout the Sonarr and Radarr migration produces when you bring across separate 1080p and 4K instances.
Treat it as a fallback, not a default. It costs you:
- Two copies of every title you want at both qualities, with double the storage and double the monitoring.
- Two entries in the catalog for what is really one film or show, plus two places for requests to land.
- Duplicated settings across each pair of libraries.
Scryer will eventually support two quality profiles on a single title, which makes a hard split unnecessary. If you can live with one quality per title today, organize by content and let the profile decide the tiers. If you cannot, split now and plan to merge the pairs when per-title dual profiles arrive.
Folders Inside A Library
Section titled “Folders Inside A Library”Scryer expects every movie and every series to have its own folder directly under the library root. Season folders are optional.
/data/movies/Movies├── Dune (2021)│ ├── Dune (2021) 2160p.mkv│ └── movie.nfo└── Spirited Away (2001) └── Spirited Away (2001) 1080p.mkv
/data/series/Series├── Severance (2022)│ ├── Season 01│ │ └── Severance S01E01.mkv│ └── tvshow.nfo└── The Bear (2022) └── The Bear S01E01.mkvEpisodes can sit directly in the series folder or inside Season 01, S01, Specials, and similar folders. Scryer infers which layout a series uses from what it finds. Do not mix the two in one series, and do not put an episode in a folder for a different season, because that makes the layout ambiguous.
One title, one folder
Section titled “One title, one folder”A title owns exactly one folder. Every season, special, and edition of that title lives inside it. If two folders resolve to the same title, the first one scanned claims it and the second is reported as unmatched with the reason that the title already owns another folder. Nothing is merged for you.
This bites anime users most. Bleach and Bleach: Thousand-Year Blood War are one series in metadata terms, with Thousand-Year Blood War as later seasons. A Bleach folder next to a Bleach - Thousand-Year Blood War folder will not work. Merge them into one Bleach folder with the later episodes under their season before you scan. The same applies to any show whose arcs or parts were split into separate folders.
Naming and .nfo files
Section titled “Naming and .nfo files”How Scryer identifies a folder depends on how you set up:
- Migration wizard. Scryer takes each title’s identity from Sonarr or Radarr, so folder names do not matter for matching.
- From scratch. Scryer reads the folder name for a title and year, then looks for sidecars:
movie.nfoor a.nfowith the same name as the video file for movies,tvshow.nfofor series, and.plexmatchfiles. Sonarr, Radarr, Jellyfin, Emby, and Kodi all write compatible files with TVDB, TMDB, or IMDb ids. When an id is present, matching is exact. Without one, Scryer searches metadata by name and year, and a bare or ambiguous name such asBleachorDunecan match the wrong title.
Before scanning a library from scratch, either name folders Title (Year) or make sure well-formed .nfo files are in place. Anything Scryer could not match is listed in the scan results for you to resolve.
Path Rules
Section titled “Path Rules”These apply to every install method:
- Keep paths stable. Scryer stores final media roots and the completed-download path. Changing them means re-mapping every library.
- Same path on both sides. The download client must report completed items at the path Scryer sees. Mounting the same parent in both containers is the simplest way to guarantee that.
- Avoid path translation. Identical paths on both sides remove a whole class of import ambiguity.
- Keep
/configseparate. In Docker, mount Scryer’s configuration volume outside the image and outside the media mount. - Check the process account. Scryer must be able to read the download folder and write every library root.
Pre-Flight Checklist
Section titled “Pre-Flight Checklist”Before you enable monitoring:
- Confirm one mount covers downloads and libraries, or that each mount is a genuinely separate physical volume.
- Confirm Scryer can read and write every library root.
- Confirm a completed download is visible to Scryer at the path the client reports.
- Decide on your libraries per facet and create the folders before adding the libraries.
- Import one real title end to end and check whether it hard-linked or copied.
- Run a library scan only after the roots are correct.
Related
Section titled “Related”- Facet and Library define the two levels this page organizes.
- Quality Profiles covers the profile each library is assigned.
- Docker has the full compose example.
- Import describes how completed items move into a library root.