This guide explains how to run the official RoonServer Docker image on a QNAP NAS using Container Station.
Useful Links:
GitHub repository: https://github.com/RoonLabs/roon-docker
Configuration generator: https://roonlabs.github.io/roon-docker/
Source: QNAP documentation: Container Station Quick Start Guide.
Make sure your QNAP NAS has:
Container Station installed from App Center.
x86_64 / amd64 processor. ARM is not supported.
4 GB RAM minimum.
SSD-backed storage is strongly recommended for the Roon database.
Roon Remote devices on the same local network as the QNAP NAS.
Open App Center on your QNAP NAS.
Search for Container Station.
Click Install.
Follow the setup prompts.
If QNAP asks where to install Container Station, select the storage volume where you want the Container Station data to live.

Note: depending on the QNAP storage setup, especially thick or thin volumes, Container Station may ask you to select the partition or volume where the app will be installed during setup.
After installation is complete, open Container Station.
Open Container Station.
In the top bar near the Explore button, unwind the dropdown list.
Click Create Application.
Generate the Roon Docker Configuration Generator: https://roonlabs.github.io/roon-docker/
In Platform, select QNAP from the dropdown.
In Volumes, leave the default entries as they are unless you need to add more folders.
If you need to add another folder, click the + button.
In Options, select the items you need.
Verify that the correct timezone was selected.
Do not disable the recommended options unless you understand the impact.
Click the Copy button in the upper-right corner to copy the generated Docker Compose file.
Return to Container Station.
In the Application name input field, replace the default value, usually app-1, with the name you want to use for this RoonServer container.
Important for QNAP: The Application name must strictly follow Docker Compose naming conventions. It must contain only lowercase letters, numbers, hyphens (-), or underscores (_), and must begin with a lowercase letter or number. Uppercase letters, spaces, and other special characters are strictly forbidden and will prevent the container from being created.
Recommended example: roon-server
In the YAML code section, paste the Docker Compose file you copied from the generator.
Click Validate.
If the YAML is valid, you should see a green checkmark.

If validation fails, review the YAML and confirm that the copied content is complete.
Click Create at the bottom of the modal.
Wait for the background task to finish.
You should see a task similar to:
When the task is complete, the RoonServer container should appear as running.
Stop the native QNAP application via the App Store
Open Roon on your phone, tablet, or computer.
Make sure the device is on the same local network as the QNAP NAS.
On the startup screen, click the Select a different Roon Server button if prompted.
Select the new Roon Server instance from the list and log in with your Roon account credentials.

On the Login screen, you can choose to restore a backup immediately or start fresh and restore your backup later from the Roon Settings -> Backup.
Important Note: If you restore a backup during this step, the Roon Server will restart. If Roon brings you back to the initial setup screen after the restart, do not restore the backup again. Simply select Login and Deauthorize the old core one final time to complete the setup and access your Home screen.

The generated Compose file should include mappings for the main Roon folders:
Roon data | /Roon | Stores the Roon 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 | Points to your local music library. This can usually be mounted read-only. |
Roon backups | /RoonBackups | Optional but strongly recommended. Configure backups in Roon under Settings > Backups. |

Only edit the QNAP host paths if needed. Do not change /Roon, /Music, or /RoonBackups unless you know why you are changing them.
Make sure the generated configuration keeps the recommended settings enabled.
The most important one is host networking. Host networking is required for Roon discovery. Without it, Roon Remote may not find RoonServer, and RoonServer may not discover audio devices on your network.
Confirm that the full Docker Compose file was copied from the generator and pasted into the YAML code section.
Confirm that the container is running, host networking is enabled, and your Roon Remote device is on the same local network as the QNAP NAS.
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.
Confirm that the QNAP host folder exists and is mapped to /Music inside the container. In Roon, use the container path, not the QNAP host path.