| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .idea | ||
| traefik-patch | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| docker-compose.yaml | ||
| LICENSE | ||
| Projekt.md | ||
| README.md | ||
| STATUS.md | ||
RustDesk Self-Hosted (Docker + Traefik)
Generisches, .env-gesteuertes Setup für hbbs/hbbr als Docker-Container
hinter einem bestehenden Traefik-Stack — kein WireGuard, kein separater
Tunnel. Ein Repo, beliebig oft auf verschiedenen Servern einsetzbar, nur
.env pro Ziel anpassen (z. B. desk.web-seo-consulting.eu oder
desk.schicker-gruppe.de).
Voraussetzung
Ein Traefik-Stack (v3.x) läuft bereits auf dem Zielserver mit:
- Docker-Provider (
exposedByDefault: false, Netzwerktraefik_proxy_networkoder äquivalent) - File-Provider für die statische
entryPoints-Erweiterung ports:mitmode: hostfür die eigenen EntryPoints
Deployment
- Repo auf den Zielserver kopieren (oder
git clone, da keine Secrets im Repo liegen — Key und.envwerden erst lokal auf dem Server erzeugt). .envaus der Vorlage erstellen und anpassen:cp .env.example .env # RUSTDESK_DOMAIN, COMPOSE_PROJECT_NAME, PROXY_NETWORK setzen- Traefik-Patches einfügen (siehe
traefik-patch/):01-docker-compose-ports.snippet.yaml→ Traefik-docker-compose.yamlunterports:02-traefik-entrypoints.snippet.yaml→ Traefik-configs/traefik.yamlunterentryPoints:- Falls von einer älteren Version migriert wird: alte
tcp:/udp:-Sektionen im File-Provider (configs/traefik-dynamic.yaml) entfernen, falls vorhanden — würden mit den neuen Docker-Label-Routern kollidieren.
- Traefik neu starten (neue
entryPointserfordern Neustart, kein reines Reload):cd <traefik-verzeichnis> docker compose up -d - RustDesk-Container starten:
docker compose up -d docker compose logs -f - Öffentlichen Key auslesen (für die Client-Konfiguration) — liegt als
Bind-Mount direkt neben der
docker-compose.yaml, kein Docker-Volume, kein Suchen unter/var/lib/docker/volumes/nötig:
Absoluter Pfad z. B. bei Checkout untercat ./data/id_ed25519.pub/home/dockeradmin/docker-stacks/rustdesk/:/home/dockeradmin/docker-stacks/rustdesk/data/id_ed25519.pub - Firewall öffnen: TCP 21115/21116/21117/21118/21119 + UDP 21116.
- Client testen: Host =
RUSTDESK_DOMAIN+ ausgelesener Key, eigene ID sollte grün erscheinen. Sicherheitstest: Verbindung mit falschem/leerem Key muss abgelehnt werden.
Sicherheit
-k _erzwingt die Key-Prüfung in hbbs/hbbr — ohne passenden Key keine Verbindung zum Server (vor Rollout aktiv testen, sieheProjekt.md).data/(enthältid_ed25519Private Key + SQLite-DB) und.envsind per.gitignoreausgeschlossen — nie committen.- Auf jedem ferngesteuerten Ziel-PC zusätzlich: starkes Permanent-Passwort + 2FA statt "immer erlauben".
Bekannter Trade-off
Traefik als TCP-Proxy vor hbbs verschlechtert die P2P-NAT-Traversal (hbbs
sieht nicht die echte Client-IP) — Sessions laufen praktisch immer über den
Relay (hbbr) statt direkt. Funktional unproblematisch, siehe Projekt.md.
Mehrere Instanzen auf verschiedenen Servern
Jeder Zielserver bekommt eine eigene Kopie dieses Repos (oder denselben
Checkout mit eigener lokaler .env) mit eigenem data/-Verzeichnis, eigenem
Key und eigener ID-Datenbank — komplett unabhängig voneinander, auch wenn
derselbe Code/Compose-Aufbau verwendet wird.
Lizenz
Copyright (C) 2026 Christian Säum – web-seo-consulting.eu
Dieses Projekt steht unter der GNU Affero General Public License, Version 3
oder (nach deiner Wahl) einer späteren Version (AGPL-3.0-or-later). Der
vollständige Lizenztext steht in der Datei LICENSE.
Du darfst die Software nutzen, weitergeben und – auch kommerziell – verkaufen.
Gibst du eine veränderte Fassung weiter oder betreibst du sie über ein
Netzwerk (z. B. als Dienst), muss deren vollständiger Quellcode ebenfalls
unter der AGPL-3.0-or-later verfügbar sein. Der Copyright-Hinweis und die
Nennung des ursprünglichen Autors dürfen nicht entfernt werden.
Diese Angabe betrifft nur die in diesem Repository enthaltenen eigenen Dateien (Konfiguration, Skripte, Anpassungen). Eingebundene Fremdsoftware und Container-Images unterliegen weiterhin ihren eigenen Lizenzen.