Files
BetterDesk/docker-compose.quick.yml
T
UNITRONIX 3a73870706 Fix port 21121 connection refused in Docker (API_HOST binding)
Root cause: config.js defaults apiHost to 127.0.0.1 (localhost-only).
Inside Docker containers, this means port 21121 only listens on the
loopback interface, making it unreachable from outside the container
despite docker port mapping.

docker-compose.single.yml already had API_HOST=0.0.0.0, but
docker-compose.yml (multi-container) and docker-compose.quick.yml
(GHCR pre-built) were missing it.

Fixes:
- docker-compose.yml: Add HOST=0.0.0.0 and API_HOST=0.0.0.0
- docker-compose.quick.yml: Add HOST=0.0.0.0 and API_HOST=0.0.0.0
- Dockerfile.console: Add ENV API_HOST=0.0.0.0
- Dockerfile (single): Add ENV API_HOST=0.0.0.0
- docker/entrypoint.sh: Export API_HOST and HOST defaults
- docker/supervisord.conf: Add API_HOST and HOST to console env

Fixes #78
2026-04-06 17:03:11 +02:00

99 lines
3.3 KiB
YAML

# =============================================================================
# BetterDesk Console - Quick Start (Pre-built Images)
# =============================================================================
# NO BUILD REQUIRED - uses pre-built images from GitHub Container Registry
#
# Usage:
# curl -fsSL https://raw.githubusercontent.com/UNITRONIX/Rustdesk-FreeConsole/main/docker-compose.quick.yml -o docker-compose.yml
# docker compose up -d
#
# Web Console: http://localhost:5000
# Default credentials shown on first startup in logs:
# docker compose logs console | grep -i password
#
# TROUBLESHOOTING: If you get "denied" or "pull access denied" error,
# images may not be published yet. Build from source instead:
# git clone https://github.com/UNITRONIX/Rustdesk-FreeConsole.git
# cd Rustdesk-FreeConsole && docker compose -f docker-compose.yml up -d --build
# =============================================================================
services:
# BetterDesk Server (Go) — handles signal, relay, and API
server:
image: ghcr.io/unitronix/betterdesk-server:latest
container_name: betterdesk-server
hostname: betterdesk-server
command: ["/usr/local/bin/betterdesk-server", "-mode", "all", "-key-file", "/opt/rustdesk/id_ed25519"]
ports:
- "21114:21114" # HTTP API
- "21115:21115" # NAT type test
- "21116:21116/tcp" # Signal TCP
- "21116:21116/udp" # Signal UDP
- "21117:21117" # Relay TCP
- "21118:21118" # WebSocket Signal
- "21119:21119" # WebSocket Relay
volumes:
- betterdesk-data:/opt/rustdesk
environment:
- ENCRYPTED_ONLY=1
networks:
- betterdesk-net
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:21114/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
# BetterDesk Console — Web Management Interface
console:
image: ghcr.io/unitronix/betterdesk-console:latest
container_name: betterdesk-console
hostname: betterdesk-console
ports:
- "5000:5000" # Web console
- "21121:21121" # RustDesk Client API (WAN)
volumes:
- betterdesk-data:/opt/rustdesk
- console-data:/app/data
environment:
- NODE_ENV=production
- PORT=5000
- HOST=0.0.0.0
- API_HOST=0.0.0.0
- SERVER_BACKEND=betterdesk
- BETTERDESK_API_URL=http://betterdesk-server:21114/api
- RUSTDESK_PATH=/opt/rustdesk
- DATA_DIR=/app/data
- DB_PATH=/app/data/db_v2.sqlite3
- PUB_KEY_PATH=/opt/rustdesk/id_ed25519.pub
- API_KEY_PATH=/opt/rustdesk/.api_key
- WS_HBBS_HOST=betterdesk-server
- WS_HBBS_PORT=21116
- WS_HBBR_HOST=betterdesk-server
- WS_HBBR_PORT=21117
- DOCKER=true
networks:
- betterdesk-net
depends_on:
server:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:5000/login"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
networks:
betterdesk-net:
driver: bridge
volumes:
betterdesk-data:
name: betterdesk-data
console-data:
name: betterdesk-console-data