mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-07-29 09:20:32 +02:00
Address Claude Desktop review comments
This commit is contained in:
@@ -1,3 +1,8 @@
|
|||||||
|
## 1.5 (07-07-2026)
|
||||||
|
|
||||||
|
- Change the default Claude Desktop data location to `/data/data`.
|
||||||
|
- Add Home Assistant smart context, Home Assistant MCP, and dangerous permission skip options.
|
||||||
|
|
||||||
## 1.4 (07-07-2026)
|
## 1.4 (07-07-2026)
|
||||||
|
|
||||||
- Persist Claude Desktop sign-in: bundle gnome-keyring/libsecret/dbus-x11 and start an unlocked Secret Service in the desktop session, and launch with --password-store=gnome-libsecret. Fixes "Your sign-in won't be saved on this device. Install and unlock a system keyring". The keyring DB lives on persistent storage (/config/data), so the session survives restarts.
|
- Persist Claude Desktop sign-in: bundle gnome-keyring/libsecret/dbus-x11 and start an unlocked Secret Service in the desktop session, and launch with --password-store=gnome-libsecret. Fixes "Your sign-in won't be saved on this device. Install and unlock a system keyring". The keyring DB lives on persistent storage (/config/data), so the session survives restarts.
|
||||||
|
|||||||
@@ -31,12 +31,12 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
|||||||
# Allow UID and GID setting
|
# Allow UID and GID setting
|
||||||
# hadolint ignore=SC2015,DL4006,SC2013,SC2086
|
# hadolint ignore=SC2015,DL4006,SC2013,SC2086
|
||||||
RUN \
|
RUN \
|
||||||
usermod --home /config/data abc && \
|
usermod --home /data/data abc && \
|
||||||
if [[ -d /etc/services.d ]] && ls /etc/services.d/*/run 1> /dev/null 2>&1; then sed -i "1a set +e" /etc/services.d/*/run; fi
|
if [[ -d /etc/services.d ]] && ls /etc/services.d/*/run 1> /dev/null 2>&1; then sed -i "1a set +e" /etc/services.d/*/run; fi
|
||||||
|
|
||||||
# Global LSIO modifications
|
# Global LSIO modifications
|
||||||
COPY ha_lsio.sh /ha_lsio.sh
|
COPY ha_lsio.sh /ha_lsio.sh
|
||||||
ARG CONFIGLOCATION="/config/data"
|
ARG CONFIGLOCATION="/data/data"
|
||||||
RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh
|
RUN chmod 744 /ha_lsio.sh && if grep -qr "lsio" /etc; then /ha_lsio.sh "$CONFIGLOCATION"; fi && rm /ha_lsio.sh
|
||||||
|
|
||||||
##################
|
##################
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Claude Desktop sign-in requires a claude.ai plan that supports the Desktop app.
|
|||||||
|
|
||||||
- Claude Desktop in single-app Selkies mode.
|
- Claude Desktop in single-app Selkies mode.
|
||||||
- Home Assistant ingress support.
|
- Home Assistant ingress support.
|
||||||
- Persistent `$HOME` under `/config/data`, preserving Claude Desktop and Claude Code sign-in state across restarts.
|
- Persistent `$HOME` under `/data/data`, preserving Claude Desktop and Claude Code sign-in state across restarts.
|
||||||
- Optional runtime Claude Desktop updates from Anthropic's apt repository.
|
- Optional runtime Claude Desktop updates from Anthropic's apt repository.
|
||||||
- Optional extra apt and pip package installation.
|
- Optional extra apt and pip package installation.
|
||||||
- Baked-in `git` and GitHub CLI (`gh`) with optional startup credential configuration.
|
- Baked-in `git` and GitHub CLI (`gh`) with optional startup credential configuration.
|
||||||
@@ -45,9 +45,12 @@ Claude Desktop sign-in requires a claude.ai plan that supports the Desktop app.
|
|||||||
| `github_token` | | Optional GitHub personal access token used to authenticate `gh` and configure Git credentials for GitHub. |
|
| `github_token` | | Optional GitHub personal access token used to authenticate `gh` and configure Git credentials for GitHub. |
|
||||||
| `github_username` | | Optional global Git author name. |
|
| `github_username` | | Optional global Git author name. |
|
||||||
| `github_email` | | Optional global Git author email. |
|
| `github_email` | | Optional global Git author email. |
|
||||||
|
| `ha_smart_context` | `true` | Enable Home Assistant smart context support for Claude tooling. |
|
||||||
|
| `enable_ha_mcp` | `true` | Enable Home Assistant MCP support for Claude tooling. |
|
||||||
|
| `dangerously_skip_permissions` | `false` | Expose Claude Code's dangerous permission skip mode option. Only enable if you understand the risk. |
|
||||||
| `additional_apps` | | Comma-separated Debian apt packages to install at startup, for example `htop,git`. |
|
| `additional_apps` | | Comma-separated Debian apt packages to install at startup, for example `htop,git`. |
|
||||||
| `additional_pip` | | Comma-separated pip packages to install at startup. Installs use `--break-system-packages`. |
|
| `additional_pip` | | Comma-separated pip packages to install at startup. Installs use `--break-system-packages`. |
|
||||||
| `data_location` | `/config/data` | Persistent home directory location. Keep this persistent so Claude sign-in survives restarts. |
|
| `data_location` | `/data/data` | Persistent home directory location. Keep this persistent so Claude sign-in survives restarts. |
|
||||||
| `networkdisks`, `cifsusername`, `cifspassword`, `cifsdomain` | | Standard SMB mount options. |
|
| `networkdisks`, `cifsusername`, `cifspassword`, `cifsdomain` | | Standard SMB mount options. |
|
||||||
| `localdisks` | | Standard local disk mount option. |
|
| `localdisks` | | Standard local disk mount option. |
|
||||||
| `env_vars` | `[]` | Extra environment variables to export into the container. This can override `SELKIES_*` defaults. |
|
| `env_vars` | `[]` | Extra environment variables to export into the container. This can override `SELKIES_*` defaults. |
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
# Claude Desktop sign-in — fix plan (not implemented)
|
# Claude Desktop sign-in — shipped fixes and planned work
|
||||||
|
|
||||||
Two related sign-in problems when Claude Desktop runs inside the LinuxServer Selkies
|
Two related sign-in problems when Claude Desktop runs inside the LinuxServer Selkies
|
||||||
streamed desktop.
|
streamed desktop.
|
||||||
|
|
||||||
**Status:**
|
**Status:**
|
||||||
- **Problem B (keyring persistence) — IMPLEMENTED** in v1.4 (Dockerfile + `rootfs/defaults/autostart`).
|
- **Shipped:** Problem B (keyring persistence) is implemented in v1.4 (Dockerfile + `rootfs/defaults/autostart`).
|
||||||
- **Problem A (in-desktop browser for OAuth) — PLAN ONLY, intentionally not implemented.**
|
- **Planned only:** Problem A (in-desktop browser for OAuth) is intentionally not implemented.
|
||||||
The image ships no browser; complete the login with the user-side workaround below.
|
The image ships no browser; complete the login with the user-side workaround below.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ devices:
|
|||||||
- /dev/fuse
|
- /dev/fuse
|
||||||
environment:
|
environment:
|
||||||
AUTO_GPU: "1"
|
AUTO_GPU: "1"
|
||||||
FM_HOME: /config/data
|
FM_HOME: /data/data
|
||||||
HOME: /config/data
|
HOME: /data/data
|
||||||
PGID: "0"
|
PGID: "0"
|
||||||
PUID: "0"
|
PUID: "0"
|
||||||
SELKIES_FRAMERATE: "30"
|
SELKIES_FRAMERATE: "30"
|
||||||
@@ -21,6 +21,10 @@ environment:
|
|||||||
image: ghcr.io/alexbelgium/claude_desktop-{arch}
|
image: ghcr.io/alexbelgium/claude_desktop-{arch}
|
||||||
ingress: true
|
ingress: true
|
||||||
init: false
|
init: false
|
||||||
|
hassio_api: true
|
||||||
|
hassio_role: manager
|
||||||
|
homeassistant_api: true
|
||||||
|
auth_api: true
|
||||||
map:
|
map:
|
||||||
- addon_config:rw
|
- addon_config:rw
|
||||||
- share:rw
|
- share:rw
|
||||||
@@ -30,12 +34,16 @@ name: Claude Desktop
|
|||||||
options:
|
options:
|
||||||
env_vars: []
|
env_vars: []
|
||||||
DNS_server: 8.8.8.8
|
DNS_server: 8.8.8.8
|
||||||
|
data_location: /data/data
|
||||||
PGID: 0
|
PGID: 0
|
||||||
PUID: 0
|
PUID: 0
|
||||||
additional_apps: ""
|
additional_apps: ""
|
||||||
additional_pip: ""
|
additional_pip: ""
|
||||||
auto_update: true
|
auto_update: true
|
||||||
github_email: ""
|
github_email: ""
|
||||||
|
ha_smart_context: true
|
||||||
|
enable_ha_mcp: true
|
||||||
|
dangerously_skip_permissions: false
|
||||||
github_token: ""
|
github_token: ""
|
||||||
github_username: ""
|
github_username: ""
|
||||||
install_caveman: true
|
install_caveman: true
|
||||||
@@ -58,6 +66,7 @@ schema:
|
|||||||
- name: match(^[A-Za-z0-9_]+$)
|
- name: match(^[A-Za-z0-9_]+$)
|
||||||
value: str?
|
value: str?
|
||||||
DNS_server: str?
|
DNS_server: str?
|
||||||
|
data_location: str?
|
||||||
DRINODE: list(/dev/dri/card0|/dev/dri/card1|/dev/dri/card2|/dev/dri/renderD128|/dev/dri/renderD129|)?
|
DRINODE: list(/dev/dri/card0|/dev/dri/card1|/dev/dri/card2|/dev/dri/renderD128|/dev/dri/renderD129|)?
|
||||||
KEYBOARD: list(da-dk-qwerty|de-de-qwertz|en-gb-qwerty|en-us-qwerty|es-es-qwerty|fr-ch-qwertz|fr-fr-azerty|it-it-qwerty|ja-jp-qwerty|pt-br-qwerty|sv-se-qwerty|tr-tr-qwerty)?
|
KEYBOARD: list(da-dk-qwerty|de-de-qwertz|en-gb-qwerty|en-us-qwerty|es-es-qwerty|fr-ch-qwertz|fr-fr-azerty|it-it-qwerty|ja-jp-qwerty|pt-br-qwerty|sv-se-qwerty|tr-tr-qwerty)?
|
||||||
PASSWORD: str?
|
PASSWORD: str?
|
||||||
@@ -68,6 +77,9 @@ schema:
|
|||||||
additional_pip: str?
|
additional_pip: str?
|
||||||
auto_update: bool?
|
auto_update: bool?
|
||||||
github_email: str?
|
github_email: str?
|
||||||
|
ha_smart_context: bool?
|
||||||
|
enable_ha_mcp: bool?
|
||||||
|
dangerously_skip_permissions: bool?
|
||||||
github_token: password?
|
github_token: password?
|
||||||
github_username: str?
|
github_username: str?
|
||||||
install_caveman: bool
|
install_caveman: bool
|
||||||
@@ -78,5 +90,5 @@ slug: claude_desktop
|
|||||||
tmpfs: true
|
tmpfs: true
|
||||||
udev: true
|
udev: true
|
||||||
url: https://github.com/alexbelgium/hassio-addons
|
url: https://github.com/alexbelgium/hassio-addons
|
||||||
version: "1.4"
|
version: "1.5"
|
||||||
video: true
|
video: true
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# Secret Service API (org.freedesktop.secrets). Provide it with gnome-keyring on the openbox
|
# Secret Service API (org.freedesktop.secrets). Provide it with gnome-keyring on the openbox
|
||||||
# session bus (startwm.sh runs `dbus-launch --exit-with-session`), unlocked with an empty
|
# session bus (startwm.sh runs `dbus-launch --exit-with-session`), unlocked with an empty
|
||||||
# password so it comes back automatically after a restart. The keyring DB lives under
|
# password so it comes back automatically after a restart. The keyring DB lives under
|
||||||
# $HOME/.local/share/keyrings, and HOME=/config/data is persistent add-on storage, so the
|
# $HOME/.local/share/keyrings, and HOME=/data/data is persistent add-on storage, so the
|
||||||
# saved sign-in survives add-on restarts.
|
# saved sign-in survives add-on restarts.
|
||||||
eval "$(gnome-keyring-daemon --start --components=secrets 2>/dev/null)" || true
|
eval "$(gnome-keyring-daemon --start --components=secrets 2>/dev/null)" || true
|
||||||
printf '' | gnome-keyring-daemon --unlock 2>/dev/null || true
|
printf '' | gnome-keyring-daemon --unlock 2>/dev/null || true
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ PUID=$(bashio::config "PUID")
|
|||||||
PGID=$(bashio::config "PGID")
|
PGID=$(bashio::config "PGID")
|
||||||
|
|
||||||
# Check data location
|
# Check data location
|
||||||
LOCATION=""
|
LOCATION="$(bashio::config 'data_location')"
|
||||||
|
|
||||||
if [[ "$LOCATION" = "null" || -z "$LOCATION" ]]; then
|
if [[ "$LOCATION" = "null" || -z "$LOCATION" ]]; then
|
||||||
LOCATION="/config/data"
|
LOCATION="/data/data"
|
||||||
else
|
else
|
||||||
LOCATIONOK=""
|
LOCATIONOK=""
|
||||||
for location in "/share" "/config" "/data" "/mnt"; do
|
for location in "/share" "/config" "/data" "/mnt"; do
|
||||||
@@ -21,7 +21,7 @@ else
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ -z "$LOCATIONOK" ]; then
|
if [ -z "$LOCATIONOK" ]; then
|
||||||
LOCATION="/config/data"
|
LOCATION="/data/data"
|
||||||
bashio::log.fatal "Your data_location value can only be set in /share, /config, /data or /mnt. It will be reset to the default location : $LOCATION"
|
bashio::log.fatal "Your data_location value can only be set in /share, /config, /data or /mnt. It will be reset to the default location : $LOCATION"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -49,7 +49,7 @@ done
|
|||||||
|
|
||||||
for folders in /defaults /etc/cont-init.d /etc/services.d /etc/s6-overlay/s6-rc.d; do
|
for folders in /defaults /etc/cont-init.d /etc/services.d /etc/s6-overlay/s6-rc.d; do
|
||||||
if [ -d "$folders" ]; then
|
if [ -d "$folders" ]; then
|
||||||
find "$folders" -type f -exec sed -i "s|/config/data|$LOCATION|g" {} + &> /dev/null || true
|
find "$folders" -type f -exec sed -i "s|/data/data|$LOCATION|g" {} + &> /dev/null || true
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -88,7 +88,8 @@ chmod -R 700 "$LOCATION"
|
|||||||
# on persistent storage and conflicts with the tmpfs runtime dir set above. Re-assert the
|
# on persistent storage and conflicts with the tmpfs runtime dir set above. Re-assert the
|
||||||
# tmpfs value at the end of that oneshot so the app and desktop agree on one valid dir.
|
# tmpfs value at the end of that oneshot so the app and desktop agree on one valid dir.
|
||||||
SELKIES_CONFIG_RUN="/etc/s6-overlay/s6-rc.d/init-selkies-config/run"
|
SELKIES_CONFIG_RUN="/etc/s6-overlay/s6-rc.d/init-selkies-config/run"
|
||||||
if [ -f "$SELKIES_CONFIG_RUN" ] && ! grep -q 'XDG_RUNTIME_DIR override reconciled' "$SELKIES_CONFIG_RUN"; then
|
if [ -f "$SELKIES_CONFIG_RUN" ]; then
|
||||||
|
sed -i '/^# XDG_RUNTIME_DIR override reconciled$/,+1d' "$SELKIES_CONFIG_RUN"
|
||||||
printf '\n# XDG_RUNTIME_DIR override reconciled\nprintf "%%s" "%s" > /run/s6/container_environment/XDG_RUNTIME_DIR\n' "$XDG_RUNTIME_DIR" >> "$SELKIES_CONFIG_RUN"
|
printf '\n# XDG_RUNTIME_DIR override reconciled\nprintf "%%s" "%s" > /run/s6/container_environment/XDG_RUNTIME_DIR\n' "$XDG_RUNTIME_DIR" >> "$SELKIES_CONFIG_RUN"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user