nzbfast on Synology

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.

Two registries, one image. The identical image lives on Docker Hub as 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.

First: your PUID / PGID · 30 seconds

The container writes downloads as a specific user ID so the files belong to you, not to root. Find yours once:

  1. Enable SSH

    Control Panel → Terminal & SNMP → tick Enable SSH service.

  2. Read your IDs

    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.

Route A: Container Manager Project recommended

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.

  1. Create the project

    File Station → make the project folder, e.g. /docker/nzbfast. Then Container Manager → ProjectCreate, name it nzbfast, path /docker/nzbfast, source Create docker-compose.yml.

  2. Paste this

    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.

  3. Finish the wizard

    Container Manager pulls the images and starts them. Then jump to First run below.

About that last service. Watchtower is what keeps nzbfast current, and it needs the Docker socket to recreate containers. That access is root-equivalent on your NAS, so it is a real trade: convenience against handing one container broad control. If you would rather not, delete the 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.

Route B: Container Manager, search and click

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.

  1. Make the folders

    File Station → create a shared folder or sub-tree for the container's data, e.g.:

    /docker/nzbfast/configsettings + index database
    /docker/nzbfast/downloadsfinished files land here
    /docker/nzbfast/watchdrop an .nzb here to auto-download it
  2. Get the image

    Container Manager → Registry → search nzbfast → select nzbfast/nzbfastDownload → tag latest.

  3. Create the container

    Container Manager → Image → select nzbfast/nzbfast:latestRun. In the wizard:

    • General: turn on Enable auto-restart.
    • Port: map local 6789 → container 6789 (change the local side only if 6789 is taken).
    • Volumes: add three folder mounts:
    Folder (on your NAS)Mount path
    /docker/nzbfast/config/config
    /docker/nzbfast/downloads/downloads
    /docker/nzbfast/watch/watch
    • Environment: add these variables:
    VariableValue
    PUIDyour uid (e.g. 1026)
    PGIDyour gid (e.g. 100)
    TZyour timezone, e.g. Europe/London
  4. Run it

    Then jump to First run below.

First run: add your provider

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.

Connecting Sonarr / Radarr

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.

Updating

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.

Check your image tag first. All of the above assumes your container is on 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 → ContainerDetails shows which one you have.

Troubleshooting

Which models? Any DSM 7 unit with Container Manager (most DSM 6 units with Docker), Intel or ARM64. Very low-end ARMv7/32-bit models aren't supported. Same image also runs on Unraid, TrueNAS SCALE and QNAP Container Station.