Mit Moonlight und Tailscale überall auf Ihrem Cloud-Server spielen
Unsere Server sind standardmäßig per IPv6 erreichbar. Viele Internetanschlüsse zu Hause haben IPv6,
aber nicht alle: Manche Mobilfunknetze, Hotel-WLANs und ältere Router haben nur IPv4. Sie können Ihrem
Server eine dedizierte IPv4 hinzufügen (5 € pro Monat), aber es gibt noch einen anderen Weg, der
außerdem die Ports von Sunshine zum Internet hin geschlossen hält: Tailscale. Es baut ein privates,
verschlüsseltes Netzwerk (ein „Tailnet“) zwischen Ihren Geräten auf, auf Basis von WireGuard. Ihr
Server und Ihr Smartphone bekommen jeweils eine Adresse in 100.x.y.z, und Moonlight verbindet sich
mit dieser Adresse, als wären beide bei Ihnen zu Hause.
Die Ergebnisse im Überblick
- Es funktioniert mit dem offiziellen Tailscale-Client auf beiden Seiten: direkte Verbindung
zwischen den beiden Maschinen (
tailscale ping: pong via 203.0.113.10:41641 in 1ms), Moonlight auf100.x.y.1. - Tailscale kostet im Stream nichts Messbares: Abwechselnde Durchläufe mit und ohne Tailscale ergaben dieselben 1080p 60 fps, 7,3 bis 7,8 ms Serververarbeitung auf beiden Wegen, 0 verlorene Bilder.
- Sunshine ist zum Internet hin geschlossen: Seine Ports nehmen nur Verbindungen an, die über das Tailnet kommen. Nur der Tunnel wird genutzt; an Ihrem Router muss nichts geöffnet werden.
- Geringe CPU-Last: Der Tailscale-Dienst belegte auf dem Server 3 bis 4 % eines Kerns, während ein 1080p-Stream mit 15 Mbit/s lief.
Zwei Wege zu einem Tailnet
| Tailscale-Konto | Headscale | |
|---|---|---|
| Was es ist | Der Dienst von Tailscale verwaltet Ihr Netzwerk (kostenloser Personal-Tarif) | Open-Source-Steuerungsserver, den Sie selbst betreiben |
| Client-Software | offizielle Tailscale-Apps | dieselben offiziellen Tailscale-Apps |
| Einrichtung | auf jedem Gerät anmelden | Headscale installieren, Schlüssel erzeugen, jedes Gerät darauf ausrichten |
| Erreichbarkeit | immer erreichbar | Headscale muss für alle Ihre Geräte erreichbar sein |
Der normale Weg ist ein Tailscale-Konto: Tailscale auf dem Server und Ihren Geräten installieren, mit demselben Konto anmelden, fertig. In unserem Test haben wir stattdessen Headscale verwendet, weil wir für einen Test kein Konto anlegen wollten: Es ist ein Open-Source-Server, der dieselbe Rolle spielt wie der Koordinationsdienst von Tailscale. Das Netzwerk selbst ist dasselbe: Auf beiden Maschinen lief der offizielle Tailscale-Client (Version 1.104.5), der dieselben WireGuard-Tunnel aufbaut, egal mit welchem Steuerungsserver er spricht.
Testaufbau
| Element | Wert |
|---|---|
| Server | Debian 13, Intel UHD 770 (geteilte GPU), 4 vCPU, Sunshine 2026.914, RetroArch, sway ohne Bildschirm |
| Client | Debian 13, Moonlight 6.2, H.264 1080p 60 fps, Hardware-Dekodierung |
| Tailnet | Tailscale 1.104.5 auf beiden, Headscale 0.29.7 auf dem Server (offizielles .deb von GitHub) |
| Netzwerk | Client und Server im selben Rechenzentrum: Über das Internet kommt die Latenz Ihrer Verbindung hinzu |
1. Tailscale auf dem Server installieren
Tailscale veröffentlicht Pakete für Debian 13:
curl -fsSL https://pkgs.tailscale.com/stable/debian/trixie.noarmor.gpg \
-o /usr/share/keyrings/tailscale-archive-keyring.gpg
curl -fsSL https://pkgs.tailscale.com/stable/debian/trixie.tailscale-keyring.list \
-o /etc/apt/sources.list.d/tailscale.list
apt update && apt install tailscale
Mit einem Tailscale-Konto führen Sie tailscale up aus und öffnen den angezeigten Link, um sich
anzumelden. Installieren Sie dann die Tailscale-App auf Ihrem Computer, Smartphone oder TV-Gerät und
melden Sie sich mit demselben Konto an.
Mit Headscale (was wir getestet haben) installieren Sie den Server aus seinem offiziellen
GitHub-Release, setzen server_url in /etc/headscale/config.yaml und legen dann einen Benutzer und
einen Schlüssel an:
headscale users create gamer
headscale preauthkeys create --user 1 --reusable --expiration 2h
tailscale up --login-server https://headscale.example.com --authkey <key> --hostname retro-server
Der Client tritt mit demselben Befehl tailscale up --login-server … --authkey … bei. In unserem Test
lauschte Headscale auf der privaten Adresse des Servers, weil beide Maschinen im selben Rechenzentrum
standen. Im echten Einsatz muss Headscale für alle Ihre Geräte erreichbar sein, über HTTPS: Betreiben
Sie es auf einer Maschine mit öffentlicher IPv4 (zum Beispiel mit der Option dedizierte IPv4), sonst
kann ein Gerät ohne IPv6 es nicht erreichen. Das ist der Hauptgrund, warum ein Tailscale-Konto
einfacher ist.
2. Die Verbindung prüfen
$ tailscale status
100.x.y.2 retro-client gamer linux -
100.x.y.1 retro-server gamer linux active; direct 203.0.113.10:41641, tx 750808 rx 128908072
$ tailscale ping 100.x.y.1
pong from retro-server (100.x.y.1) via 203.0.113.10:41641 in 1ms
direct bedeutet, dass die beiden Maschinen ohne Relay miteinander sprechen. Über das Internet
versucht Tailscale ebenfalls, Ihre Geräte direkt durch den Router bei Ihnen zu Hause zu verbinden (der
Server hat dafür ausgehendes IPv4). Gelingt das nicht, läuft der Verkehr über ein Tailscale-Relay
(„DERP“): Es funktioniert trotzdem, bringt aber zusätzliche Latenz. tailscale status zeigt Ihnen,
welchen der beiden Wege Sie bekommen haben.
Ein gewöhnlicher Ping durch den Tunnel dauerte im Mittel 1,7 ms (bestenfalls 0,8 ms) gegenüber 0,36 ms ohne Tailscale: Die WireGuard-Verschlüsselung fügt deutlich weniger als eine Millisekunde hinzu, was neben der Latenz einer Internetverbindung nicht ins Gewicht fällt.
3. Sunshine zum Internet hin geschlossen halten
Der Sinn des Tailnets ist, dass Sunshine nicht aus dem Internet erreichbar sein muss. Auf dem Server
verwirft eine kleine nftables-Tabelle die Ports von Sunshine außer auf der Schnittstelle tailscale0:
nft -f - <<'EOF'
table inet sunshine_tailnet_only {
chain input {
type filter hook input priority 0; policy accept;
iifname "tailscale0" accept
iifname "lo" accept
tcp dport { 47984, 47989, 47990, 48010 } drop
udp dport 47998-48010 drop
}
}
EOF
Wir haben es vom Client aus geprüft: Der Sunshine-Port 47989 antwortete nicht mehr auf der normalen
Adresse des Servers, wohl aber (HTTP 200) auf 100.x.y.1. Um Moonlight zu koppeln, öffnen Sie die
Weboberfläche von Sunshine über einen SSH-Tunnel (ssh -L 47990:localhost:47990 you@100.x.y.1).
4. Spielen: Moonlight auf der 100.x-Adresse
Fügen Sie in Moonlight den Server über seine Tailnet-Adresse hinzu (hier 100.x.y.1), koppeln Sie ihn
und starten Sie ein Spiel. Moonlight erkannte den bereits bekannten Server und verband sich ohne
weitere Einstellung. Die Tailnet-Schnittstelle hat eine kleinere Paketgröße (MTU 1.280 Byte); dafür
mussten wir in Moonlight nichts ändern.
Um zu sehen, ob Tailscale etwas verändert, haben wir dasselbe Spiel viermal gestreamt, abwechselnd über die normale Adresse des Servers und über seine Tailnet-Adresse:
| Moonlight, 1080p 60 fps H.264 | Ohne Tailscale | Über Tailscale |
|---|---|---|
| Empfangene Bildrate | 60,0 bis 60,4 fps | 60,0 fps |
| Verarbeitung auf dem Server (Erfassung + Kodierung), Mittel | 7,5 bis 7,8 ms | 7,3 bis 7,4 ms |
| Verarbeitung auf dem Server, max | 10,4 bis 10,6 ms | 10,5 bis 10,8 ms |
| Durch Netzwerk oder Jitter verlorene Bilder | 0 % | 0 % |
| Dekodierzeit auf dem Client | 0,23 ms | 0,24 bis 0,25 ms |
Auf dem Server belegte während des Streams der Tailscale-Dienst 2,8 bis 4,2 % eines Kerns, Sunshine 13 bis 17 % und der Emulator 3 bis 4 %. In zwei früheren Durchläufen, während andere Testserver dieselbe GPU auslasteten, stieg die Serververarbeitung im Mittel auf 21 bis 27 ms: Das lag an der in diesem Moment geteilten GPU, nicht an Tailscale, wie die abwechselnden Durchläufe oben zeigen.
5. Welches Angebot?
Tailscale selbst braucht fast nichts. Entscheidend ist das Spiel: iGPU Start (2 vCPU, 8 GB RAM, 14,99 € netto pro Monat) reicht für Retro-Konsolen; für PC-Spiele empfehlen wir iGPU Power (4 vCPU, 14 GB RAM, doppelter GPU-Anteil von Start, 29,99 € netto pro Monat).
Lieber sofort losspielen? Fragen Sie bei der Bestellung per E-Mail danach (contact@linuxgpu.eu): Wir können Ihnen den Server mit Sunshine, dem Launcher Ihrer Spiele und Tailscale vorinstalliert liefern (serverseitig). Sie installieren Moonlight und die Tailscale-App auf Ihren eigenen Geräten.
Was Sie darauf spielen können: Retro-Gaming mit RetroArch, Sunshine und Moonlight, Windows 11 in der Cloud mit Sunshine und Moonlight und Windows-Spiele unter Linux mit Wine.
Systeme, die ab Werk spielbereit sind. Die Systeme, die wir standardmäßig installieren, sind bereits dafür eingerichtet: Debian 13 mit aktuellem Kernel (7.3), den Intel-GPU-Treibern und Mesa (OpenGL, Vulkan, VA-API-Videokodierung) sowie Windows 11 (Option) mit dem Intel-Grafiktreiber und GPU-beschleunigtem Remotedesktop. Keine Treibersuche: Spiel und Sunshine installieren und loslegen.
Ausprobieren
Zu den Angeboten: Die Option dedizierte IPv4 kostet 5 € pro Monat, aber mit Tailscale brauchen Sie sie zum Spielen nicht.