
Inhaltsverzeichnis
Zwift ist eine der populärsten Plattformen für Indoor-Cycling. Doch wer als Linux-Nutzer den smarten Rollentrainer mit Zwift verbinden will, kennt das Problem: Es gibt keine native Linux-Version. Lange bedeutete das: Wine installieren, fummeln, hoffen. Mit jeder Zwift-Aktualisierung die Angst, dass das Setup wieder bricht.
Doch es gibt Hoffnung: Das Open-Source-Projekt netbrain/zwift bietet eine clevere Containerlösung, die Zwift unter Linux erstaunlich stabil und performant macht. Dieser Blogpost zeigt, wie das Ganze funktioniert, was unter der Haube passiert und wie man es einrichtet.
Warum Zwift unter Linux so knifflig ist
Zwift ist ausschließlich für Windows (und macOS) verfügbar. Die Wine-Community hat zwar beachtliche Fortschritte gemacht, doch DirectX, Updates und Kopierschutz sorgen immer wieder für Stolperfallen:
- DirectX 11/12 Rendering: Wine unterstützt das zwar teilweise, aber es ist fehleranfällig.
- Bluetooth-Verbindungen: Trainer und Sensoren über USB-Bluetooth sind oft unzuverlässig.
- Updates: Jede Zwift-Version kann neue Probleme verursachen. Kein "set it and forget it".
Die Lösung: Zwift im Docker-Container
Statt Wine direkt auf dem Host zu verwenden, verpackt netbrain/zwift
das komplette Setup in einem Docker-Container. Das Projekt stammt vom norwegischen Entwickler Kim Eik und ist komplett Open Source. Das bringt gleich mehrere Vorteile:
- Isoliertes Wine: Die Wine-Version ist abgestimmt und vorkonfiguriert.
- GPU-Unterstützung: Per NVIDIA Container Toolkit lässt sich Hardwarebeschleunigung aktivieren.
- Bluetooth-Bridge: Verbindung der Sensoren über die Zwift Companion App.
- Automatisiertes Setup: Mit einem Befehl ist alles installiert.
Setup im Detail
Voraussetzungen
Bevor es losgeht, sollten einige grundlegende Voraussetzungen erfüllt sein. Du benötigst entweder Docker oder Podman, um Container unter Linux betreiben zu können. Falls du eine NVIDIA-Grafikkarte verwendest, muss zusätzlich das NVIDIA Container Toolkit installiert sein, um die Hardwarebeschleunigung im Container nutzen zu können. Und schließlich brauchst du die Zwift Companion App auf deinem Smartphone, damit du Sensoren wie Pulsmesser oder Smarttrainer via Bluetooth koppeln und ins Spiel bringen kannst.
Beachte außerdem: Der fertige Container ist über 11 GB groß, da er sowohl ein vollständiges, vorkonfiguriertes Wine-Setup als auch die Windows-Version der Zwift-Anwendung enthält. Plane daher ausreichend Speicherplatz und ggf. etwas Geduld beim Download ein.
Installation
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/netbrain/zwift/master/bin/install.sh)"
Damit wird ein Desktop-Shortcut sowie der Befehl zwift
im Terminal installiert. Zum Starten einfach:
zwift
Optional lassen sich viele Aspekte über Umgebungsvariablen konfigurieren (siehe GitHub-Doku).
Typische Fehlerquellen und Container-Features
Im Alltag mit dem Zwift-Container kann es zu ein paar klassischen Stolperfallen kommen. Zum einen sollte das NVIDIA-Treiber-Setup korrekt sein – ein einfaches nvidia-smi
im Terminal muss funktionieren, sonst wird die Grafikkarte im Container nicht erkannt. Auch Docker selbst muss passende Rechte haben: Wer ohne Root arbeitet, sollte seine Benutzergruppe entsprechend konfigurieren oder alternativ Podman einsetzen. Zudem muss PulseAudio sauber eingebunden sein, denn der Sound wird aus dem Host in den Container weitergereicht. Prüfe also, ob die Socket-Datei unter /run/user/UID/pulse/native
im Container verfügbar ist.
Wenn alles steht, bietet der Container eine Menge praktischer Features: GPU-Passthrough ermöglicht die volle Nutzung deiner Grafikkarte im Spiel – insbesondere mit dem NVIDIA Container Toolkit. Der Sound wird wie erwähnt über PulseAudio übertragen. Die Verbindung zu deinem Trainer oder Pulsmesser erfolgt per Companion App über WLAN, was viele Bluetooth-Probleme umgeht. Eigene .zwo
-Workout-Dateien kannst du einfach per Volume-Mount einbinden. Und für Power-User: Mehrere Zwift-Instanzen lassen sich parallel starten – nützlich etwa zum Testen oder für virtuelle Gruppenfahrten.
NVIDIA und Wine unter der Haube
Trotz der Nutzung von Docker wird im Container weiterhin Wine eingesetzt. Allerdings handelt es sich nicht um ein beliebiges Setup, sondern um eine speziell abgestimmte und vorkonfigurierte Version. Diese bringt bereits Optimierungen für DirectX mit, insbesondere durch den Einsatz von DXVK, einem Direct3D-zu-Vulkan-Übersetzer, der die Grafikleistung erheblich verbessert. Zudem wurde die Umgebung aktiv getestet, um mit aktuellen Zwift-Versionen stabil zu funktionieren – das minimiert das Risiko von Update-bedingten Ausfällen deutlich.
Die NVIDIA-Unterstützung erfolgt via nvidia-container-toolkit
. Wichtig ist, dass nvidia-docker2
installiert und default-runtime
entsprechend gesetzt ist:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
Fazit
Mit netbrain/zwift
wird die Nutzung von Zwift unter Linux zur praktikablen Alternative. Keine Wine-Bastelei auf dem Host, stabile Grafikleistung über NVIDIA, kein Frust beim Update. Klar, etwas Terminal-Arbeit ist gefragt, aber genau das lieben wir Linux-Nerds ja.
Wer Indoor-Cycling liebt und Linux nicht verlassen will, findet hier eine nahezu perfekte Lösung. Und wer mag, kann sogar mehrere Zwift-Instanzen gleichzeitig starten – falls man mal ein Gruppenrennen simulieren möchte ;-)