I followed this guide to install a custom docker app and it succeeded, but due to troubleshooting I had to uninstall it. Now when reinstalling it through the same way it won’t instalI and gives this error in the logs:
Feb 23 14:05:58 umbrel umbreld[4505]: [server ] [error] POST /apps.install App template not found
Hi denny! Dunno if you’ll make anything out of it tbh cause as I said it worked a couple times like this then it stopped. Although it originally also had that problem but then somehow it succeeded to install, I dunno… I’ve tried multiple times since then…
Edit: I should also add I cannot make the app to start on boot if it does not install on the dashboard for some reason. When it installed on the dashboard it would autostart though.
I made some adjustments to the umbrel-app.yml (updated the ID) and also changed the port to 8880 in the docker-compose.yml. Additionally, I added a checksum to the image.
Important: The ID in umbrel-app.yml must always match the folder name (hotio-qbittorrent)
Now I’m getting this: image (the app won’t appear on the store)
Your store seems to be working fine though.
That was also one of the problems of installing it before, but I think it fixed itself by making some minor, non-meaningful changes to the files. No idea why it’s happening. I also tried rebooting. Here’s the log:
Feb 24 08:52:26 umbrel umbreld[1080]: [apprepository] Checking for update for https://github.com/getumbrel/umbrel-apps.git
Feb 24 08:52:27 umbrel umbreld[1080]: [apprepository] https://github.com/getumbrel/umbrel-apps.git is already up to date
Feb 24 08:52:27 umbrel umbreld[1080]: [apprepository] Checking for update for https://github.com/lpv11/umbrel-hotio-qbit
Feb 24 08:52:27 umbrel umbreld[1080]: [apprepository] https://github.com/lpv11/umbrel-hotio-qbit is already up to date
Feb 24 08:52:57 umbrel umbreld[1080]: [umbreld ] [error] Failed to read hidden service for ui: ENOENT: no such file or directory, open '/home/umbrel/umbrel/tor/data/web/hostname'
Also these errors, I’m not sure if they’re relevant:
Feb 24 09:02:26 umbrel umbreld[1080]: [apprepository] Checking for update for https://github.com/getumbrel/umbrel-apps.git
Feb 24 09:02:27 umbrel umbreld[1080]: [apprepository] https://github.com/getumbrel/umbrel-apps.git is already up to date
Feb 24 09:02:27 umbrel umbreld[1080]: [apprepository] Checking for update for https://github.com/lpv11/umbrel-hotio-qbit
Feb 24 09:02:27 umbrel umbreld[1080]: [apprepository] https://github.com/lpv11/umbrel-hotio-qbit is already up to date
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=info msg="State transition: inventory-update-retry-wait [Sync] -> inventory-update [Sync]"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=info msg="Device unauthorized; attempting reauthorization"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=error msg="Failed to authorize with \"\": failed to build authorization request: failed to obtain authorization message data: failed to obtain identity data: failed to call /usr/share/mender/identity/mender-device-identity: fork/exec /usr/share/mender/identity/mender-device-identity: no such file or directory"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=warning msg="Reauthorization failed with error: transient error: authorization request failed"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=error msg="Failed to submit inventory data: transient error: authorization request failed"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=error msg="inventory submit failed: transient error: authorization request failed"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=warning msg="Failed to refresh inventory: failed to submit inventory data: inventory submit failed: transient error: authorization request failed"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=info msg="State transition: inventory-update [Sync] -> inventory-update-retry-wait [Sync]"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=info msg="Handle update inventory retry state try: 11"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=info msg="Device unauthorized; attempting reauthorization"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=error msg="Failed to authorize with \"\": failed to build authorization request: failed to obtain authorization message data: failed to obtain identity data: failed to call /usr/share/mender/identity/mender-device-identity: fork/exec /usr/share/mender/identity/mender-device-identity: no such file or directory"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=warning msg="Reauthorization failed with error: transient error: authorization request failed"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=error msg="Failed to submit inventory data: transient error: authorization request failed"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=error msg="inventory submit failed: transient error: authorization request failed"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=warning msg="Failed to refresh inventory: failed to submit inventory data: inventory submit failed: transient error: authorization request failed"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=warning msg="RetryPollIntervalSeconds is not defined"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=warning msg="RetryPollIntervalSeconds is not defined"
Feb 24 09:03:11 umbrel mender[544]: time="2025-02-24T09:03:11Z" level=info msg="Wait 5m0s before next inventory update attempt in 4m59.999979109s"
The directories I bielieve it would be better for the config one to be /home/umbrel/umbrel/app-data/qbittorrent Instead of …/qbittorrent/data/config but other than that I don’t see anything wrong with it. I’m also going to add a line for my external storage… if the app ever works that is.
May I also ask why you removed this line? I’m not sure what it does:
The error messages don’t seem to be relevant to how the app works. I would still recommend that you adjust the directories. I would start from the following directory:
${APP_DATA_DIR}/data/
container-name.internal doesn’t have any relevance in this case, as there is no communication between containers in your setup.
However, have I understood correctly that everything works now?
No, actually as I showed you in the picture, the app store won’t even show my app now for some reason, that’s why I posted the logs. Is it of any interest to you to add this app to your store? Your store seems to work fine for me. I even tried creating another store, still the app doesn’t show up.
Edit: also regarding: container-name.internal
Doesn’t wireguard communicate with qbittorrent? I could be dead wrong but still.
Nice! This one worked. Totally stupid mistake on my part this one, sorry, totally misread the ten lines of instructions.
Now I have the problem my *arr apps won’t connect due to authentication failure. Ten-time checked the credentials. Go figure.
Edit: Nvm, fixed it by using container name in host instead of local ip. By the way, one last question, why change port from 8080 to 8880? Forgot to ask.
Thank you very much denny! I shall mark the previous post as the solution.
The port change from 8080 to 8880 was just to avoid conflicts with other services that might already be using 8080. Let me know if you need anything else!
Basically I’m trying to connect gluetun to this and one other app because I had trouble connecting other apps(qbittorrent, sonarr,radarr) to hotio’s packages due to my lack of knowledge ofc and I can’t when this APP_PROXY is used, possibly I’m just placing this line below at the wrong place of the compose, not sure.
network_mode: container:gluetun
If you don’t know what gluetun is, basically you connect a VPN to it, and route other containers through it. Of course I turned off the VPN in qbittorrent in case you were wondering. So I just add this at the end of the compose.
Thanks a bunch!
Edit: I would you send a message instead but thought since you made those changes maybe I should post here. In hindsight a message would be better. Feel free to dm me for the answer if you want.
Edit2: If you can, please could you take a look at my repo, on sl1ng-qbittorrent & sl1ng-prowlarr, see if all is okay? I mean for the time being I’ve removed the APP_PROXY lines anyway cause I couldn’t make it work(I also forgot to make a backup -_-), but it works like this.
The APP_PROXY lines in Umbrel ensure that an app is protected by Umbrel’s authentication system, meaning only logged-in users can access it. If you want the app to be accessible without logging into Umbrel, there’s a way to disable this authentication.
The issue with network_mode: container:gluetun is that it makes the qbittorrent container unreachable for APP_PROXY. As a result, the proxy can’t forward traffic properly, and the app won’t show up as expected.
You did the right thing by removing the APP_PROXY lines, as this made everything work again. If you still want to use Umbrel’s authentication, you’d need to adjust how the VPN container is set up so that qbittorrent remains reachable.
I’ll send you a link to the official Umbrel documentation where APP_PROXY is explained in detail:
The issue with network_mode: container:gluetun is that it makes the qbittorrent container unreachable for APP_PROXY. As a result, the proxy can’t forward traffic properly, and the app won’t show up as expected.
Tbh I had to set FIREWALL_OUTBOUND_SUBNETS to the docker address to be able to achieve gluetun-non gluetun container communication, maybe app_proxy would then work too? Anyway, if you say it’s good, then good. I’m getting a little bit worried for my security though but my gut says it’s fine for now
For the time being I’ll leave it like this, but I’d like to setup the proxy in the future if I manage it. Thank you denny!