Linux Remote-Desktop im Eigenbau

Di, 14. Dezember 2021, Lioh Möller

Die Idee begann damit, dass ich die Applikation Teams, welche ich beruflich nutze, nicht mehr auf meinem Rechner im Homeoffice betreiben wollte. Die Gründe dafür sind vielfältig und wurden im Artikel zum Thema Telemetriedaten bereits erläutert.

Zunächst habe ich mich informiert, welche Lösungen und Angebote es zurzeit in diesem Bereich gibt. In den Medien war in den letzten Monaten öfters die Rede von shells.com, welche fix fertige Linux Remote-Desktops anbieten. Aus moralischer Sicht war ich etwas vorbelastet, denn die Firma dahinter wird von der gleichen Person betrieben, die für das Ende von Freenode verantwortlich ist. Nichtsdestotrotz habe ich das Angebot in Anspruch genommen, zumal eine 7-Tage-Geld-Zurück-Garantie geboten wird.

Leider waren meine ersten Tests alles andere als erfolgreich. Die VM startete nicht und es konnte keine Verbindung zu meinem virtuellen Desktop aufgebaut werden, weder über das Webfrontend, noch über den recht spartanischen Client. Ich wollte bereits das Angebot kündigen, als ich mich doch noch entschlossen habe, den Support zu kontaktieren. Nach einigem hin-und-her kam heraus, dass die Betreiber Probleme mit VMs am Standort Amsterdam haben. Diesen hatte ich gewählt, da es der einzige europäische Standort im Angebot ist. Nach 3 Tagen gelang es mir dann, mich mit der VM zu verbinden. Leider reagierte diese so träge und der Bildaufbau zeigte den Desktop-Inhalt zunächst schwammig an, dass ich das Experiment aufgeben musste.

Bisher bekannt war mir ausserdem die Freie Lösung x2go. Als Basis für meine Experimente sollte ein kleiner vserver bei Netcup dienen. x2go lässt sich schnell einrichten und die Installation ist unter Debian GNU/Linux mithilfe des folgenden Befehls bereits erledigt:

sudo apt-get install x2goserver x2goserver-xsession

Die Verbindung liess sich dank des x2goclients ohne weiteres herstellen. Die Geschwindigkeit bei einer regulären Desktopnutzung ist ausreichend, Videos lassen sich allerdings darüber nicht abspielen.

Man könnte nun annehmen Teams wäre ein einfacher Chatclient. In Wahrheit ist die Applikation allerdings extrem ressourcenhungrig und liess sich im virtuellen Desktop nicht nutzen, auch wenn man die grafischen Spielereien und sonstigen SchickSchnack deaktiviert.

x2go basiert auf dem nx Protokoll, welches von dem Hersteller NoMachine entwickelt und unter einer Freien Lizenz bereitgestellt wird. Der grafische Client/Server ist dabei allerdings proprietär. Dennoch habe ich mich in meiner Not dazu entschieden NoMachine einen Test zu unterziehen. Die Anwendung steht für x86 und x86_64 Linux im rpm, deb oder als Binärarchiv zum Download zur Verfügung. Auf dem netcup Server habe ich openSUSE installiert. Da für die Nutzung als Desktop eine Benutzeroberfläche benötigt wird, habe ich Xfce nachinstalliert:

zypper in -t pattern xfce

Einen regulären Benutzeraccount konnte ich mithilfe von YaST in wenigen Schritten hinzufügen.

Daraufhin habe ich das angebotene rpm Paket von NoMachine auf meinem lokalen Computer heruntergeladen und mittels scp auf das Zielsystem übertragen. Dort konnte ich es mit folgendem Befehl installieren:

rpm -Uvh /pfad/zum/Paket

Für den Zugriff muss der TCP Port 4000 geöffnet sein. Da bei openSUSE firewalld zum Einsatz kommt, gelang mir dies wie folgt:

firewall-cmd --permanent --zone=public --add-port=4000/tcp;  firewall-cmd --reload

Das NoMachine-Paket enthält sowohl die Client- als auch die Serverkomponente. Daher musste ich das gleiche Paket auf meinem lokalen Computer installieren; dieses Mal allerdings aus dem Binärarchiv. Letzteres enthält ein README, welches unbedingt befolgt werden sollte.

Nach dem Aufruf von NoMachine aus dem Startmenü, konnte ich eine neue Verbindung hinzufügen:

Nach einem Klick auf Verbinden wird der Benutzername und das Passwort des Remote-Rechners erfragt. Dabei sollte dieser so wie zuvor eingerichtet angegeben werden. Alternativ lässt sich eine SSH-Key basierte Anmeldung nutzen.

Nach kurzer Zeit wird die Verbindung aufgebaut und ein Assistent führt den Nutzer durch die wichtigsten Funktionen. Dazu gehört ein Blättermenü welches sich ähnlich wie eine Buchseite präsentiert.

Über den hervorgehobenen Button lässt sich das Bild auf den Fensterinhalt skalieren. Bei meinen Tests funktionierte dies ohne Performance-Einbussen auch auf einem Display mit 3440x1440px Auflösung. Im Browser konnte ich störungsfrei Videos bis zu einer Auflösung von 480p betrachten.

Doch die eigentliche Intention bestand ja darin, Teams auszusperren. Dazu habe ich die Anwendung als Flatpak in meinem Remote-Desktop installiert, was bereits in gewisser Weise dafür sorgt, dass sich diese nicht ganz so frei im System bewegen darf.

In den ersten Test stellt sich allerdings heraus, dass die 2GB RAM und 1 vCore nicht ausreichend sind.

Nach einem Upgrade auf 8GB und 2 Cores, lässt sich nun auch ein Softwaremonster wie Teams im Remote-Desktop nutzen.

Die vorgestellte Software lässt sich für unterschiedlichste Einsatzzwecke nutzen, und steht auch für Raspberry Pi und ARMv7 sowie ARMv8 zur Verfügung. Letztendlich ist der selbstgebaute Remote-Desktop noch kostengünstiger als eine Fertiglösung und ich habe volle Kontrolle darüber.