#!/usr/bin/env bash # CTmine-client Entrypoint. # Richtet den Runtime-Benutzer, /config und die display-bezogenen Konfigurationen # ein und startet anschließend supervisord, der alle Prozesse verwaltet. set -euo pipefail PUID="${PUID:-1000}" PGID="${PGID:-1000}" TZ="${TZ:-Europe/Berlin}" CONFIG_DIR="${CONFIG_DIR:-/config}" WEB_ROOT="${WEB_ROOT:-/var/www/ctmine}" # TimeZone setzen, sofern tzdata vorhanden. if [ -f "/usr/share/zoneinfo/${TZ}" ]; then ln -snf "/usr/share/zoneinfo/${TZ}" /etc/localtime echo "${TZ}" > /etc/timezone fi echo "[entrypoint] PUID=${PUID} PGID=${PGID} TZ=${TZ}" # --- /config anlegen und dem Runtime-Benutzer übergeben ------------------ mkdir -p "${CONFIG_DIR}/prism" "${CONFIG_DIR}/.local" # Gruppe/Benutzer an PUID/PGID anpassen (der 'ctmine'-Benutzer wird im # Dockerfile mit UID 1000 angelegt). So gehören Dateien im Volume dem # Host-Benutzer. if [ "$(id -u)" = "0" ]; then groupmod -o -g "${PGID}" ctmine 2>/dev/null || true usermod -o -u "${PUID}" -g "${PGID}" -d "${CONFIG_DIR}" ctmine 2>/dev/null || true chown -R ctmine:ctmine "${CONFIG_DIR}" fi # --- Display-Auflösung in Supervisor-Config schreiben -------------------- # supervisord kann keine ENV-Substitution, darum generieren wir Xvfb-Start # und x11vnc-Optionen hier als feste Dateien. DISPLAY_WIDTH="${DISPLAY_WIDTH:-1280}" DISPLAY_HEIGHT="${DISPLAY_HEIGHT:-720}" DISPLAY_REFRESH="${DISPLAY_REFRESH:-60}" DISPLAY_DEPTH="${DISPLAY_DEPTH:-24}" cat > /tmp/xvfb.conf < "${VNC_PWFILE}" chmod 600 "${VNC_PWFILE}" chown ctmine:ctmine "${VNC_PWFILE}" VNC_PWFLAG="-rfbauth ${VNC_PWFILE}" else rm -f "${VNC_PWFILE}" VNC_PWFLAG="-nopw" fi cat > /tmp/x11vnc.conf </dev/null || true # Wenn Web-Root existiert, Rechte setzen. if [ -d "${WEB_ROOT}" ]; then chown -R ctmine:ctmine "${WEB_ROOT}" 2>/dev/null || true fi # --- Prism beim ersten Start ins persistente Volume kopieren -------------- # /opt/prism enthält die frische Launcher-Installation; beim ersten Start # (oder nach Updates) wird sie nach /config/prism kopiert, damit Accounts # und Instanzen persistent bleiben. /opt/bootstrap-prism.sh echo "[entrypoint] Prism Launcher unter ${CONFIG_DIR}/prism bereit." echo "[entrypoint] Starte supervisord …" exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf