I’m looking for a way to do offline updates. I’m not really concerned about Host OS upgrades, as those I’m ok with doing a full reflash, but I would like a way to upgrade the container(s) on a Balena device, either over the local network (but not Internet), or via USB stick. Basically I’d like to be able to assign/pick a version of my application’s docker image to a device, just like the dashboard does, but put the relevant files on a USB stick (which I can make available online for my customers to download themselves). The files could be essentially what gets downloaded when a device is online, like some description of what should be running on the device (I assume that’s what’s in the API current) and the actual docker images. Optionally it would be nice to allow an upgrade to the supervisor as well.
Once those files are on the USB stick (I assume they could be protected with some asymmetric key for security) and inserted into the Balena device, I can trigger the upgrade via my container’s web api, web up, or if it has a display, via the UI. One could also wish for a watch script that does the upgrade, or a way to upload the files via a Web Api (which is already in my container’s code).
The use case is this:
- Customer buys my product (custom device) with BalenaCloud image flashed.
- Optionally: Customer connects device to internet and it gets registered with BalenaCloud.
- Customer runs device in isolated network, or simply prefers that it doesn’t connect to BalenaCloud/internet.
- I release a new version of the application and the customer would like to receive that upgrade, without connecting the device to the internet (as it’s permanently installed in a building).
- Customer downloads the upgrade-files, puts on USB stick and sticks it into the device which upgrades the application (or any other desired method, see above).
I don’t really need/want to know the device id that receives the upgrade, the downloaded files should be generic (however if they could be secured to a key put on the device during initial flash that would be preferable).