Cannot install custom app following the templatete

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

Any help would be appreciated.

Hey!

Send me a link to your repo and I’ll take a look at it.

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.

Hey,

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)

I’ve tested everything - it’s running perfectly! :tada:

Attached are the zipped files: hotio-qbittorrent

Should the directories remain as they are?

Cheers,
Denny

*Edit: I also set VPN_ENABLED=false for now. You’ll need to change it back to true. Just for testing.

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:

hostname: container-name.internal

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.

All you have to do is set your “id” to “hotio” in the umbrel-app-store.yml in the main directory of your app store (Change “sllng-store” to “hotio”:

This ID is then the basis for all apps that you want to publish. The ID in your app is then correctly “hotio-qbittorrent”

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.

Glad you got it working! :muscle:

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! :sunglasses:

1 Like

Hi again @denny ! Could you shed a light on the importance of the APP_PROXY lines, and if they are needed?

  app_proxy:
    environment:
      APP_HOST: sl1ng-qbittorrent_app_1
      APP_PORT: 8880

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 :stuck_out_tongue: 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.

Hey @sl1ng!

Let me shed some light on this. :slightly_smiling_face:

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 :slight_smile:
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!