Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
allgemein:guacamole_installation_test [2023/07/07 12:13 CEST] sritterallgemein:guacamole_installation [2023/07/17 16:26 CEST] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-<!DOCTYPE markdown> 
-<WRAP 800px> 
- 
-# Apache Guacamole 
- 
-Guacamole ist eine Art VNC-Proxy, den Sie entweder lokal kompilieren und installieren müssen oder mittels Docker in Containern betreiben können. Mit einem zusätzlichen bwLehrpool-Plugin können Sie dann über eine einfache Weboberfläche Ihre bwLehrpool-Clients per Webbrowser zugänglich machen (siehe auch [[allgemein:remotenutzung_von_bwlehrpool|Remotezugriff auf bwLehrpool-Clients]]. 
- 
-Da die Inbetriebnahme mit Docker deutlich einfacher und schneller als eine Lokalinstallation ist, beschränken wir uns hier auf die Containerlösung. 
- 
-# Container Setup 
- 
-Sie finden ein vorgefertigtes Docker-Compose File nebst README und Beispielen zur Konfiguration in unserem Git-Repository im Unterordner 'docker'. Achten Sie darauf, dass unter Linux Dateien die mit einem '.' (Punkt) beginnen evtl. nicht sichtbar sind. Nutzen Sie daher ggf. das Kommando 'ls -la' um auch versteckte Dateien anzuzeigen. 
- 
-Klonen Sie das Repository und kopieren als ersten Schritt die Konfigurationsdatei '.env.example' nach '.env'. 
- 
-``` 
-git clone https://git.openslx.org/bwlp/bwlp-guacamole-ext.git 
-cd bwlp-guacamole-ext/docker 
-cp .env.example .env 
-``` 
- 
-Die meisten notwendigen Einstellungen setzen Sie in der Datei '.env'. 
-Editieren Sie dort mindestens die IP/Hostname der Variablen 'SLX_CLIENT_LIST_URL', damit diese auf Ihren Satellitenserver verweist. 
- 
-Für den LDAP-Login müssen Sie noch die notwendingen LDAP_*-Variablen anpassen. Es gibt noch weitere Konfigurationsoptionen, falls nötig https://guacamole.apache.org/doc/gug/guacamole-docker.html#ldap-authentication . 
- 
-**Optional:** Falls Ihr LDAP-Server ein selbstsigniertes SSL-Zertifikat verwendet, ist es unter Umständen notwendig, dass Sie dieses in das Image importieren. Editieren Sie dazu die Datei 'Dockerfile' und passen die auskommentierten Zeilen an. Kopieren Sie dann das das notwendige Zertifikat z.B. ebenfalls unter './files'. Falls Sie kein spezielles Zertifikat benötigen, können Sie diesen Teil überspringen. 
- 
-Kopieren Sie als nächstes das für Ihre Guacamole Version passende 'bwlp-guac-plugin' nach './files/extensions' 
-Die aktuell zur Verfügung stehenden Plugins finden Sie unter https://files.bwlp.ks.uni-freiburg.de/satellit/guacamole/ . 
- 
-Achten Sie darauf, dass immer **nur ein** bwlp-Plugin in diesem Ordner liegt! 
- 
-Um die Container zu starten führen Sie abschließend einfach folgenden Befehl aus: 
- 
-``` 
-docker compose up --build -d 
-``` 
- 
-Um zu prüfen, ob die Container laufen bzw. um Logs zu inspizieren: 
-``` 
-docker ps 
-docker logs -f <container-name> 
-``` 
- 
----- 
- 
-Wenn Sie auf eine andere Guacamole-Version wechseln möchten, editieren Sie einfach wieder die .env-Datei und starten die Container mit folgendem Kommando neu: 
-``` 
-docker compose up --build --force-recreate -d 
- 
-``` 
- 
- 
-## Apache Reverse Proxy einrichten 
- 
-Reverse Proxy-Konfiguration für Apache anlegen und entsprechende Module aktivieren.  
- 
-``` 
-# Apache Module aktivieren 
-a2enmod rewrite 
-a2enmod proxy_http 
-a2enmod ssl 
-a2enmod proxy_wstunnel 
-``` 
- 
-Nachfolgender Inhalt in .conf datei einfügen 
- 
-``` 
-vi /etc/apache2/sites-available/bwlehrpool-remote.conf 
-``` 
- 
-**IP (10.9.8.7)** und **FQDN (bwlehrpool-remote.hs-xyz.de)** sind Platzhalter und müssen entsprechend angepasst werden: 
- 
-``` 
-<VirtualHost 10.9.8.7:80> 
-        ServerName bwlehrpool-remote.hs-xyz.de 
-        ServerAdmin webmaster@test.de 
- 
-        RewriteEngine On 
-        RewriteCond %{HTTPS} !=on 
-        RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 
-</VirtualHost> 
- 
- 
-<VirtualHost 10.9.8.7:443> 
-        ServerName bwlehrpool-remote.hs-xyz.de 
-        ServerAdmin webmaster@test.de 
- 
-        SSLEngine on 
-        SSLProtocol All -SSLv2 -SSLv3 
-        SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt 
-        SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key 
-         
-        RewriteEngine  on 
-        RewriteRule    "^/guacamole"  "/" [R] 
- 
-        ProxyPass / http://10.9.8.7:8080/guacamole/ flushpackets=on 
-        ProxyPassReverse / http://10.9.8.7:8080/guacamole/ 
-        ProxyPassReverseCookiePath /guacamole / 
-         
-        <Location /websocket-tunnel> 
-                Order allow,deny 
-                Allow from all 
-                ProxyPass ws://10.9.8.7:8080/guacamole/websocket-tunnel 
-                ProxyPassReverse ws://10.9.8.7:8080/guacamole/websocket-tunnel 
-        </Location> 
-        SetEnvIf Request_URI "^/tunnel" dontlog 
-        CustomLog  /var/log/apache2/guac.log common env=!dontlog 
-</VirtualHost> 
-``` 
- 
-``` 
-# Selbst signiertes Zertifikat erstellen (besser Let's Encrypt oder korrektes Hochschulzertifikat verwenden) 
-openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt 
- 
-# Seite aktivieren: 
-a2ensite bwlehrpool-remote.conf 
- 
-# Webserver neustarten 
-systemctl restart apache2 
-``` 
- 
- 
-## Problembehebung 
- 
-Wenn nach dem Login an der Guacamole-Anmeldemaske keine Raumgruppen oder Clients angezeigt werden, kann evtl. die Liste vom Satellitenserver nicht abgerufen werden. 
- 
-Prüfen Sie, ob der Wert der Variablen 'SLX_CLIENT_LIST_URL' korrekt auf Ihren Satellitenserver verweist. Achten Sie auch auf HTTP bzw. HTTPS. Im Webinterface des Satellitenservers, können Sie die HTTPS-Verschlüsselung im Menüpunkt "Web-Schnittstelle" aktivieren. 
- 
-Sie können zur Kontrolle die Metadaten des Satellitenservers direkt innerhalb des Guacamole-Containers abrufen. 
- 
-``` 
-docker exec -it <container-name> /bin/bash 
-curl -k -L -v https://<SAT-IP>/slx-admin/api.php?do=remoteaccess 
-``` 
- 
-Dabei sollte eine json-Struktur herauskommen, die die Liste von Clients und Gruppen enthält. Verfügbare Clients müssen  im 'state: IDLE' sein und ein 'password' gesetzt haben, damit eine Verbindung möglich ist. 
- 
-</WRAP> 
- 
- 
-## Lokale Installation (old-way) 
- 
-Der Vollständigkeit halber finden Sie hier noch die alte Anleitung zur lokalen Installation. Diese wird derzeit jedoch nicht mehr gepflegt und wir empfehlen Ihnen die Nutzung der Docker Container. 
- 
-++++ Anleitung ausklappen | 
- 
-# Aufsetzen eines Apache Guacamole Proxy 
- 
-Um remote auf bwLehrpool-Clients zugreifen zu können ([Remotenutzung von bwLehrpool](https://www.bwlehrpool.de/doku.php/allgemein/remotenutzung_von_bwlehrpool)), benötigen Sie einen [Apache Guacamole](https://guacamole.apache.org)-Server. 
- 
-In dieser Anleitung wird **Ubuntu 20.04.2 LTS** als Basis-OS genutzt und **Guacamole in der Version 1.3.0** verwendet. 
- 
-Sie können Guacamole entweder direkt aus den Sources bauen und installieren oder alternativ in Docker-Containern bereitstellen. Zusätzlich wird ein Webserver benötigt (im Beispiel wird Apache verwendet). 
- 
-## Installation von Guacamole 
- 
-- Installation benötigter Abhängigkeiten 
-``` 
-apt install apache2 freerdp2-dev gcc libavcodec-dev libavformat-dev libavutil-dev libcairo2-dev libjpeg-turbo8-dev libossp-uuid-dev libpango1.0-dev libpng-dev libpulse-dev libssh2-1-dev libssl-dev libswscale-dev libtool-bin libvncserver-dev libvorbis-dev libwebp-dev libwebsockets-dev make tomcat9 
-``` 
-(Anmerkung: Das derzeit aktuelle Debian 11 „Bullseye“ beinhaltet kein libjpeg-turbo8-dev, jedoch libjpeg62-turbo-dev.) 
- 
-- Guacamole 1.3.0 herunterladen   
-  ````bash 
-  mkdir /usr/src && cd /usr/src 
-  wget https://dlcdn.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war 
-  wget https://dlcdn.apache.org/guacamole/1.3.0/binary/guacamole-auth-ldap-1.3.0.tar.gz 
-  wget https://dlcdn.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz 
-  ```` 
- 
-- Sources entpacken   
-  ```` 
-  tar xzf guacamole-server-1.3.0.tar.gz 
-  ```` 
- 
-- Configure aufrufen 
-  ```` 
-  cd /usr/src/guacamole-server-1.3.0 
-  ./configure --with-systemd-dir=/etc/systemd/system   
-  ```` 
- 
-- Die Ausgabe sollte bei korrekter Installation der Abhängigkeiten in etwa so aussehen: 
-  ````bash 
-  #------------------------------------------------ 
-  guacamole-server version 1.3.0 
-  #------------------------------------------------ 
-   
-     Library status: 
-   
-       freerdp2 ............ yes 
-       pango ............... yes 
-       libavcodec .......... yes 
-       libavformat.......... yes 
-       libavutil ........... yes 
-       libssh2 ............. yes 
-       libssl .............. yes 
-       libswscale .......... yes 
-       libtelnet ........... no 
-       libVNCServer ........ yes 
-       libvorbis ........... yes 
-       libpulse ............ yes 
-       libwebsockets ....... yes 
-       libwebp ............. yes 
-       wsock32 ............. no 
-   
-     Protocol support: 
-   
-        Kubernetes .... yes 
-        RDP ........... yes 
-        SSH ........... yes 
-        Telnet ........ no 
-        VNC ........... yes 
-   
-     Services / tools: 
-   
-        guacd ...... yes 
-        guacenc .... yes 
-        guaclog .... yes 
-   
-     FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2 
-     Init scripts: no 
-     Systemd units: /etc/systemd/system 
-   
-  Type "make" to compile guacamole-server. 
-   
-  ```` 
-     
-- Kompilieren und Installieren 
-  ```` 
-    make 
-    make install 
-    ldconfig 
-  ```` 
- 
-- Guacamole Server Service   
-  ````bash 
-  systemctl enable guacd 
-  systemctl start guacd 
-  ```` 
- 
-- GUACAMOLE_HOME anlegen und setzen 
- 
-  ````bash 
-  # GUACAMOLE_HOME dir anlegen 
-  mkdir /etc/guacamole 
-  echo 'GUACAMOLE_HOME="/etc/guacamole"' >> /etc/environment 
-  ```` 
- 
-### Guacamole-Client installieren und starten 
-  ````bash 
-  cp /usr/src/guacamole-1.3.0.war /var/lib/tomcat9/webapps/guacamole.war 
- 
-  # Verlinke die Konfigurationsdateien  
-  ln -s /etc/guacamole /usr/share/tomcat9/.guacamole 
- 
-  # Service neustarten 
-  systemctl restart tomcat9.service 
-  systemctl restart guacd.service 
-  ```` 
- 
- 
-### LDAP-Plugin installieren 
- 
-Authentifizieren via LDAP ermöglichen. 
- 
-````bash 
-cd /usr/src/ 
-tar xvzf guacamole-auth-ldap-1.3.0.tar.gz 
- 
-# extensions Verzeichnis anlegen 
-mkdir /etc/guacamole/extensions 
-cp /usr/src/guacamole-auth-ldap-1.3.0/guacamole-auth-ldap-1.3.0.jar /etc/guacamole/extensions/ 
-```` 
- 
-#### Update guacamole.properties für LDAP 
- 
-Die Konfigurationsdatei guacamole.properties unter ``/etc/guacamole/`` muss entsprechend für LDAP erweitert werden.  
-**Hinweis:** Kein Whitespace vor Lineendings!  
- 
-````bash 
-vi /etc/guacamole/guacamole.properties 
-```` 
- 
-````properties 
-# LDAP Einstellungen für Active Directory 
-# IP-Adresse oder DNS-Name eines Domänencontrollers 
-ldap-hostname: 
-# Port Nummer von LDAP 
-ldap-port: 
-# Verschlüsslungsmethode für LDAP-Verbindung 
-ldap-encryption-method: 
-# DN des Benutzer der für die Abfrage genutzt werden 
-ldap-user-base-dn: 
-# Set searchbase to search for users in subtree 
-ldap-search-bind-dn: 
-# rename attribute name to cn (default: uid) 
-ldap-username-attribute: 
-```` 
- 
-[Guacamole LDAP - weitere Informationen](https://guacamole.apache.org/doc/gug/ldap-auth.html) 
- 
-#### LDAP Cert installieren 
- 
-Falls Ihr LDAP Server verschlüsselt kommuniziert, müssen Sie evtl. ein entsprechendes Zertifikat importieren. 
- 
-````bash 
-# Copy your CA to dir /usr/local/share/ca-certificates/ 
-cp CERT.crt /usr/local/share/ca-certificates/ 
- 
-# Update CA Store: 
-update-ca-certificates 
- 
-# Tomcat neustarten 
-systemctl restart tomcat9 
-```` 
- 
-### BWLP-Plugin installieren 
- 
-In diesem Schritt verknüpfen Sie Guacamole mit Ihrem Satellitenserver. Sie müssen dazu das aktuelle bwlp-guac-plugin herunterladen. 
- 
- 
-**Achten Sie darauf, dass immer nur ein bwlp-Plugin verwendet wird! Löschen Sie ältere Pluginversionen, da es ansonsten zu Fehlverhalten kommen kann.** 
- 
- 
-````bash 
-# Das aktuelle bwlp-plugin muss im Guacamole extensions Verzeichnis abgelegt werden 
-cd /etc/guacamole/extensions/ 
-rm -i bwlp-guac*.jar 
-wget https://files.bwlp.ks.uni-freiburg.de/satellit/guacamole/bwlp-guac-1.3.1-SNAPSHOT.jar 
- 
-# Um das Plugin mit dem bwLehrpool-Satellitenserver zu verbinden, folgende Zeile in '/etc/guacamole/guacamole.properties' einfügen: 
-slx-client-list-url: https://<SAT-IP>/slx-admin/api.php?do=remoteaccess 
-```` 
- 
-Bitte fahren Sie zum Abschluß der Installation mit dem Punkt [„Apache Reverse Proxy einrichten“](#apache_reverse_proxy_einrichten) fort. 
- 
-++++ 
- 
- 
- 
- 
- 
- 
  
Drucken/exportieren