Apache Guacamole
Apache Guacamole ist eine HTML5 Webapplikation mit der es möglich ist, mit Standardprotokollen wie VNC, RDP und SSH über einen Browser auf beliebige vorkonfigurierte Desktops zuzugreifen.
Da die Applikation auf der Clientseite nur mit HTML5 und JavaScript auskommt, braucht der Benutzer dabei auch keine zusätzlichen Programme oder Plugins installiert zu haben, sondern nur einen aktuelleren Web-Browser, der bereits HTML5 unterstützt.
Früher als eigenständiges Projekt nur Guacamole genannt, ist es nun ein Projekt im Apache Incubator.
Der Apache Incubator ist ein Projekt der Apache Software Foundation (ASF). Jedes Apache Projekt startet in diesem sogenannten Incubator, um dann später einmal zu einem Top-Level-Projekt der Apache Software Foundation werden zu können.
Als sich dann die Entwickler mit HMTL5 auseinandergesetzt haben, startete nicht viel später die Entwicklung eines Proof-of-Concept-JavaScript-VNC-Client.
Der Client wurde nur mit JavaScript und Javakomponenten auf der Serverseite umgesetzt. Die Ausgaben des VNC-Servers wurden in eine XML-basierte Version übersetzt. Der Umfang der Applikation war damals sehr begrenzt und es standen auch nur die minimalsten VNC-Funktionen zur Verfügung. Obwohl die Applikation damals noch sehr langsam war, aber dennoch funktionierte, wurde das Proof-Of-Concept zu einem richtigen Online-Projekt.
Zu dieser Zeit funktionierten WebSockets noch nicht zuverlässig genug, und Java hatte auch noch keinen WebSocket Standard für Servlets. Daher wurde ein HTTP-basierter Tunnel entwickelt. Dieser Tunnel kann heute noch verwendet werden, falls aus irgendeinem Grund keine WebSockets genutzt werden könnten.
Später wurde dann ein schnelleres textbasiertes Protokoll entwickelt, welches ermöglicht, mit anderen Protokollen - nicht nur VNC - zu kommunizieren. Dazu wurde die gesamte Architektur neu aufgebaut. Das Ziel des Projekts wurde von einem angemessenen VNC-Client zu einem performanten HTML5-Remote-Desktop-Gateway erweitert. Nun kann Apache Guacamole als zentraler Gateway für den Fernzugriff auf die verschiedensten Betriebssysteme mit unterschiedlichen Fernzugangsprotokollen verwendet werden.
Die Architektur sieht folgendermassen aus:
Guacamole ist keine eigenständige Web-Applikation, sondern besteht aus vielen Teilen.
Die Web-Anwendung ist jedoch eher simpel gehalten. Auf dem Webserver läuft natürlich unter anderem das Backend (Guacamole) der Web-Applikation.
Möchte der Benutzer einen entfernten PC fernsteuern, schickt er zuerst eine Anfrage an den Webserver.
Neben dem Backend der Web-Applikation, die auf dem Webserver läuft, gibt es noch das sogenannte "guacd", das ebenfalls auf derselben Maschine wie der Webserver laufen muss. Guacd ist eine Java-Applikation und kennt die verschiedenen Remote-Desktop-Protokolle. Es kann sich also mit den verschiedenen Remote-Desktop-Servern in Verbindung setzen und mit diesen problemlos kommunizieren.
Damit das Ganze später auch dem Benutzer angezeigt werden kann, wurde ein neues Protokoll entwickelt: Das Guacamole-Protokoll. Mit diesem wird es möglich, dass das Backend der Web-Applikation (Guacamole) mit der Java-Applikation (guacd) kommunizieren kann. Durch das Protokoll werden die Ausgaben der Remote-Desktop-Server HTTP kompatibel gemacht.
Der Server kann nun dem Client die Ausgabe des Remote-Desktop-Servers im HTTP-Format präsentieren.
Damit der Benutzer den fernbedienten PC auch steuern kann, werden die Benutzereingaben wie Maus und Tastatur auf gleichem Wege wieder zurück an den Remote-Desktop-Server gesendet.
Als Webserver wird ein Apache Tomcat empfohlen, das auf einer Linux-Distribution wie Ubuntu installiert wird.
Folgende Protokolle werden von Apache Guacamole unterstützt.
-VNC
-RDP
-SSH
-Telnet
Früher als eigenständiges Projekt nur Guacamole genannt, ist es nun ein Projekt im Apache Incubator.
Der Apache Incubator ist ein Projekt der Apache Software Foundation (ASF). Jedes Apache Projekt startet in diesem sogenannten Incubator, um dann später einmal zu einem Top-Level-Projekt der Apache Software Foundation werden zu können.
Entwicklungsgeschichte
Am Anfang der Entwicklung, war Guacamole zunächst einmal ein JavaScript-Telnet-Client, der per Terminal bedient wurde und als "RealMint" bekannt war. Später wurde er dann zu einem HTML5-VNC-Client weiterentwickelt. Nun ist es ein Gateway, welcher viele gängige Remote-Desktop-Protokolle unterstützt. Ursprünglich nur ein Proof-of-Concept, ist Apache Guacamole heute performant genug für den täglichen Gebrauch und könnte die verschiedenen Desktopapplikationen für die Fernzugänge ersetzen.
Als Guacamole noch "RealMint" war, wurde der Tunnel für die Kommunikation in PHP geschrieben. Im Gegensatz zum heutigen in Guacamole implementierten HTTP-Tunnel, war der damalige RealMint-Tunnel ziemlich ineffizient. Wenige Teile der damaligen Applikation, wie etwa Codeteile der virtuellen Tastatur, sind bis heute noch im Guacamole Code vorhanden.
Der Client wurde nur mit JavaScript und Javakomponenten auf der Serverseite umgesetzt. Die Ausgaben des VNC-Servers wurden in eine XML-basierte Version übersetzt. Der Umfang der Applikation war damals sehr begrenzt und es standen auch nur die minimalsten VNC-Funktionen zur Verfügung. Obwohl die Applikation damals noch sehr langsam war, aber dennoch funktionierte, wurde das Proof-Of-Concept zu einem richtigen Online-Projekt.
Zu dieser Zeit funktionierten WebSockets noch nicht zuverlässig genug, und Java hatte auch noch keinen WebSocket Standard für Servlets. Daher wurde ein HTTP-basierter Tunnel entwickelt. Dieser Tunnel kann heute noch verwendet werden, falls aus irgendeinem Grund keine WebSockets genutzt werden könnten.
Später wurde dann ein schnelleres textbasiertes Protokoll entwickelt, welches ermöglicht, mit anderen Protokollen - nicht nur VNC - zu kommunizieren. Dazu wurde die gesamte Architektur neu aufgebaut. Das Ziel des Projekts wurde von einem angemessenen VNC-Client zu einem performanten HTML5-Remote-Desktop-Gateway erweitert. Nun kann Apache Guacamole als zentraler Gateway für den Fernzugriff auf die verschiedensten Betriebssysteme mit unterschiedlichen Fernzugangsprotokollen verwendet werden.
Grundsätzliches & Funktionsweise
Guacamole muss auf einem Webserver installiert und konfiguriert werden, damit man per Fernzugangsprotokoll auf die gewünschten PCs zugreifen kann.
![]() |
Bildquelle |
Guacamole ist keine eigenständige Web-Applikation, sondern besteht aus vielen Teilen.
Die Web-Anwendung ist jedoch eher simpel gehalten. Auf dem Webserver läuft natürlich unter anderem das Backend (Guacamole) der Web-Applikation.
Möchte der Benutzer einen entfernten PC fernsteuern, schickt er zuerst eine Anfrage an den Webserver.
Neben dem Backend der Web-Applikation, die auf dem Webserver läuft, gibt es noch das sogenannte "guacd", das ebenfalls auf derselben Maschine wie der Webserver laufen muss. Guacd ist eine Java-Applikation und kennt die verschiedenen Remote-Desktop-Protokolle. Es kann sich also mit den verschiedenen Remote-Desktop-Servern in Verbindung setzen und mit diesen problemlos kommunizieren.
Damit das Ganze später auch dem Benutzer angezeigt werden kann, wurde ein neues Protokoll entwickelt: Das Guacamole-Protokoll. Mit diesem wird es möglich, dass das Backend der Web-Applikation (Guacamole) mit der Java-Applikation (guacd) kommunizieren kann. Durch das Protokoll werden die Ausgaben der Remote-Desktop-Server HTTP kompatibel gemacht.
Der Server kann nun dem Client die Ausgabe des Remote-Desktop-Servers im HTTP-Format präsentieren.
Damit der Benutzer den fernbedienten PC auch steuern kann, werden die Benutzereingaben wie Maus und Tastatur auf gleichem Wege wieder zurück an den Remote-Desktop-Server gesendet.
Als Webserver wird ein Apache Tomcat empfohlen, das auf einer Linux-Distribution wie Ubuntu installiert wird.
Folgende Protokolle werden von Apache Guacamole unterstützt.
-VNC
-RDP
-SSH
-Telnet
Die Webapplikation kann von jedem Browser mit HTML5 erreicht werden - sofern der Server öffentlich im Internet verfügbar ist.
Hat man mit dem Browser seiner Wahl auf die Seite navigiert, muss man sich zuerst einloggen. Standardmässig sieht das folgendermassen aus:
Es gilt anzumerken, dass theoretisch die gesamte Web-Applikation an die eigenen Bedürfnisse angepasst werden kann, da es sich bei Apache Guacamole um ein Open-Source Projekt handelt.
Nachdem der Benutzer sich eingeloggt hat, präsentiert sich ihm folgende Seite:
Hier sieht der Benutzer die Verbindungen, die für ihn freigegeben sind, welche er zuletzt benutzt hat und kann sich oben rechts entweder ausloggen oder weitere Einstellungen vornehmen.
Die komplette Benutzerverwaltung wie Benutzernamen, Passwörter, verfügbare Verbindungen etc. können entweder in eine XML-Datei geschrieben oder mithilfe einer Datenbank realisiert werden.
Die Datenbank bietet neben der einfacheren Verwaltung auch die Möglichkeit, einen Administrator zu bestimmen, der via Webinterface die Verwaltung der Benutzer vornehmen kann.
Die Installation des Guacamole-Servers ist ein wenig aufwändig, da er selbst neu erstellt werden muss. Das heisst, es müssen zuerst einige Libraries auf dem (Linux-)Server installiert werden. Danach wird der Server neu erstellt.
Der Client muss eigentlich nicht selbst neu erstellt werden, da er in Java geschrieben ist, welches plattformübergreifend ist.
Das gesamte System ist mit eigenen APIs erstellt worden. Da es ein Open-Source Projekt ist, können online die Dokumentationen zu diesen APIs eingesehen werden. Mit diesen APIs könnte Guacamole unter anderem in eigene Applikationen eingebaut werden, ob diese nun frei oder proprietär sind.
Keine Kommentare:
Kommentar veröffentlichen