umbrel-apps
umbrel-apps copied to clipboard
Add gladys assistant
App Submission
Gladys Assistant
https://gladysassistant.com/
https://github.com/gladysassistant/gladys
256x256 SVG icon
https://gladysassistant.com/fr/img/logo.svg
Gallery images
https://github.com/getumbrel/umbrel-apps/files/14981508/umbrel_gladys_screenshot_design.zip
I have tested my app on:
- [ ] umbrelOS on a Raspberry Pi
- [ ] umbrelOS on an Umbrel Home
- [X] umbrelOS on Linux VM - Umbrel OS 1.0.4
@cicoub13 Here are 3 screenshots (1440/900px as you asked)
umbrel_gladys_screenshot_design.zip
I've put all screenshots in English as Umbrel community is mainly international
Thanks for submitting Gladys Assistant @cicoub13! Stoked to try this out. I'll be able to review late this week. Thanks for your patience.
I wanted to test in real device (RPI4 with SSD + Umbrel OS 1.1).
I'm facing an issue where dockers are not able to contact localhost
ping localhost
from Gladys container returns ping: bad address 'localhost'
I have tried to ttest the app on my Umbrel 0.5.4 device and I get this error during installation:
The Compose file '/home/umbrel/umbrel/app-data/gladys-assistant/docker-compose.yml' is invalid because:
Unsupported config option for services.web: 'cgroup'
I guess it is an option that was added in docker-compose v2, which is only present in Umbrel 1.0.
I guess it is an option that was added in docker-compose v2, which is only present in Umbrel 1.0.
I've targeted only Umbrel OS 1.X (as it's the default documentation). Do I need to make it compatible with previous versions ?
I've targeted only Umbrel OS 1.X (as it's the default documentation). Do I need to make it compatible with previous versions ?
Since Umbrel v1 is now available on custom hardware installs, no.
Taking a look at this now @cicoub13. And thanks for diving into this @highghlow, much appreciated.
@cicoub13 @Pierre-Gilles, thanks very much for outlining the requirement for binding the docker daemon socket:
For the Docker daemon binding, it's needed from our side to create, restart other containers when a user adds an integration like Zigbee2Mqtt / MQTT / Node-Red. Gladys will automatically pull, configure and start a new container We try to be as smooth for the users but still managed integrations cleanly by using docker each time it's needed.
We looked into this, and binding the host's docker daemon socket is incompatible with umbrelOS's current architecture, unfortunately. Even if we made the security tradeoff for better app compatibility, mounting the host Docker socket will end up breaking things.
Here's the conflicting code:
We essentially do a Docker cleanup on boot so that Docker is always in a clean state initially, even if something didn't shut down properly in the last boot.
- https://github.com/getumbrel/umbrel/blob/5a042334e36e65128058f512c29e7af422f4be0c/packages/umbreld/source/index.ts#L147-L148
- https://github.com/getumbrel/umbrel/blob/5a042334e36e65128058f512c29e7af422f4be0c/packages/umbreld/source/modules/apps/apps.ts#L28-L52
If an app has control of the main Docker daemon and can do whatever it wants, then any containers that it sets to run on boot will trigger the logic in the code linked above every single boot. This will have two consequences:
- any containers that were brought up will be destroyed
- the entire umbrelOS startup will be delayed while cleanup is happening.
There are a few potential workarounds we can try to get around this if you'd consider trying them:
Option 1:
Add a Docker in Docker (DinD) container alongside Gladys, and have Gladys mount the DinD docker socket. This is effectively what we've done with the Portainer app here: https://github.com/getumbrel/umbrel-apps/blob/master/portainer/docker-compose.yml
Option 2:
Gladys could add the existing Portainer app from the app store as a dependency (or a new Docker app instead) and use that socket
Option 3:
Install Docker inside the Gladys image
Let me know if any of these sound okay to you and I can help orchestrate.