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

Der Weg eines Bildes

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.

  1. Anmelden

    Die Anmeldung läuft über die Website, in der Desktop-App ebenso, mit denselben Konten.

  2. Rechner wählen

    In der Liste der freigegebenen Rechner genügt ein Klick auf „Verbinden“.

  3. 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.

  4. Verbinden

    Das Sitzungsfenster öffnet eine WebTransport-Verbindung über QUIC zum Datenserver und legt das Ticket vor.

  5. Streamen

    Je Sitzung spricht ein eigener Prozess mit Sunshine auf dem Arbeitsplatz. Bild und Ton werden ohne Neukodierung durchgereicht und in der App dekodiert.

  6. 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.

Ebenfalls auf GGS Network

Die übrigen Seiten, kurz erklärt.

  • GGS3-DB

    Die In-Memory-Datenbank mit PostgreSQL-Protokoll, mit Stack, Messungen und Spezifikation.

  • Team

    Wer GGS Network entwirft, baut und betreibt.

  • Status

    Ob Website, API und Dienste gerade erreichbar sind, laufend gemessen.