services: rustdesk-console: image: databk/rustdesk-console:latest restart: unless-stopped environment: JWT_SECRET: ${JWT_SECRET:?Set JWT_SECRET in .env} ADMIN_PASSWORD: ${ADMIN_PASSWORD:?Set ADMIN_PASSWORD in .env} DB_TYPE: ${DB_TYPE:-sqlite} DB_MIGRATE_ON_START: ${DB_MIGRATE_ON_START:-1} DB_HOST: ${DB_HOST:-localhost} DB_PORT: ${DB_PORT:-3306} DB_USERNAME: ${DB_USERNAME:-rustdesk_console} DB_PASSWORD: ${DB_PASSWORD:-} DB_DATABASE: ${DB_DATABASE:-rustdesk_console} SYSTEM_UPDATE_MYSQL_EXCLUSIVE_SCHEMA: ${SYSTEM_UPDATE_MYSQL_EXCLUSIVE_SCHEMA:-false} SYSTEM_UPDATE_SOCKET: /run/rustdesk-console-updater/control.sock SYSTEM_UPDATE_MAINTENANCE_FILE: /var/lib/rustdesk-console-maintenance/maintenance.json volumes: - ./data:/data - ./updater-ipc:/run/rustdesk-console-updater:ro - ./updater-maintenance:/var/lib/rustdesk-console-maintenance:ro networks: - default - rustdesk rustdesk-console-web: image: databk/rustdesk-console-web:latest ports: - '21114:80' environment: - BACKEND_URL=http://rustdesk-console:3000 depends_on: - rustdesk-console restart: unless-stopped updater: image: databk/rustdesk-console:latest restart: unless-stopped command: ['node', '/app/deployment/compose-bootstrap.mjs'] environment: SYSTEM_UPDATE_ROLE: updater SYSTEM_UPDATE_INSTALLATION: ${CONSOLE_INSTALL_DIR:?Set absolute host project path in .env}/updater-state/installation.json SYSTEM_UPDATE_SOCKET: ${CONSOLE_INSTALL_DIR:?Set absolute host project path in .env}/updater-ipc/control.sock SYSTEM_UPDATE_MAINTENANCE_FILE: ${CONSOLE_INSTALL_DIR:?Set absolute host project path in .env}/updater-maintenance/maintenance.json SYSTEM_UPDATE_COMPOSE_ROOT: ${CONSOLE_INSTALL_DIR:?Set absolute host project path in .env} SYSTEM_UPDATE_SOCKET_GID: 1000 volumes: - /var/run/docker.sock:/var/run/docker.sock - .:/install - ${CONSOLE_INSTALL_DIR:?Set absolute host project path in .env}:${CONSOLE_INSTALL_DIR:?Set absolute host project path in .env} healthcheck: disable: true # Optional RustDesk server (hbbs/hbbr). Enable with COMPOSE_PROFILES=server # (or `docker compose --profile server up -d`) and set SERVER_MANAGEMENT_TOKEN # and RUSTDESK_RELAY_ADDRESS in .env. The Console-side management connection # (URL http://hbbs:21120, the same token and the node identity) is configured # in Settings -> Server management after sign-in. Required server values # default to empty instead of failing interpolation because Compose resolves # variables before filtering profiles; hbbs exits with a clear error when the # management token is missing or shorter than 32 characters. hbbs: image: databk/rustdesk-server:latest profiles: [server] container_name: hbbs command: ['hbbs', '-r', '${RUSTDESK_RELAY_ADDRESS:-}'] working_dir: /data restart: unless-stopped environment: HOME: /data RD_MANAGEMENT_BIND: 0.0.0.0:21120 RD_MANAGEMENT_TOKEN: ${SERVER_MANAGEMENT_TOKEN:-} RD_MANAGEMENT_DIR: /data/management ports: - '21115:21115' - '21116:21116' - '21116:21116/udp' - '21118:21118' volumes: - ./data/server:/data networks: - rustdesk hbbr: image: databk/rustdesk-server:latest profiles: [server] container_name: hbbr command: ['hbbr'] working_dir: /data restart: unless-stopped environment: HOME: /data RD_HBBS_API_URL: ws://hbbs:21120/v1/control RD_MANAGEMENT_TOKEN: ${SERVER_MANAGEMENT_TOKEN:-} RD_RELAY_ID: relay-1 RD_RELAY_ADDRESS: ${RUSTDESK_RELAY_ADDRESS:-} ports: - '21117:21117' - '21119:21119' volumes: - ./data/server-relay:/data networks: - rustdesk networks: rustdesk: {}