Files
BetterDesk/docker/server-entrypoint.sh
T
UNITRONIX c93a8eb546 Fix permission denied on id_ed25519 in Docker volumes (#78)
Root cause: Dockerfile.server ran as USER betterdesk (UID 10001) but
Docker volume files retain UID/GID from host or previous container.
Private key id_ed25519 (mode 600) owned by different UID = unreadable.

Fix:
- Add docker/server-entrypoint.sh: starts as root, chown+chmod volume
  files to betterdesk user, then drops privileges via su-exec
- Add su-exec to Dockerfile.server runtime packages
- Remove USER betterdesk directive (entrypoint handles privilege drop)
- Add explicit chmod 600 + chown for id_ed25519 in all-in-one entrypoint
2026-04-05 21:13:41 +02:00

25 lines
860 B
Bash

#!/bin/sh
# BetterDesk Server — Docker Entrypoint
# Fixes volume file permissions before dropping to non-root user
set -e
DATA_DIR="/opt/rustdesk"
# Fix ownership of volume-mounted data directory.
# Docker volumes preserve UID/GID from the host or previous container,
# which may not match the betterdesk user (10001) in this container.
# This is especially important for id_ed25519 (mode 600) — if owned by
# a different UID, the server cannot read the private key.
if [ "$(id -u)" = "0" ]; then
chown -R betterdesk:betterdesk "$DATA_DIR" 2>/dev/null || true
# Ensure private key is readable by betterdesk
if [ -f "$DATA_DIR/id_ed25519" ]; then
chmod 600 "$DATA_DIR/id_ed25519"
chown betterdesk:betterdesk "$DATA_DIR/id_ed25519"
fi
# Drop privileges and re-exec
exec su-exec betterdesk "$@"
else
exec "$@"
fi