Error updating Roon on QNAP Docker from build 1646 to 1653 (ref#8CNKWC)

Hi! What’s not quite right with Roon?

· None of the above quite fits

None of the above quite fits

· None of these quite match

Tell us what's going on

· Been running the QNAP docker image with the production build 1646. Went to update to new production 1653 using my Roon remote and the server update fails … downloads but when ‘installing’ I get an error saying there was an error looking for an update. Tried restarting the container, no effect.

Has the process for updating Roon changed with the move to Docker for QNAP?

Tell us about your home network

· N/A

Hey @DaveHedgehog,

Thanks for writing in and for sharing your report! We were able to review a fresh server diagnostic report, and observed the following:

  1. Download of RoonServer_linuxx64_206501653.tar.bz2 completes successfully
  2. The update script begins extracting to /Roon/app/RoonServer/.update.tmp
  3. tar immediately fails with:
tar: RoonServer/RoonDotnet/host/fxr/10.0.6: Cannot change mode to rwxr-xr-x: Bad address
The error "Cannot change mode to rwxr-xr-x: Bad address" is a Linux kernel chmod/fchmodat syscall failure. In a Docker container context on QNAP, this almost always means one of two things:
  1. the /Roon/app volume is mounted noexec or with restricted permissions, preventing tar from setting executable bits on directories during extraction.
  2. Or, the QNAP kernel (5.10.60-qnap, visible in your log) doesn't support a syscall used by the newer version of tar or .NET 10 runtime that build 1653 bundles. Build 1646 used .NET runtime files, and build 1653 ships RoonDotnet/shared/Microsoft.NETCore.App/10.0.6 a newer runtime, which may require kernel features your QNAP kernel doesn't expose inside the container.
Some next troubleshooting steps for you:
  1. Check your Docker volume mount options - In QNAP's Container Station (or your docker-compose.yml/run command), look at how /Roon/app is mounted. Make sure it does not have noexec or ro (read-only) flags. It should be a plain read-write mount with no restrictions. If you're using a bind mount to a QTS shared folder, try changing it to a Docker-managed volume instead.
  2. Try to pull the new Docker image directly instead of using in-app update.
  3. Verify kernel compatibility - Run this in your container's shell to check:
uname -r
If you're on an older QNAP ARM or x86 NAS with a heavily patched kernel, you may need to ensure your QNAP firmware is up to date before the new runtime will work.

Let me know if any of the above help! :folded_hands:

  1. The Roon/App directory has read/write/execute permissions
  2. The docker image isn’t the issue - I am already on 1.0.6
  3. 5.10.60-Qnap . The Qnap is a TS-464 which is a current model running Firmware
    QTS 5.2.9.3451 which is the latest. If this is a problem then all QNAP users are not going to be a able to run 2.65 in Docker

Yes it has. You must follow the new procedure outlined in several other threads, and on the pinned announcement made recently in these forums.

Hello @DaveHedgehog ,

Just to confirm, you’ve tried to follow this guide when you were updating to the latest Docker RoonServer version?

My apologies if my original post didn’t make it clear. I have been running Stephen’s Docker image since it was released, without issues, using the then Roon production 1646.

When I tried to update from 1646 to 1653, yesterday, then I received the error. It looks like others are seeing similar issues.

I have been running Stephen’s docker image since it was released. So the guide didn’t exist then but I have followed the same steps.
The issue is with updating Roon from 1646 which I was running inside Stephen’s container for 2 weeks without issues to 1653.

Step 5 in the guide does not work for me because it’s missing what to enter under Advanced Settings.

So as others have report in the early access thread, if I recreate the QNAP container station application and specify ROON_INSTALL_BRANCH=earlyaccess and then recreate again with ROON_INSTALL_BRANCH=production; Roon updates without issues from inside the container. The issue seems to be with requesting the update to 1653 from a Roon remote.

So I am now up and running on 1653 but I think this does need investigation for future update.

roon-docker ‘s entrypoint.sh is running TAR with parameters “–no-same-permissions --no-same-owner” to work around this issue , while RoonServer/start.sh doesn’t (yet).

RoonServer/start.sh STDERR output, collected from RoonServer/Logs/RoonServer_log.txt
04/28 11:20:24 Trace: [base/Roon updater script stdout] Install package is at: /tmp/0f821ff4-4931-4390-a4b1-f1efe07916a7__RoonServer
_linuxx64_206501653.tar.bz2
04/28 11:20:24 Trace: [base/Roon updater script stdout] Installing to: /Roon/app/RoonServer
04/28 11:20:24 Trace: [base/Roon updater script stdout] Removing any old update...
04/28 11:20:24 Trace: [base/Roon updater script stdout] Untarring new install to /Roon/app/RoonServer/.update.tmp
04/28 11:20:24 Trace: [base/Roon updater script stderr] tar: RoonServer/RoonDotnet/host/fxr/10.0.6: Cannot change mode to rwxr-xr-x:
 Bad address
04/28 11:20:24 Trace: [base/Roon updater script stderr] tar: RoonServer/RoonDotnet/host/fxr: Cannot change mode to rwxr-xr-x: Bad ad
dress
04/28 11:20:24 Trace: [base/Roon updater script stderr] tar: RoonServer/RoonDotnet/host: Cannot change mode to rwxr-xr-x: Bad addres
s
04/28 11:20:27 Trace: [base/Roon updater script stderr] tar: RoonServer/RoonDotnet/shared/Microsoft.NETCore.App/10.0.6: Cannot chang
e mode to rwxr-xr-x: Bad address
04/28 11:20:27 Trace: [base/Roon updater script stderr] tar: RoonServer/RoonDotnet/shared/Microsoft.NETCore.App: Cannot change mode 
to rwxr-xr-x: Bad address
04/28 11:20:27 Trace: [base/Roon updater script stderr] tar: RoonServer/RoonDotnet/shared: Cannot change mode to rwxr-xr-x: Bad addr
ess
04/28 11:20:27 Trace: [base/Roon updater script stderr] tar: RoonServer/RoonDotnet: Cannot change mode to rwxr-xr-x: Bad address
04/28 11:20:27 Trace: [base/Roon updater script stderr] tar: RoonServer/Appliance/webroot/2/assets: Cannot change mode to rwxr-xr-x:
 Bad address
04/28 11:20:27 Trace: [base/Roon updater script stderr] tar: RoonServer/Appliance/webroot/2: Cannot change mode to rwxr-xr-x: Bad ad
dress
04/28 11:20:27 Trace: [base/Roon updater script stderr] tar: RoonServer/Appliance/webroot/img: Cannot change mode to rwxr-xr-x: Bad 
address
04/28 11:20:27 Trace: [base/Roon updater script stderr] tar: RoonServer/Appliance/webroot: Cannot change mode to rwxr-xr-x: Bad addr
ess
04/28 11:20:32 Trace: [base/Roon updater script stderr] tar: RoonServer/Appliance: Cannot change mode to rwxr-xr-x: Bad address
04/28 11:20:32 Trace: [base/Roon updater script stderr] tar: RoonServer/Server: Cannot change mode to rwxr-xr-x: Bad address
04/28 11:20:32 Trace: [base/Roon updater script stderr] tar: RoonServer: Cannot change mode to rwxrwxrwx: Bad address
04/28 11:20:32 Trace: [base/Roon updater script stderr] tar: Exiting with failure status due to previous errors
04/28 11:20:32 Trace: [base/Roon updater script stdout] ERROR: failed to tar xf /tmp/0f821ff4-4931-4390-a4b1-f1efe07916a7__RoonServe
r_linuxx64_206501653.tar.bz2 -C /Roon/app/RoonServer/.update.tmp
04/28 11:20:32 Error: [appupdater] While installing update: System.Exception: update installer exited with 1

to manually reproduce the issue, i ran these commands

[admin@myTVS-682 ~]# docker ps
CONTAINER ID   IMAGE                                COMMAND            CREATED       STATUS                 PORTS     NAMES
553609b4306f   ghcr.io/roonlabs/roonserver:latest   "/entrypoint.sh"   5 hours ago   Up 4 hours (healthy)             roonserver
[admin@myTVS-682 ~]# docker exec 553609b4306f curl -L -o /tmp/RoonServer_linuxx64.tar.bz2 https://download.roonlabs.net/builds/production/RoonServer_linuxx64.tar.bz2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  108M  100  108M    0     0  35.5M      0  0:00:03  0:00:03 --:--:-- 35.5M
[admin@myTVS-682 ~]# docker exec 553609b4306f mkdir /Roon/app/tmp
[admin@myTVS-682 ~]# docker exec 553609b4306f tar xf /tmp/RoonServer_linuxx64.tar.bz2 -C /Roon/app/tmp
tar: RoonServer/RoonDotnet/host/fxr/10.0.6: Cannot change mode to rwxr-xr-x: Bad address
tar: RoonServer/RoonDotnet/host/fxr: Cannot change mode to rwxr-xr-x: Bad address
[ . . . ]
tar: RoonServer/Server: Cannot change mode to rwxr-xr-x: Bad address
tar: RoonServer: Cannot change mode to rwxrwxrwx: Bad address
tar: Exiting with failure status due to previous errors
[admin@myTVS-682 ~]# 
[admin@myTVS-682 ~]# docker exec 553609b4306f tar xf /tmp/RoonServer_linuxx64.tar.bz2 -C /Roon/app/tmp --no-same-owner --no-same-permissions
[admin@myTVS-682 ~]# 

the easiest way to force a RoonServer reinstall, would be to manually delete APP’s VERSION file /share/Container/roon/app/RoonServer/VERSION (replace /share/Container/roon with whatever you used while configuring your QNAP roon-server container) ; not tested, since i did it the “hard way” (patch RoonServer/start.sh , run “/Roon/app/RoonServer/start.sh --update /tmp/RoonServer_linuxx64.tar.bz2 /Roon/app/RoonServer”, followed by a container restart)