# RustDesk full stack (server + relay + API/Web Admin) — self-contained example. # # Copy to docker-compose.yml and adjust the public IP / keys / secrets: # cp docker-compose.yml.example docker-compose.yml # # Everything is inline (no .env). The Ed25519 key below is an EXAMPLE — generate # your own for production. The two keys belong together: # - hbbs/hbbr get the SECRET key via -k # - rustdesk-api gets the matching PUBLIC key via RUSTDESK_API_RUSTDESK_KEY # (the public key is also what clients see as their "Key"). services: hbbs: container_name: hbbs image: rustdesk/rustdesk-server:latest command: hbbs -r 194.164.204.114:21117 -k 1jqLELJaIjaRtt1Tcj6BhqJ7DhT9WszBH/XUHrqJdhdg4K98HmANQFOpUx/vPZFRWnHPTYYHyIB8uH3Xxr8PTw== environment: - TZ=Europe/Berlin - ENCRYPTED_ONLY=1 - MUST_LOGIN=Y volumes: - ./data/server:/root ports: - "21115:21115" - "21116:21116" - "21116:21116/udp" - "21118:21118" depends_on: - hbbr restart: unless-stopped hbbr: container_name: hbbr image: rustdesk/rustdesk-server:latest command: hbbr -k 1jqLELJaIjaRtt1Tcj6BhqJ7DhT9WszBH/XUHrqJdhdg4K98HmANQFOpUx/vPZFRWnHPTYYHyIB8uH3Xxr8PTw== environment: - TZ=Europe/Berlin volumes: - ./data/server:/root ports: - "21117:21117" - "21119:21119" restart: unless-stopped rustdesk-api: container_name: rustdesk-api image: git.hackner.dev/thomas/rustdesk-api:latest command: ["./apimain"] environment: - TZ=Europe/Berlin - RUSTDESK_API_LANG=en - RUSTDESK_API_RUSTDESK_ID_SERVER=194.164.204.114:21116 - RUSTDESK_API_RUSTDESK_RELAY_SERVER=194.164.204.114:21117 - RUSTDESK_API_RUSTDESK_API_SERVER=http://194.164.204.114:21114 - RUSTDESK_API_RUSTDESK_KEY=YOCvfB5gDUBTqVMf7z2RUVpxz02GB8iAfLh918a/D08= - RUSTDESK_API_JWT_KEY=z5rt4z465rtzdh5sudtuzrutd66zz6 ports: - "21114:21114" volumes: - ./api:/app/data depends_on: - hbbs - hbbr restart: unless-stopped