This guide explains how to run the official Roon Server Docker image on TrueNAS SCALE (specifically version 24.10 "Electric Eel" or later). TrueNAS 24.10 and later features a native Docker-based runtime, and custom applications are deployed using Docker Compose YAML configuration through the Apps interface.
Useful Links:
GitHub repository: https://github.com/RoonLabs/roon-docker
Configuration generator: https://roonlabs.github.io/roon-docker/
Make sure your TrueNAS server has:
TrueNAS SCALE 24.10 (Electric Eel) or newer.
x86_64 / amd64 processor. ARM is not supported.
4 GB RAM minimum.
Roon Remote devices on the same local network as the TrueNAS system.
Create ZFS Datasets: Before generating your configuration, create a dedicated ZFS dataset for each volume Roon will mount. Per-app datasets give you independent snapshots and cleaner migrations later.
Go to Datasets, select your pool, click Add Dataset, and name each one. For example, on a pool called Main:
Main/Roon
Main/Music
Main/RoonBackups

Note: We strongly recommend storing the Roon database on SSD-backed storage for optimal performance. The dataset used for your /Roon Volume should live on an SSD pool.
Open the Roon Docker Configuration Generator.
Select TrueNAS as your platform.

Enter your timezone and the full host paths to the datasets you created (e.g., /mnt/Main/Roon).
Copy the generated Docker Compose output.
In the TrueNAS web interface, go to Apps.
Click Discover Apps.
Click the ⋮ overflow menu next to the blue Custom App button and select Install via YAML.

Provide an application name, for example roonserver.
Paste the Docker Compose YAML from the generator into the Custom Config field.
Double-check the host paths on the left side of each colon (:) to ensure they perfectly match the datasets you created.
Click Save. TrueNAS will pull the image and start the container based on your YAML configuration.

TrueNAS paths are strictly case-sensitive. /mnt/Main/ and /mnt/main/ are different paths.
Typos can produce Permission denied errors because Docker may silently create a directory on the boot-pool's noexec filesystem instead of your actual storage pool. Double-check capitalization against the exact pool name shown in Storage > Pools.

RoonServer uses three main storage locations:
Purpose | Container path | Notes |
Roon data | /Roon | RoonServer state: database, settings, identity, logs, and application files. Must be writable and persistent. SSD-backed storage is strongly recommended for the best experience. |
| Music library | /Music | Your local music library. This can usually be mounted read-only. |
Roon backups | /RoonBackups | Optional but strongly recommended. Configure backups in Settings > Backups. |
Network Type: The generator sets network_mode: host. Host networking is absolutely required for Roon discovery. Without it, Roon Remote may not find the server, and the server may not discover audio endpoints on your network.
Two release branches are available:
production — stable releases. This is the default.
earlyaccess — pre-release builds, updated more frequently.
You can set this via the configuration generator before copying your YAML. Switching channels takes effect on the next container restart.
If you are moving an existing Roon installation into Docker, use Roon's built-in backup and restore:
In your current native Roon installation, disable all watched storage folders (Settings > Storage). This avoids path conflicts after migration.
Create a backup (Settings > Backups > Back Up Now).
Copy the backup to a location accessible from your new TrueNAS dataset mapping (e.g., your Main/RoonBackups dataset).
Start the new Docker container. On first launch, it will prompt you to set up or restore.
Choose Restore and point it to the backup.
Once the restore is complete, edit your music folders' paths with the paths as they appear inside the Docker container (i.e., /Music).
After the container starts:
Confirm the application is running in the TrueNAS Apps interface.
Open Roon on your phone, tablet, or computer.
Make sure your Roon Remote device is on the same local network as the TrueNAS system.
Select the Roon Server running on TrueNAS.
Set up a new Roon Server or restore from backup.
Go to Settings > Storage and confirm your music folder is visible.
Permission denied errors / App fails to deploy. Confirm you have not made a typo in your host paths. Remember that TrueNAS paths are case-sensitive. Verify that the generator is included user: "0:0" in the YAML.
Roon Remote cannot find Roon Server Confirm that host networking is active and that your Roon Remote device is on the same local network as the TrueNAS system.
Performance is poor Confirm that the /Roon mapping points to an SSD-backed ZFS pool. For the best experience, the Roon database should not live on a spinning disk array.