mirror of
https://github.com/UNITRONIX/BetterDesk.git
synced 2026-09-10 09:35:39 +00:00
0f8273ebb7
Stable hotfix: restore Web Remote after enrollment outbound gate (Refs #313).
99 lines
3.3 KiB
YAML
99 lines
3.3 KiB
YAML
# =============================================================================
|
|
# BetterDesk — Official Quick Start (Single Container, MACVLAN / shared LAN IP)
|
|
# =============================================================================
|
|
# Use when the stack must appear on your LAN with a dedicated IP (macvlan),
|
|
# not via host port mappings. All services run in one container on MACVLAN_IPV4.
|
|
#
|
|
# Prerequisites:
|
|
# - External macvlan network already created on the Docker host (example below).
|
|
# - A free IPv4 on that subnet (MACVLAN_IPV4).
|
|
#
|
|
# Create macvlan (once per host — adjust parent interface and subnet):
|
|
# docker network create -d macvlan \
|
|
# --subnet=192.168.1.0/24 --gateway=192.168.1.1 \
|
|
# -o parent=eth0 LAN
|
|
#
|
|
# Usage:
|
|
# export MACVLAN_IPV4=192.168.1.51
|
|
# export RELAY_SERVERS=${MACVLAN_IPV4}:21117
|
|
# curl -fsSL https://raw.githubusercontent.com/UNITRONIX/BetterDesk/main/docker-compose.quick.single.macvlan.yml -o docker-compose.yml
|
|
# docker compose pull && docker compose up -d
|
|
#
|
|
# Web console: http://MACVLAN_IPV4:5000
|
|
# RustDesk client API: http://MACVLAN_IPV4:21121
|
|
# Admin password:
|
|
# docker compose exec betterdesk betterdesk-show-admin-credentials
|
|
#
|
|
# Legacy split layout: docker-compose.quick.macvlan.yml
|
|
#
|
|
# Image tag (aligned with CHANGELOG / git tag):
|
|
# Default: 3.3.112 | Rolling: BETTERDESK_IMAGE_TAG=latest
|
|
# =============================================================================
|
|
|
|
services:
|
|
betterdesk:
|
|
image: ghcr.io/unitronix/betterdesk:${BETTERDESK_IMAGE_TAG:-3.4.2}
|
|
container_name: betterdesk
|
|
hostname: betterdesk
|
|
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
|
|
- API_ENABLED=false
|
|
- ENCRYPTED_ONLY=1
|
|
- SERVER_BACKEND=betterdesk
|
|
- HBBS_API_URL=http://127.0.0.1:21121/api
|
|
- BETTERDESK_API_URL=http://127.0.0.1:21121/api
|
|
- RUSTDESK_PATH=/opt/rustdesk
|
|
- DATA_DIR=/app/data
|
|
- DB_PATH=/opt/rustdesk/db_v2.sqlite3
|
|
- PUB_KEY_PATH=/opt/rustdesk/id_ed25519.pub
|
|
- API_KEY_PATH=/opt/rustdesk/.api_key
|
|
- DOCKER=true
|
|
- BETTERDESK_UPDATE_MODE=image
|
|
- BETTERDESK_DOCKER_LAYOUT=single
|
|
- BETTERDESK_IMAGE_TAG=${BETTERDESK_IMAGE_TAG:-3.4.2}
|
|
- AUTH_DB_PATH=/app/data/auth.db
|
|
- INIT_ADMIN_USER=${ADMIN_USERNAME:-admin}
|
|
- INIT_ADMIN_PASS=${ADMIN_PASSWORD:-}
|
|
- DEFAULT_ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
|
|
- DEFAULT_ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
|
|
- RELAY_SERVERS=${RELAY_SERVERS:-}
|
|
- SIGNAL_RATE_LIMIT_PER_IP=${SIGNAL_RATE_LIMIT_PER_IP:-20}
|
|
- ENROLLMENT_MODE=${ENROLLMENT_MODE:-}
|
|
- TZ=${TZ:-UTC}
|
|
networks:
|
|
lan:
|
|
ipv4_address: ${MACVLAN_IPV4:?Set MACVLAN_IPV4 e.g. 192.168.1.51}
|
|
restart: unless-stopped
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
cap_drop:
|
|
- ALL
|
|
cap_add:
|
|
- SETUID
|
|
- SETGID
|
|
- CHOWN
|
|
- FOWNER
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "curl -sf http://127.0.0.1:21121/api/health && curl -sf http://127.0.0.1:5000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 45s
|
|
|
|
networks:
|
|
lan:
|
|
name: ${MACVLAN_NETWORK:-LAN}
|
|
external: true
|
|
|
|
volumes:
|
|
betterdesk-data:
|
|
name: betterdesk-data
|
|
console-data:
|
|
name: betterdesk-console-data
|