Files
BetterDesk/docker/console-entrypoint.sh
T
UNITRONIX 05ebd71072 Fix Docker permission denied on console data + remove :ro mount (#78)
Three related issues reported by user:
1. SQLITE_READONLY: docker-compose.quick.yml mounted /opt/rustdesk as :ro
   but console needs read access to .api_key (mode 600). Removed :ro.
2. EACCES .session_secret: Dockerfile.console ran as USER betterdesk
   (UID 10001) but volume files owned by different host UID.
3. docker exec fails: container in restart loop due to permission crash.

Fix:
- Add docker/console-entrypoint.sh: starts as root, chown data dirs
  to betterdesk user, then drops privileges via su-exec
- Add su-exec to Dockerfile.console runtime packages
- Remove USER betterdesk (entrypoint handles privilege drop)
- Remove :ro from /opt/rustdesk volume mount in docker-compose.quick.yml
2026-04-05 22:28:29 +02:00

26 lines
1.0 KiB
Bash

#!/bin/sh
# BetterDesk Console — Docker Entrypoint Wrapper
# Fixes volume file permissions before dropping to non-root user
set -e
# Fix ownership of volume-mounted data directories.
# Docker volumes preserve UID/GID from the host or previous container,
# which may not match the betterdesk user (10001) in this container.
if [ "$(id -u)" = "0" ]; then
chown -R betterdesk:betterdesk /app/data 2>/dev/null || true
# Fix permissions on sensitive files
if [ -f /app/data/.session_secret ]; then
chmod 600 /app/data/.session_secret
chown betterdesk:betterdesk /app/data/.session_secret
fi
if [ -f /app/data/auth.db ]; then
chown betterdesk:betterdesk /app/data/auth.db
fi
# /opt/rustdesk may be mounted read-only from server volume — only fix if writable
chown -R betterdesk:betterdesk /opt/rustdesk 2>/dev/null || true
# Drop privileges and run the actual entrypoint
exec su-exec betterdesk /app/docker-entrypoint.sh
else
exec /app/docker-entrypoint.sh
fi