NAS
Torsher runs on a NAS as one container, next to the disks that hold your media. Every NAS system creates containers in its own way, so this page lists what Torsher needs and points to your system's documentation for the clicks.
What you'll get
Torsher running on your NAS, its data in a share you chose, and the control panel open in your browser.
Not verified on each NAS yet
NAS systems on x86 are part of the main target, and they are checked together with testers. The steps on this page haven't been verified on Unraid, TrueNAS SCALE or Synology yet. Where your NAS does something differently, follow its documentation, and please open an issue so this page can be fixed.
Which NAS works
| NAS | Status |
|---|---|
| Unraid, TrueNAS SCALE, and Synology or QNAP models with x86-64 (Intel or AMD) CPUs | Main target, not verified on each system yet |
| NAS with arm64 CPUs | Best effort: the image exists, without guarantees |
| Synology models with Realtek ARM CPUs, 32-bit ARM | Not supported: no image |
The NAS also needs to run Docker containers and have 4 GB of memory or more. See Requirements.
How each system runs containers:
- TrueNAS SCALE takes a Compose file under Apps, with Install via YAML. See Installing Custom Apps in the TrueNAS docs.
- Synology runs Compose files as projects in Container Manager. See Docker on DSM and check that your model supports Container Manager.
- Unraid runs containers from its Docker tab and doesn't support Docker Compose on its own. See Run Docker containers. Enter the values from step 3 in its container form.
Before you start
- Admin access to the NAS, and container support turned on in it.
- A way to run a command on the NAS, such as SSH, to look up user IDs. Your NAS documentation explains how to turn it on.
1. Create the folders
Torsher needs one folder on the NAS for /data: the database, downloads and the library. Create a share or dataset for it, for example torsher, on the pool where your media lives.
If you want the database on a different pool than the big disks, mount two folders, as in Several disks: a small one as /data and the big one as /storage, with downloads and the library both inside /storage.
Keep downloads and the library in one mounted folder
Kept files are hard-linked from downloads into the library and take no extra space. That only works inside one file system. Two shares or datasets may be separate file systems even on the same pool, and then every kept file is copied and takes space twice. The folder browser in the panel shows whether hard links work: check it before you fill the library.
Keep the database on the NAS's own disks. A folder that the NAS mounts from another machine over the network hasn't been checked for the database.
Your existing movies and series can stay where they are. Mount those folders read-only and add them to the library later; Torsher never writes there.
2. Pick the file owner
Torsher writes files as the user in PUID and PGID. On a NAS these are rarely 1000. Use the user who owns the folders from step 1, or a user you create for containers.
Find the IDs of a user over SSH:
id <user>uid is PUID, and gid is PGID (the group). That user must be able to read and write the Torsher folders. On start, the container gives its folders to this user where the NAS allows it, and stops with a clear message if it still can't write.
3. Create the container
If your NAS takes a Compose file, start from the example file and change three things:
# Copy to docker-compose.yml and adjust the values below.
#
# docker compose up -d # Torsher only
# docker compose --profile prowlarr up -d # Torsher and Prowlarr
#
# Then open http://<host>:8080/panel/ to create the owner account.
services:
torsher:
image: ghcr.io/torsher-app/torsher:latest
container_name: torsher
restart: unless-stopped
ports:
- '8080:8080'
environment:
# Owner of the files in /data on the host (`id -u` and `id -g`)
PUID: 1000
PGID: 1000
TZ: Etc/UTC
# Optional: key that encrypts indexer API keys in the database.
# Without it a key file is created in /data/db. Keep it with your backups
# TORSHER_SECRET: change-me
# Optional: your own TMDB API Read Access Token for the catalog instead
# of the app key built into the image
# TMDB_ACCESS_TOKEN:
# Behind a reverse proxy: its address or subnet, so that sign-in
# attempt limits see real client addresses. Don't set it without a proxy
# TRUST_PROXY: 172.18.0.0/16
volumes:
# One disk (recommended): database, keys, downloads (/data/torrents)
# and the library (/data/library) in one volume. Files you keep are
# hard-linked from downloads to the library and take no extra space
- ./data:/data
# Several disks: keep /data above for the database, mount the big disk
# once and choose /storage/torrents and /storage/library in
# Settings → Storage. Keep both folders in this one volume: two
# volumes, even on one disk, turn hard links into copies
# - /mnt/big:/storage
# Optional: your existing media folders, read-only
# - /path/to/movies:/media/movies:ro
# Optional: hardware transcoding on Intel or AMD graphics (VAAPI)
# devices:
# - /dev/dri:/dev/dri
# Optional: hardware transcoding on an NVIDIA GPU (NVENC). Needs the
# NVIDIA driver and the NVIDIA Container Toolkit on the host
# runtime: nvidia
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
# Optional: any Torznab indexer works. Prowlarr starts empty: you add
# the indexers you are allowed to use. The Torsher setup wizard finds it
# at http://prowlarr:9696 and asks only for its API key
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
restart: unless-stopped
profiles: [prowlarr]
ports:
- '9696:9696'
environment:
PUID: 1000
PGID: 1000
TZ: Etc/UTC
volumes:
- ./prowlarr:/config- Replace
./datawith the full path of the folder from step 1 on the NAS. - Set
PUIDandPGIDfrom step 2, andTZto your time zone, for exampleEurope/Berlin. - The
prowlarrservice doesn't start by default. To run it on the NAS too, delete itsprofiles: [prowlarr]line and replace./prowlarrwith a full path. See Indexers.
If your NAS has a container form instead, enter these values:
| Setting | Value |
|---|---|
| Image | ghcr.io/torsher-app/torsher:latest, or torsherapp/torsher:latest if the NAS searches only Docker Hub |
| Port | 8080 on the NAS to 8080 in the container |
| Folder | the folder from step 1 to /data |
| Variables | PUID, PGID, TZ |
| Restart policy | unless stopped |
| Device (optional) | /dev/dri to /dev/dri, for Intel or AMD graphics |
If port 8080 is taken on the NAS, pick another port on the NAS side, for example 8081, and keep 8080 on the container side.
4. Pass the GPU through (optional)
If the NAS has Intel or AMD graphics, pass /dev/dri into the container as a device. The NAS system must have a working driver for the GPU, which depends on the system and its version (not verified). The container finds the group that owns the device by itself. NVIDIA cards need the NVIDIA driver and the NVIDIA Container Toolkit on the NAS.
Details and checks: Hardware transcoding.
Check
- The NAS shows the
torshercontainer as running, and within a minute as healthy. - On your computer or phone, open
http://<server-address>:8080/panel/. The panel asks you to create the owner account and starts the setup wizard. - The wizard's storage step shows Library folder is writable and Kept files go to the library without extra space. No hard links, reflink works is fine too.
If something went wrong
- The container keeps restarting. Open its log in the NAS interface. See Troubleshooting.
- A folder is not writable.
PUIDandPGIDdon't match the folder's owner. See Troubleshooting. - The port is taken. See Troubleshooting.
- Kept files are copied. Downloads and the library are on different file systems. See Troubleshooting.
- The GPU failed the test. See Troubleshooting.
Next
- Setup wizard.
- Hardware transcoding, if the NAS has a GPU.