Is there any way to automatically have the apps in the TrueNAS catalog update themselves during a window (e.g. 5 AM Central Time when I’m very likely to be sleeping) without human intervention?
You can setup a watchtower custom app
+1 for watchtower, been using it for a little over a month now, set up to install updates once a week at a specified time and then get an email on whats been updated.
watchtower wiki explicitly states:
Watchtower does not update apps from the TrueNAS catalog.
Is there another way that currently works in latest version?
If watchtower doesn’t support it, my guess would be no since other solutions like watchtower do basically the same thing.
I guess the problem is that the truenas apps are not hosted on dockerhub but pull from the truenas github which isn’t monitored by watchtower or other solutions like it.
TL;DR: Watchtower only works for custom apps, but you can convert normal apps to custom apps.
Images are pulled from docker hub, or whatever other container registry the app maintainer chooses. The main problem is, that watchtower only detects changes if mutable tags are used, like “latest” or “stable”. TrueNAS however uses immutable tags to always target the specific version (like it should) to avoid accidental updates on an app restart. Watchtower only detects an update if your tag and your image (-checksum) are different, because the “latest” tag changes when a new image is pushed, but e.g. :v1.4.3 will always be on the image of version 1.4.3.
So if you create a custom app, watchtower should work, as long as you use tags that move around. (latest, stable, etc.)
TrueNAS apps however, are a different story. For one, they use version tags, and update the version tags for that app regularly. (Not sure if that is something the app maintainer does or if there is some magic doing its thing). But they also have their own custom format, that builds a docker compose file. This allows all kinds of cool scripting stuff like exposing a checkbox to the gui and then automatically create indexer jobs in the diskover app if clicked, or let the app run as root and expose the docker socket for the gethomepage app. And if there are updates to that (and sometimes those updates are necessary for the container to run successfully, because sometimes an app developer introduces breaking changes) then you have to update via TrueNAS, because watchtower is and cannot be aware of that layer above. So even if you could update a container, the apps definition might override that accidentaly on a restart and downgrades your app.
There is however the possibility to convert any normal app to a custom app, (i think that gives you a docker compose file) in which you could then change the tag to “latest”. Note that:
- It cannot be changed back to a normal app. You’d have to install another instance of the app.
- If there are any breaking changes that the app maintainer would have fixed for you, then you have to fix it yourself now.