Remote-Desktop auf Basis von Moonlight und Sunshine. Stack und Spezifikation.
Ein Windows-Arbeitsplatz im Unternehmen kommt als Videostrom in den Browser oder in ein natives Fenster der GGS-Desktop-App: über WebTransport direkt vom eigenen Datenserver, ohne Umweg über die API.
In Entwicklung
Stand: Oktober 2026
Browser oder Desktop-App
WebCodecs im Worker
Datenserver
Go · WebTransport
Stream-Brücke
moonlight-common-c
Windows-Arbeitsplatz
Sunshine
Auf einen Blick
Die Eckwerte des Remote-Desktops, belegt durch den Code.
Bis 3840 × 2160
Auflösung, Standard 1920 × 1080 bei 60 Bildern pro Sekunde
Anbindung an Sunshine
WebTransport
Über QUIC mit TLS 1.3, Bild und Ton laufen nie über die API
Datenebene in Go
Selbst gehostet
Eigener Datenserver, Windows-Arbeitsplätze mit Sunshine
Architektur
So läuft eine Sitzung
Vom Klick auf „Verbinden“ bis zur Sperre des Arbeitsplatzes.
Anmelden
Anmelden
Die Anmeldung läuft über die Website, in der Desktop-App ebenso, mit denselben Konten.
Rechner wählen
Rechner wählen
In der Liste der freigegebenen Rechner genügt ein Klick auf „Verbinden“.
Prüfen und Ticket
Prüfen und Ticket
Die API prüft Rechte und Richtlinie, reserviert den Arbeitsplatz und stellt ein Einmal-Ticket aus, das 60 Sekunden gilt und an Sitzung und Server gebunden ist.
Verbinden
Verbinden
Das Sitzungsfenster öffnet eine WebTransport-Verbindung über QUIC zum Datenserver und legt das Ticket vor.
Streamen
Streamen
Je Sitzung spricht ein eigener Prozess mit Sunshine auf dem Arbeitsplatz. Bild und Ton werden ohne Neukodierung durchgereicht und in der App dekodiert.
Beenden
Beenden
Wer das Fenster schließt, beendet die Sitzung. Der Arbeitsplatz wird gesperrt, erst dann ist er wieder frei.
Der Stack
Sechs Teile mit klaren Grenzen: Die API steuert, der Datenserver streamt, die App zeigt.
Browser und Desktop-App
Im Browser oder in der Desktop-App (Electron und React): WebTransport und WebCodecs laufen in einem Worker, der Ton in einem AudioWorklet.
Datenebene
Ein Dienst in Go mit quic-go und webtransport-go. Er prüft Tickets, setzt Richtlinien durch und führt die Sitzungen.
Stream-Brücke
moonlight-common-c mit ENet und nanors, als eigener Prozess je Sitzung. Sie spricht GameStream mit Sunshine.
Steuerebene
TypeScript auf Bun mit Elysia und Better Auth: Sitzungsvermittlung, Rechte, Richtlinien und Audit. Daten in PostgreSQL, belegte Plätze in Redis.
Verträge
Protobuf mit buf und Connect RPC: über alle Sprachgrenzen dieselben Nachrichten.
Arbeitsplatz
Windows 11 Pro mit Sunshine aus den stabilen Releases. Sunshine nimmt den Bildschirm auf, kodiert ihn und spielt die Eingaben ein.
Bild und Ton als Videostrom.
Direkt vom eigenen Datenserver.
Nie über die API.
Spezifikation
Bild
- Codec
- H.264
- Weitere Codecs
- HEVC und AV1Geplant
- Auflösung
- bis 3840 × 2160, Standard 1920 × 1080
- Bildrate
- Standard 60 Bilder pro Sekunde
- Farbe
- Rec. 709, 4:2:0
- Bitrate
- automatisch aus Auflösung und Bildrate, 2 bis 100 Mbit/s
- Encoding
- auf dem Arbeitsplatz durch Sunshine: NVENC, AMF, Quick Sync oder Software
- Decoding
- WebCodecs im Browser und in der Desktop-App, auf geringe Latenz eingestellt
- Richtlinien
- Auflösung, Bildrate und Bitrate je Gruppe begrenzbar
Ton
- Codec
- Opus, 48 kHz
- Kanäle
- Stereo
- Mikrofon
- wird nicht übertragen
Eingabe
- Tastatur
- nach Tastenposition, es gilt das Layout des Arbeitsplatzes
- Maus
- absolut oder relativ mit Pointer Lock, fünf Tasten
- Mausrad
- vertikal und horizontal
- Vollbild
- mit Keyboard Lock, Tastenkürzel gehen an den Arbeitsplatz
- Strg+Alt+Entf
- wird nicht übertragen
- Zwischenablage, Dateien, Geräte
- über einen Agenten auf dem ArbeitsplatzGeplant
- Touch und Gamecontroller
- nicht vorgesehen
Übertragung
- Protokoll
- WebTransport über HTTP/3 (QUIC)
- Datenweg
- Bild, Ton und Eingaben direkt zwischen App und Datenserver, nie über die API
- Neukodierung
- keine, der Datenserver reicht den Strom von Sunshine durch
- Wiederverbinden
- innerhalb einer Schonfrist, Standard 90 Sekunden
- Relay und NAT-Traversal
- für Standorte ohne direkte VerbindungGeplant
Sicherheit
- Anmeldung
- Konten der Website, auch über OIDC, LDAP und Gruppen
- Rechte
- je Gruppe und Rechner, Richtlinien werden restriktiv zusammengeführt
- Tickets
- einmalig, 60 Sekunden gültig, an Sitzung und Server gebunden, mit Ed25519 signiert
- Verschlüsselung
- TLS 1.3 mit angeheftetem Zertifikat zur Datenebene, die Strecke zum Arbeitsplatz vollständig verschlüsselt
- Kopplung
- mit Sunshine automatisch, ohne Zutun der Nutzer
- Isolation
- ein eigener Prozess je Sitzung
- Sitzungsende
- sperrt den Arbeitsplatz
- Audit
- Sitzungsereignisse werden protokolliert, Bild, Ton und Zwischenablage nie
Plattformen
- macOS
- Apple Silicon und Intel
- Windows
- x64 und ARM64
- Linux
- x64, als AppImage und deb
- Browser
- Chrome und Edge, ohne eigene App
- Mobil
- nicht vorgesehen
- Arbeitsplatz
- Windows 11 Pro mit Sunshine
- Datenserver
- Container-Image, selbst betrieben
Lizenzen
- Stream-Brücke
- moonlight-common-c unter GPL-3.0, als eigener Prozess vom übrigen Server getrennt
- ENet, nanors
- MIT
- Sunshine
- GPL-3.0, wird nicht mitgeliefert, sondern aus den offiziellen Releases installiert
- Desktop-App
- enthält keinen GPL-Code
Stand
- Umgesetzt
- Steuerebene mit Sitzungsvermittlung, Tickets, Rechten, Richtlinien und Audit; Datenebene mit Wiederverbinden; automatische Kopplung; Sitzung im Browser und im Sitzungsfenster der Desktop-App
- Getestet
- durchgängig gegen Sunshine in einem Linux-Container und in einer Windows-VM
- Offen
- Test auf Arbeitsplatz-Hardware mit GPU und der Produktionsbetrieb; Messwerte zur Latenz folgen danach
- Geplant
- Zwischenablage, Dateien und Geräte; HEVC, AV1 und mehr als 4K; Relay und NAT-Traversal
Häufige Fragen zum Remote-Desktop
Kurz beantwortet, die Details stehen in der Spezifikation.