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:44 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 
- 
-Um mittels [[allgemein:remotenutzung_von_bwlehrpool|Remotezugriff auf bwLehrpool-Clients]] zugreifen zu können, benötigen Sie einen \[\[https://guacamole.apache.org/|Apache Guacamole-Server\]\]. 
- 
-Guacamole ist eine Art VNC-Proxy, den Sie entweder lokal kompilieren und installieren 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. 
- 
-Da Inbetriebnahme und Updates von Guacamole mit Docker deutlich einfacher und schneller als eine lokale Installation 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'. Die Konfiguration wird über die Datei '.env' gesteuert. 
- 
-*Beachten Sie, 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 
-``` 
- 
-Editieren Sie dort mindestens 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 stehen weitere Konfigurationsoptionen zur Verfügung, 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 Docker-Image importieren. Editieren Sie dazu die Datei 'Dockerfile' und passen die auskommentierten Zeilen an. Legen Sie dann das notwendige Zertifikat z.B. unter './files' ab. 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 
- 
-``` 
- 
- 
-## Reverse Webproxy einrichten 
- 
-Sie sollten einen Reverse Webproxy verwenden, um einen verschlüsselten Zugriff auf die Weboberfläche zu ermöglichen. Wir verwenden im Beispiel den Webserver Apache. Aber auch nginx ist möglich. 
- 
-Zunächst müssen Sie einige Module aktivieren.  
- 
-``` 
-a2enmod rewrite 
-a2enmod proxy_http 
-a2enmod ssl 
-a2enmod proxy_wstunnel 
-``` 
- 
-Anschließend kopieren Sie folgenden Inhalt z.B. nach '/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://localhost:8080/guacamole/ flushpackets=on 
-        ProxyPassReverse / http://localhost:8080/guacamole/ 
-        ProxyPassReverseCookiePath /guacamole / 
-         
-        <Location /websocket-tunnel> 
-                Order allow,deny 
-                Allow from all 
-                ProxyPass ws://localhost:8080/guacamole/websocket-tunnel 
-                ProxyPassReverse ws://localhost: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