This guide explains how to run the official Roon Server Docker image on an ASUSTOR NAS using Portainer.
Useful Links:
GitHub repository: https://github.com/RoonLabs/roon-docker
Configuration generator: https://roonlabs.github.io/roon-docker/
Make sure your ASUSTOR NAS has:
ADM 4 or later.
Portainer installed from App Central.
x86_64 / amd64 processor. ARM is not supported.
4 GB RAM minimum.
Roon Remote devices on the same local network as the NAS.

Note: We strongly recommend storing the Roon database on SSD-backed storage for optimal performance. When possible, place your /Roon folder on an SSD volume rather than on spinning disks.
ASUSTOR commonly uses Portainer to manage Docker containers. In Portainer, a Docker Compose configuration is deployed as a "Stack". This is the recommended setup method because the configuration generator creates the exact Compose file you need.
Install Portainer from App Central if it is not already installed.
Open Portainer and connect to the local Docker environment.
Open the Roon Docker Configuration Generator.
Select ASUSTOR as your platform.
Enter your timezone and folder paths. Make sure the Roon data path points to SSD-backed storage when possible.
Copy the generated Docker Compose output.
In Portainer, go to Stacks.
Click Add Stack.
Give the stack a name, for example roonserver.
Paste the Compose file from the generator into the web editor.
Review and adjust the volume paths to match your NAS directory structure perfectly.
Click Deploy the stack.
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: Make sure the generated configuration uses host networking (network_mode: host). Host networking is required for Roon discovery. Without it, Roon Remote may not find Roon Server, and Roon Server may not discover audio devices on your network.
Restart Policy: Make sure the stack or container is configured to restart automatically after a NAS reboot (e.g., restart: unless-stopped).
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).
Stop the native application.
Copy the backup to a location accessible from your new ASUSTOR host mapping (e.g., your /RoonBackups folder).
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 stack is deployed:
Confirm the container is running in Portainer.
Open Roon on your phone, tablet, or computer.
Make sure the device is on the same local network as the ASUSTOR NAS.
Select the Roon Server running on the ASUSTOR NAS.
Set up a new Roon Server or restore from backup.
Go to Settings > Storage and confirm your music folder is visible.
Roon Remote cannot find Roon Server Confirm that host networking is enabled and that your Roon Remote device is on the same local network as the NAS.
Performance is poor Confirm that the /Roon mapping points to SSD-backed storage when possible. The Roon database should not live on a spinning disk if you want the best experience.
Music folder is missing Confirm that the ASUSTOR host folder exists and is mapped to /Music inside the container. In Roon, use the container path (/Music), not the ASUSTOR host path.
Permission problems Confirm that Portainer and the Docker daemon have permission to access the host folders used for /Roon, /Music, and /RoonBackups.