QNAP Docker: fresh RoonServer install shows “Cannot change mode … Bad address”, but build 1684 starts after restart

Hi all,

I think I have finally isolated what is happening with Roon Server updates on my QNAP Docker installation, and I found a workaround that allowed me to update Roon Server without losing my existing configuration.

My setup:

QNAP TS-453Be
QNAP Container Station
Docker Compose
Roon Docker image: Package roonserver · GitHub
network_mode: host
ROON_INSTALL_BRANCH=earlyaccess

My Roon Server was stuck on:

Roon Server 2.71 build 1676 earlyaccess

while the current Early Access build was 1684.

Roon could see/check for the update, but the update process was not completing correctly.

My compose configuration was:

services:
roonserver:
image: Package roonserver · GitHub
container_name: roonserver
network_mode: host
environment:

  • ROON_INSTALL_BRANCH=earlyaccess
  • TZ=Europe/Rome
    volumes:
  • /share/Multimedia/RoonOnNAS:/Roon
  • /share/Musica:/Music
  • /share/Multimedia/RoonBackups:/RoonBackups
    restart: unless-stopped
    logging:
    driver: local

FIRST TEST: COMPLETELY FRESH /Roon DIRECTORY

To rule out corruption or leftovers from the old Roon installation, I first renamed my old persistent Roon directory and created a completely new empty one.

The container correctly detected that there was no existing RoonServer installation:

Roon Docker image 1.0.7 starting.

No existing RoonServer install found under /Roon/app/RoonServer.
Resolved ROON_INSTALL_BRANCH=‘earlyaccess’.
No install present; installing branch ‘earlyaccess’.

Downloading from:

https://download.roonlabs.net/builds/earlyaccess/RoonServer_linuxx64.tar.bz2

100%

During extraction, however, I got these errors:

tar: RoonServer/Appliance/.roonhost/RAATServer: Cannot change mode to rwxr-xr-x: Bad address
tar: RoonServer/Appliance/.roonhost/RoonAppliance: Cannot change mode to rwxr-xr-x: Bad address
tar: RoonServer/Server/.roonhost/RoonServer: Cannot change mode to rwxr-xr-x: Bad address
tar: RoonServer/Server/.roonhost: Cannot change mode to rwxr-xr-x: Bad address
tar: RoonServer/Server: Cannot change mode to rwxr-xr-x: Bad address
tar: RoonServer/Appliance/.roonhost: Cannot change mode to rwxr-xr-x: Bad address
tar: RoonServer/Appliance: Cannot change mode to rwxr-xr-x: Bad address
tar: RoonServer: Cannot change mode to rwxr-xr-x: Bad address

tar: Exiting with failure status due to previous errors

Interestingly, because the container is configured with:

restart: unless-stopped

it restarted automatically.

On the next start I got:

Roon Docker image 1.0.7 starting.

Detected existing RoonServer install (branch: earlyaccess).
Resolved ROON_INSTALL_BRANCH=‘earlyaccess’.
Installed branch ‘earlyaccess’ matches requested branch; no reinstall needed.

Image: 1.0.7
Branch: earlyaccess
Roon: 2.71 (build 1684) earlyaccess

Started
Running

So despite tar reporting a failure, Roon Server 2.71 build 1684 had actually been installed well enough to start and run normally.

SECOND TEST: REINSTALL ONLY /Roon/app

I then tried a cleaner approach, because using a completely new /Roon directory means losing the existing Roon configuration unless a backup is restored.

Instead of replacing the whole /Roon directory, I stopped the container and renamed only:

/Roon/app

for example:

/Roon/app_OLD

I left the rest of the persistent Roon data untouched, especially:

/Roon/database

Then I restarted/recreated the container with exactly the same compose configuration.

Because /Roon/app/RoonServer was no longer present, the Docker image again detected that RoonServer was not installed:

No existing RoonServer install found under /Roon/app/RoonServer.
Resolved ROON_INSTALL_BRANCH=‘earlyaccess’.
No install present; installing branch ‘earlyaccess’.

It downloaded build 1684 again.

I still got the same:

Cannot change mode to rwxr-xr-x: Bad address

errors during extraction.

After the automatic restart, however:

Image: 1.0.7
Branch: earlyaccess
Roon: 2.71 (build 1684) earlyaccess

Started
Running

And this time the important part is that my existing Roon configuration was preserved.

I did not have to restore my database or reconfigure the server.

My existing library/database state and configuration remained in place because I only replaced the application files under:

/Roon/app

and left:

/Roon/database

untouched.

WORKAROUND

For QNAP Docker users who are stuck on an older Roon Server build, this worked for me:

  1. Stop the Roon Docker container.

  2. Rename:

/Roon/app

to something like:

/Roon/app_OLD

  1. Do NOT touch:

/Roon/database

  1. Start/recreate the container.

  2. Let the Docker image download and reinstall Roon Server.

  3. The extraction may still show:

Cannot change mode to rwxr-xr-x: Bad address

  1. With restart: unless-stopped enabled, the container restarts.

  2. In my case, Roon Server then started correctly on build 1684.

  3. The existing Roon configuration was preserved.

  4. Keep app_OLD temporarily until everything has been checked.

CONCLUSION

This seems to show that the problem is not necessarily caused by a corrupted Roon database.

The same “Cannot change mode … Bad address” error occurs even with a completely fresh /Roon directory.

The problem appears to happen during extraction / permission handling of the RoonServer files on the QNAP bind-mounted filesystem.

At least on my TS-453Be, tar reports failure when changing file modes, but the files themselves are apparently extracted sufficiently for RoonServer to start after the container restarts.

Renaming only /Roon/app seems to be a useful workaround because it forces a fresh RoonServer installation while preserving the existing database and configuration.

Has anyone else on QNAP seen exactly the same “Cannot change mode … Bad address” behaviour?

And for the Roon team: could this be related to chmod/fchmodat behaviour on QNAP’s filesystem or Docker bind mounts?

Happy to provide the complete container logs if useful.

Nicola

the tar problem is described here:
and it happened before as well:

https://community.roonlabs.com/t/cant-update-to-release-2-71-build-1683-on-docker-ref-pi57aa/323502/12