Files
UNITRONIX b3973c4991 fix(docker): make split admin bootstrap atomic
Prevent concurrent Go and console startup from generating mismatched admin passwords, and keep fresh Docker authentication on the centralized SQLite store.

Refs #385

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-25 02:13:40 +02:00

66 lines
2.8 KiB
Plaintext

; BetterDesk — Supervisord Configuration
; Manages both Go server and Node.js console in a single container
[supervisord]
nodaemon=true
logfile=/var/log/supervisor/supervisord.log
logfile_maxbytes=10MB
logfile_backups=2
loglevel=info
pidfile=/var/run/supervisord.pid
user=root
[unix_http_server]
file=/var/run/supervisor.sock
chmod=0700
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
; ---- BetterDesk Node.js Console ----
; Start before Go so optional legacy panel sync can initialize (issue #138).
; Fresh deployments use the consolidated primary database.
; Web console (5000). The RustDesk client API is served by the Go server (21121),
; so the console's own client API listener is disabled (API_ENABLED=false).
[program:betterdesk-console]
command=node /app/server.js
directory=/app
user=betterdesk
autostart=true
autorestart=true
startretries=5
startsecs=10
stopwaitsecs=10
; Log to Docker stdout/stderr so errors appear in `docker logs`
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
; Console serves the admin panel only; the Go server owns the client API.
environment=API_ENABLED="false",HOST="0.0.0.0",DEFAULT_ADMIN_USERNAME="%(ENV_DEFAULT_ADMIN_USERNAME)s",DEFAULT_ADMIN_PASSWORD="%(ENV_DEFAULT_ADMIN_PASSWORD)s",SQLITE_AUTH_DB_MODE="%(ENV_SQLITE_AUTH_DB_MODE)s"
priority=100
; ---- BetterDesk Go Server ----
; Signal (21116 TCP/UDP), Relay (21117), API (21121), NAT (21115), WS (21118/21119)
; The HTTP API and RustDesk client API are consolidated onto the Go server (21121).
; DB_URL env var is set by entrypoint.sh: SQLite path or postgres:// URI
[program:betterdesk-server]
command=/app/docker/wait-panel-auth-db.sh /usr/local/bin/betterdesk-server -mode all -api-port 21121 -key-file /opt/rustdesk/id_ed25519
directory=/opt/rustdesk
user=betterdesk
autostart=true
autorestart=true
startretries=5
startsecs=5
stopwaitsecs=10
; Log to Docker stdout/stderr so errors appear in `docker logs`
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
environment=SIGNAL_PORT="21116",SIGNAL_RATE_LIMIT_PER_IP="%(ENV_SIGNAL_RATE_LIMIT_PER_IP)s",ENCRYPTED_ONLY="%(ENV_ENCRYPTED_ONLY)s",DB_URL="%(ENV_DB_URL)s",AUTH_DB_PATH="%(ENV_AUTH_DB_PATH)s",SQLITE_AUTH_DB_MODE="%(ENV_SQLITE_AUTH_DB_MODE)s",RELAY_SERVERS="%(ENV_RELAY_SERVERS)s",ENROLLMENT_MODE="%(ENV_ENROLLMENT_MODE)s",NTP_SERVERS="%(ENV_NTP_SERVERS)s",BILLING_MAX_CLOCK_SKEW_MS="%(ENV_BILLING_MAX_CLOCK_SKEW_MS)s",BILLING_REQUIRE_SYNCED_CLOCK="%(ENV_BILLING_REQUIRE_SYNCED_CLOCK)s",BILLING_TRUST_OS_NTP="%(ENV_BILLING_TRUST_OS_NTP)s",INIT_ADMIN_USER="%(ENV_INIT_ADMIN_USER)s",INIT_ADMIN_PASS="%(ENV_INIT_ADMIN_PASS)s"
priority=200