Analyse: Kompilierung von WebTorrent Desktop auf ARM-basierten SBCs
August 8, 2018
Dieser Beitrag dokumentiert den Versuch, die WebTorrent Desktop-Anwendung auf einem ARM-basierten Single-Board-Computer (SBC) unter Armbian (Architektur: armhf) zu kompilieren. Das Experiment wurde abgebrochen, da die Hardware-Anforderungen des Build-Prozesses die verfügbaren Ressourcen bei weitem überstiegen.
Zielsetzung
Das ursprüngliche Ziel war es, eine voll funktionsfähige Desktop-Anwendung für das dezentrale Streaming von Torrents auf einem stromsparenden ARM-Gerät wie dem Orange Pi Plus 2 oder einem Raspberry Pi 3 zu betreiben.
Analyse des Scheiterns
WebTorrent Desktop basiert auf dem Electron-Framework, das es Entwicklern ermöglicht, Desktop-Anwendungen mit Web-Technologien (Chromium und Node.js) zu erstellen. Der Build-Prozess einer Electron-Anwendung, insbesondere auf einer Nicht-Standard-Architektur wie ARM, ist extrem ressourcenintensiv.
Zwei Hauptprobleme führten zum Scheitern des Versuchs:
-
Hohe Anforderungen des Electron-Builds: Das Kompilieren von Electron und seinen Abhängigkeiten erfordert typischerweise:
- Viel Arbeitsspeicher: Oft mehr als 8 GB RAM, um alle Build-Schritte ohne Swapping ausführen zu können.
- Ausreichend Speicherplatz: Der Quellcode und die temporären Build-Artefakte können über 20 GB Speicherplatz beanspruchen.
- Starke CPU-Leistung: Der Kompilierungsprozess ist stark parallelisiert und profitiert von mehreren, schnellen CPU-Kernen.
SBCs wie der Orange Pi oder Raspberry Pi 3 (mit 1-2 GB RAM und einer vergleichsweise langsamen CPU) erfüllen diese Anforderungen nicht.
-
Instabilität von
npm install: Selbst vor dem eigentlichen Build scheiterte dernpm install-Prozess wiederholt oder lief über Stunden, ohne abzuschließen. Dies ist auf die große Anzahl von Abhängigkeiten und die Notwendigkeit zurückzuführen, native Module speziell für diearmhf-Architektur zu kompilieren, was die begrenzten Systemressourcen überlastete.
Fazit
Die Kompilierung von ressourcenintensiven Desktop-Anwendungen wie WebTorrent Desktop auf älteren, leistungsschwachen ARM-basierten SBCs ist in der Praxis nicht durchführbar. Die Hardware-Anforderungen des Electron-Frameworks übersteigen die Kapazitäten dieser Geräte bei weitem.
Leichtgewichtigere Alternativen für ARM-Geräte
Für den Betrieb eines Torrent-Clients auf einem SBC eignen sich schlanke, kommandozeilenbasierte oder Web-UI-gesteuerte Alternativen wesentlich besser:
webtorrent-cli: Die offizielle Kommandozeilen-Version von WebTorrent. Sehr ressourcenschonend und ideal für den Headless-Betrieb.- Transmission (
transmission-cli/transmission-daemon): Ein etablierter, stabiler und sehr leichtgewichtiger BitTorrent-Client, der sich über ein Web-Interface oder eine Kommandozeile steuern lässt. - qBittorrent-nox: Eine Headless-Version von qBittorrent, die ein umfangreiches Web-UI bietet und sich gut für den Server-Einsatz eignet.
- aria2: Ein vielseitiges Kommandozeilen-Download-Tool, das auch BitTorrent unterstützt und sich hervorragend für die Skript-Automatisierung eignet.