Remotedesktop auf Basis von HTML5

© Phanlop Boonsongsomnukool, 123RF

Klick in die Zukunft

HTML5 bietet eine Reihe neuer Funktionalitäten wie Audio, Video-Unterstützung, ohne dass dafür Plugins wie Flash oder Java nötig wären. Das eröffnet völlig neue Möglichkeiten in der Bereitstellung von Inhalten über das Web – auch für den mobilen Zugriff auf Anwendungen im LAN.
RAID-Technologie verspricht höhere Performance und mehr Sicherheit beim permanenten Speichern von Daten. Die ADMIN-Redaktion gibt einen Überblick über ... (mehr)

Die Bedienung entfernt laufender Applikationen im Browser ist spätestens seit Google Apps nichts Besonderes mehr. Was aber, wenn eigene Anwendungen aus dem Firmen-LAN oder der heimische Desktop über das Internet bereitgestellt werden sollen? Terminalserver-Technologien wie VNC und RDP oder VDI-Lösungen wie VMware View oder Citrix Xen Desktop sind dafür die erste Wahl. In der Regel muss aber an dem Rechner, von dem aus Benutzer auf die Remote-Anwendung zugreifen wollen, auch ein entsprechender Software Client installiert werden. Traut man der eingebauten Verschlüsselung nicht, oder ist die gar nicht erst vorhanden, wird schnell auch noch ein VPN-Client für die Verschlüsselung und Authentifizierung nötig.

Alles sehr ungünstig, wenn der Rechner zum Beispiel in der Hotel-Lobby oder einem Internet-Café steht, auf dem keine eigenen Anwendungen installiert werden dürfen. Diese Lücke füllen seit einigen Jahren "Clientless SSL-VPNs", die einen Zugriff auf Remote-Anwendungen über eine sichere HTTPS-Verbindung ohne Installation eines Clients nur mit dem Browser erlauben. Allerdings stellen auch diese Lösungen zumeist spezifische Anforderungen an Browser und Plugins. Häufig wird Java, Flash oder ActiveX – evtentuell sogar in einer ganz bestimmten Version – vorausgesetzt.

Besser mit HTML5

Als Alternative bietet sich Guacamole [1] an, eine HTML5-Web-Applikation, die einen grafischen Zugriff über Remotedesktop-Protokolle direkt im Browser bereitstellt, ohne dass weitere Plugins installiert werden müssen. Das Programm steht unter der AGPLv3 und unterstützt in der aktuellen Version 0.6.2 die Protokolle VNC und RDP, deren Funktionsumfang jedoch an einigen Stellen eingeschränkt ist. So können über RDP beispielsweise keine Audiodaten übertragen oder Netzlaufwerke verbunden werden.

Serverseitig arbeitet die in Java geschriebene Software auf einem Apache-Server mit Servlet-Container (Apache Tomcat) und fungiert dann als Proxy, der die grafische Ausgabe von VNC und RDP in XML übersetzt und umgekehrt ( Abbildung 1 ). Die per RDP oder VNC erreichbaren Desktops können dabei entweder auf dem Application Server selbst oder auf einem anderen Rechner im Netzwerk laufen. Guacamole verspricht eine fast native Performance, bietet internationale Keyboard-Unterstützung und ein On-Screen Keyboard, mit dem Tastatureingaben auch über die Maus erfolgen können.

Abbildung 1: Die Skizze zeigt das Funktionsschema von Guacamole und die Kommunikation mit RDP- oder VNC-Servern.

Basis für die Funktion von Guacamole ist das Canvas-Element in HTML5, das per Javascript umfangreiche grafische Operationen vornehmen kann. Dazu gehört das Zeichnen von Linien, Rechtecken, Kreisbögen und Bézierkurven, aber auch die Darstellung von Farbverläufen, Transparenz, Text und vor allem auch das Skalieren von Grafiken der Formate PNG, JPG und GIF. Ideale Voraussetzungen also, um einen Desktop mitsamt Anwendungen im Browser darzustellen. Voraussetzung ist dann lediglich ein Browser, der das Canvas-Element unterstützt. Das können die meisten aktuellen Browser (vom Internet Explorer 8 und 9 einmal abgesehen) bereits heute, obwohl das W3C davon ausgeht, dass HTML5 erst bis 2014 wirklich breite Unterstützung erfährt.

Guacamole installieren

Glücklicherweise hält die Guacamole Website bereits vorgefertigte Pakete für einige Distributionen bereit. Unter [1] finden Sie Pakete für Debian 6.0 (Squeeze), Ubuntu 11.10/12.04 und Fedora 15/16/17. Alternativ kann man Guacamole natürlich auch aus den Sourcen unter [3] selbst kompilieren. Für einen Test soll Guacamole 0.6.2 auf einem aktuellen (12.04.1 LTS) Ubuntu-System installiert werden. Dazu müssen zunächst noch die Voraussetzungen für den Java-, VNC- und RDP-Support geschaffen werden, was so rasch erledigt ist:

sudo apt-get install tomcat6 libvncserver0 libfreerdp1

Anschließend laden Sie die Pre-Build-Pakete für Ubuntu 12.04 von der Guacamole-Projektseite bei SourceForge herunter und entpacken den Inhalt des Archivs in Ihrem Homeverzeichnis. Wechseln Sie nun in das neue Verzeichnis

cd guacamole-0.6.2-ubuntu-12.04-i386

und installieren Sie die Guacamole-Pakete. Das erledigt der folgende Einzeiler:

sudo dpkg -i guacd_*.deb guacamole_*.deblibguac3_*.deb libguac-client-vnc0_*.deblibguac-client-rdp0_*.deb

Möchten Sie lediglich VNC-Verbindungen im Browser verfügbar machen, können Sie auf die Installation des Paketes »libguac-client-rdp0_*.deb« verzichten.

Der Tomcat-Server benötigt nun noch zwei symbolische Links zu den Dateien »guacamole.war« and »guacamole.properties« . Außerdem muss der User »tomcat6« noch der neuen Gruppe »guacamole-web« hinzugefügt werden, was durch Einspielen des Paketes

sudo dpkg -i guacamole-tomcat_*.deb

automatisch erledigt wird. Die manuelle Vorgehensweise wird alternativ auf der Guacamole Projekt-Website beschrieben. Abschließend ist ein Neustart des Tomcat-Servers fällig, wählen Sie dazu einfach »Ja« in der folgenden Abfrage ( Abbildung 2 ), oder starten Sie den Tomcat-Server auf der Kommandozeile neu:

Abbildung 2: Das Einspielen der Pakete von der Guacamole-Website aktiviert auf dem Ubuntu-System anschließend ein Skript, das den Tomcat-Server konfiguriert.
sudo /etc/init.d/tomcat6 restart

Damit der Zugriff über Guacamole auf den Desktop gelingt, muss natürlich zunächst auch ein Desktop freigegeben werden. Für den Test soll der Desktop auf einem Windows-7-PC über das RDP-Protokoll freigegeben werden. Natürlich funktioniert das ebenso mit einem echten Windows-Terminalserver oder einem Rechner, auf dem der Desktop per VNC-Server freigegeben ist.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023