One container gives you the full dashboard, the SABnzbd/NZBGet API for Sonarr & Radarr, and the built-in indexer. Search, download, map three folders, done.
nzbfast runs on DSM 7 as a Docker container through Container Manager (on DSM 6 the same app is called Docker). The image is multi-arch, so it runs unchanged on both Intel and ARM Synology models.
nzbfast/nzbfast (the one Container Manager can search) and on GitHub as
ghcr.io/nzbfast/nzbfast. Use whichever you like. This guide uses the Docker Hub name.The container writes downloads as a specific user ID so the files belong to you, not to root. Find yours once:
Control Panel → Terminal & SNMP → tick Enable SSH service.
SSH in and run:
id your_dsm_username
Note the uid= and gid= numbers. On most Synology boxes the first user
is uid=1026 and the group users is gid=100, but use whatever
id prints. You can turn SSH back off afterwards.
One file you can back up, re-use, and update with a single click. This is the route to take if you want nzbfast to keep itself up to date.
File Station → make the project folder, e.g. /docker/nzbfast. Then Container Manager →
Project → Create, name it nzbfast, path /docker/nzbfast,
source Create docker-compose.yml.
services:
nzbfast:
image: nzbfast/nzbfast:latest
container_name: nzbfast
restart: unless-stopped
ports:
- "6789:6789"
environment:
- PUID=1026 # your uid (id your_dsm_username)
- PGID=100 # your gid
- TZ=Europe/London # your timezone
# - NZBFAST_APIKEY=change-me # only if you'll connect Sonarr/Radarr
volumes:
- ./config:/config # settings + index database
- ./downloads:/downloads # finished files
- ./watch:/watch # drop an .nzb here to auto-download
# Optional: checks nightly for a newer nzbfast image and recreates the
# container when one ships. Delete this service to update by hand instead.
watchtower:
image: containrrr/watchtower
container_name: nzbfast-watchtower
restart: unless-stopped
environment:
- TZ=Europe/London # same timezone, so the schedule below is your 04:00
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --cleanup --schedule "0 0 4 * * *" nzbfast # daily 04:00, nzbfast only
The ./config, ./downloads and ./watch folders are
created for you inside the project folder.
Container Manager pulls the images and starts them. Then jump to First run below.
watchtower block and update by hand (see Updating). It is scoped to
the nzbfast container by the name at the end of the command line, so it will
never touch your other containers.No text files at all. The trade-off: a container built this way cannot auto-update, because Container Manager's volume picker only browses shared folders and so cannot mount the Docker socket that Watchtower needs. You update it by hand, a few clicks each release.
File Station → create a shared folder or sub-tree for the container's data, e.g.:
/docker/nzbfast/config | settings + index database |
/docker/nzbfast/downloads | finished files land here |
/docker/nzbfast/watch | drop an .nzb here to auto-download it |
Container Manager → Registry → search nzbfast → select
nzbfast/nzbfast → Download → tag latest.
Container Manager → Image → select nzbfast/nzbfast:latest → Run. In the wizard:
| Folder (on your NAS) | Mount path |
|---|---|
/docker/nzbfast/config | /config |
/docker/nzbfast/downloads | /downloads |
/docker/nzbfast/watch | /watch |
| Variable | Value |
|---|---|
PUID | your uid (e.g. 1026) |
PGID | your gid (e.g. 100) |
TZ | your timezone, e.g. Europe/London |
Then jump to First run below.
There is no config file to edit. Open http://YOUR_NAS_IP:6789.
A Welcome panel asks for your Usenet server. Enter the host, username, password and connection
count from your provider's welcome email and save. It applies immediately, no restart. Drop an
.nzb on the dashboard (or into the watch folder) and it downloads.
nzbfast speaks the SABnzbd API. In your *arr app, add a SABnzbd download client:
Host = your NAS IP, Port = 6789, API Key = the value you set in
NZBFAST_APIKEY. It also exposes the NZBGet JSON-RPC API, so nzb360 / LunaSea connect the same way.
The image is the update channel: nzbfast in a container never swaps its own binary,
you move it forward by pulling a newer image. Your config and downloads survive,
because they live in your NAS folders and not inside the container.
watchtower service: nothing to do.
It checks nightly at 04:00 and recreates the container when a new version ships.nzbfast → Stop,
then Build (this re-pulls latest), then Start.latest tag,
then Container → stop nzbfast → Action → Reset to recreate it on the new image.nzbfast/nzbfast:latest. If it is pinned to a version, say :1.0.3, then neither
Watchtower nor a re-pull will ever move it: both fetch the tag the container was created with. Container
Manager → Container → Details shows which one you have.PUID/PGID don't match
the folder owner. Re-check with id your_dsm_username. This is the most common issue.6889:6789) and browse to :6889.nzbfast/nzbfast.latest tag rather than a pinned
version, and that the schedule ran in your timezone (set TZ on the watchtower service, or
0 0 4 * * * means 04:00 UTC). sudo docker logs nzbfast-watchtower shows its next run.