Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
allgemein:guacamole_installation_deprecated [2023/07/17 16:26 CEST] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | allgemein:guacamole_installation_deprecated [2023/07/17 16:26 CEST] (aktuell) – ↷ Seitename wurde von allgemein:guacamole_installation auf allgemein:guacamole_installation_deprecated geändert sritter | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | <WRAP justify 1200px> | ||
+ | |||
+ | # Aufsetzen eines Apache Guacamole Proxy | ||
+ | |||
+ | Um remote auf bwLehrpool-Clients zugreifen zu können ([Remotenutzung von bwLehrpool](https:// | ||
+ | |||
+ | 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 | ||
+ | ````bash | ||
+ | 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, | ||
+ | |||
+ | - Guacamole 1.3.0 herunterladen | ||
+ | ````bash | ||
+ | mkdir /usr/src && cd /usr/src | ||
+ | wget https:// | ||
+ | wget https:// | ||
+ | wget https:// | ||
+ | ```` | ||
+ | |||
+ | - Sources entpacken | ||
+ | ```` | ||
+ | tar xzf guacamole-server-1.3.0.tar.gz | ||
+ | ```` | ||
+ | |||
+ | - Configure aufrufen | ||
+ | ```` | ||
+ | cd / | ||
+ | ./configure --with-systemd-dir=/ | ||
+ | ```` | ||
+ | |||
+ | - Die Ausgabe sollte bei korrekter Installation der Abhängigkeiten in etwa so aussehen: | ||
+ | ````bash | ||
+ | # | ||
+ | guacamole-server version 1.3.0 | ||
+ | # | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | pango ............... yes | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Kubernetes .... yes | ||
+ | RDP ........... yes | ||
+ | SSH ........... yes | ||
+ | Telnet ........ no | ||
+ | VNC ........... yes | ||
+ | | ||
+ | | ||
+ | | ||
+ | guacd ...... yes | ||
+ | guacenc .... yes | ||
+ | guaclog .... yes | ||
+ | | ||
+ | | ||
+ | Init scripts: no | ||
+ | | ||
+ | | ||
+ | Type " | ||
+ | | ||
+ | ```` | ||
+ | | ||
+ | - 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 / | ||
+ | echo ' | ||
+ | ```` | ||
+ | |||
+ | ### Guacamole-Client installieren und starten | ||
+ | ````bash | ||
+ | cp / | ||
+ | |||
+ | # Verlinke die Konfigurationsdateien | ||
+ | ln -s / | ||
+ | |||
+ | # 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 / | ||
+ | cp / | ||
+ | ```` | ||
+ | |||
+ | #### Update guacamole.properties für LDAP | ||
+ | |||
+ | Die Konfigurationsdatei guacamole.properties unter ``/ | ||
+ | **Hinweis: | ||
+ | |||
+ | ````bash | ||
+ | vi / | ||
+ | ```` | ||
+ | |||
+ | ````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:// | ||
+ | |||
+ | #### LDAP Cert installieren | ||
+ | |||
+ | Falls Ihr LDAP Server verschlüsselt kommuniziert, | ||
+ | |||
+ | ````bash | ||
+ | # Copy your CA to dir / | ||
+ | cp CERT.crt / | ||
+ | |||
+ | # 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. | ||
+ | |||
+ | <span style=" | ||
+ | **Achten Sie darauf, dass immer nur ein bwlp-Plugin verwendet wird! Löschen Sie ältere Pluginversionen, | ||
+ | </ | ||
+ | |||
+ | ````bash | ||
+ | # Das aktuelle bwlp-plugin muss im Guacamole extensions Verzeichnis abgelegt werden | ||
+ | cd / | ||
+ | rm -i bwlp-guac*.jar | ||
+ | wget https:// | ||
+ | |||
+ | # Um das Plugin mit dem bwLehrpool-Satellitenserver zu verbinden, folgende Zeile in '/ | ||
+ | slx-client-list-url: | ||
+ | ```` | ||
+ | |||
+ | Bitte fahren Sie zum Abschluß der Installation mit dem Punkt [„Apache Reverse Proxy einrichten“](# | ||
+ | |||
+ | |||
+ | ## Alternative: | ||
+ | |||
+ | Guacamole-Server und -Client sind auch als [Container Images](https:// | ||
+ | |||
+ | |||
+ | ### Setup bwLehrpool-Remote | ||
+ | |||
+ | Nachdem der Docker-Host vorbereitet ist, kann das Setup für die Anwendungs-Container durchgeführt werden. | ||
+ | |||
+ | |||
+ | 1. Starten des Guacamole-Server (guacd). | ||
+ | | ||
+ | | ||
+ | --restart unless-stopped \ | ||
+ | guacamole/ | ||
+ | ```` | ||
+ | |||
+ | 2. Entsprechend der folgenden Struktur die Verzeichnisse für das GUACAMOLE_HOME anlegen. In `guacamole.properties` die Zeile `slx-client-list-url: | ||
+ | ```` | ||
+ | | ||
+ | |-- guacamole.properties | ||
+ | |-- extensions/ | ||
+ | | ||
+ | | ||
+ | ```` | ||
+ | |||
+ | 3. Danach ist ein Container des Guacamole-Clients zu starten, hierbei muss für Betrieb und Authentifizierung eine Datenbank oder LDAP konfiguriert werden. Die LDAP-Konfiguration ist entsprechend der lokalen LDAP-Instanz individuell festzulegen. Um das bwLehrpool-Plugin in der Container-Lösung verfügbar zu machen, das erstellte Verzeichnis in den Container mounten und als GUACAMOLE_HOME deklarieren. | ||
+ | | ||
+ | | ||
+ | --link guacd:guacd \ | ||
+ | -e LDAP_HOSTNAME=< | ||
+ | -e LDAP_PORT=< | ||
+ | -e LDAP_ENCRYPTION_METHOD= [" | ||
+ | -e LDAP_USER_BASE_DN=< | ||
+ | -e LDAP_SEARCH_BIND_DN=< | ||
+ | -e LDAP_USERNAME_ATTRIBUTE= < | ||
+ | -d \ | ||
+ | --restart unless-stopped \ | ||
+ | -p 8080:8080 \ | ||
+ | -v / | ||
+ | -e GUACAMOLE_HOME=/ | ||
+ | guacamole/ | ||
+ | ```` | ||
+ | |||
+ | 4. Falls ein Zertifikat für den LDAP-Server erforderlich ist, muss dieses noch innerhalb des Containers gesetzt werden. | ||
+ | | ||
+ | | ||
+ | | ||
+ | ```` | ||
+ | |||
+ | |||
+ | ## Docker-Compose | ||
+ | |||
+ | Weiterhin ist es auch möglich, sämtliche Services die für den Remotezugang erforderlich sind, als Docker-Compose zu starten bzw. zu verwalten. Die erfoderliche Struktur und nötigen Konfigurationen sind in dem Archive | ||
+ | |||
+ | ### Voraussetzung | ||
+ | |||
+ | - [Docker](https:// | ||
+ | - [Docket-Compose](https:// | ||
+ | |||
+ | ### Vorbereitung | ||
+ | |||
+ | Laden Sie das Archive [bwlp-remote.tgz](https:// | ||
+ | |||
+ | #### Apache | ||
+ | |||
+ | Für Übetragung zwischen Anwender und Guacamole-Client wird ein Apache Webserver eingesetzt. Damit die Übertragung gesicht ist müssen Sie das Serverzertifikat und Schlüssel bereitstellen, | ||
+ | |||
+ | - `BWLP_REMOTE_HOSTNAME`: | ||
+ | - `BWLP_REMOTE_SERVERADMIN`: | ||
+ | - `BWLP_REMOTE_SSL_CERT`: | ||
+ | - `BWLP_REMOTE_SSL_KEY`: | ||
+ | |||
+ | **LetsEncrypt** | ||
+ | |||
+ | Sollten für die Bereitstellung von Serverzertifikaten auf [[https:// | ||
+ | |||
+ | ```shell | ||
+ | BWLP_REMOTE_SSL_DIR_HOST="/ | ||
+ | BWLP_REMOTE_SSL_DIR_CONTAINER="/ | ||
+ | |||
+ | BWLP_REMOTE_SSL_DIR=${BWLP_REMOTE_SSL_DIR_CONTAINER}/ | ||
+ | BWLP_REMOTE_SSL_CERT=fullchain.pem | ||
+ | BWLP_REMOTE_SSL_KEY=privkey.pem | ||
+ | ``` | ||
+ | |||
+ | |||
+ | #### Guacamole | ||
+ | |||
+ | Als nächstes werden Einstellungen betreffs des Guacamole Clients vorgenommen. | ||
+ | |||
+ | - `BWLP_LOCAL_BRANDING`: | ||
+ | - `BWLP_SAT_HOST`: | ||
+ | - `BWLP_GUAC_LDAP_CERT`: | ||
+ | |||
+ | |||
+ | ##### LDAP | ||
+ | |||
+ | Für eine Authentisierung mittels LDAP sind als letztes noch die entsprechenden Umgebungsvariablen zu setzten. Wie bereits in der Anleitung zu Docker beschrieben, | ||
+ | |||
+ | ### Service Verwaltung | ||
+ | |||
+ | Sind alle Arbeiten an der Konfigurationsdateie abgeschlossen, | ||
+ | |||
+ | *Hinweis* Alle Aufrufe finden dabei im Ordner `bwlp-remote` statt. | ||
+ | |||
+ | - Starten der Services | ||
+ | ```shell | ||
+ | docker-compose up -d --build | ||
+ | ``` | ||
+ | - Stoppen der Services bzw Löschen aller Container und Artefakte. | ||
+ | ```shell | ||
+ | docker-compose down | ||
+ | ``` | ||
+ | - Anzeigen der Logs | ||
+ | ```shell | ||
+ | docker-compose logs --follow | ||
+ | | ||
+ | |||
+ | ## Apache Reverse Proxy einrichten | ||
+ | |||
+ | Reverse Proxy-Konfiguration für Apache anlegen und entsprechende Module aktivieren. | ||
+ | |||
+ | ````bash | ||
+ | # Apache Module aktivieren | ||
+ | a2enmod rewrite | ||
+ | a2enmod proxy_http | ||
+ | a2enmod ssl | ||
+ | a2enmod proxy_wstunnel | ||
+ | ```` | ||
+ | |||
+ | Nachfolgender Inhalt in .conf datei einfügen | ||
+ | |||
+ | ````bash | ||
+ | vi / | ||
+ | ```` | ||
+ | |||
+ | **IP (10.9.8.7)** und **FQDN (bwlehrpool-remote.hs-xyz.de)** sind Platzhalter und müssen entsprechend angepasst werden: | ||
+ | |||
+ | ````bash | ||
+ | < | ||
+ | ServerName bwlehrpool-remote.hs-xyz.de | ||
+ | ServerAdmin webmaster@test.de | ||
+ | |||
+ | RewriteEngine On | ||
+ | RewriteCond %{HTTPS} !=on | ||
+ | RewriteRule ^/?(.*) https:// | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | ServerName bwlehrpool-remote.hs-xyz.de | ||
+ | ServerAdmin webmaster@test.de | ||
+ | |||
+ | SSLEngine on | ||
+ | SSLProtocol All -SSLv2 -SSLv3 | ||
+ | SSLCertificateFile / | ||
+ | SSLCertificateKeyFile / | ||
+ | | ||
+ | RewriteEngine | ||
+ | RewriteRule | ||
+ | |||
+ | ProxyPass / http:// | ||
+ | ProxyPassReverse / http:// | ||
+ | ProxyPassReverseCookiePath /guacamole / | ||
+ | | ||
+ | < | ||
+ | Order allow,deny | ||
+ | Allow from all | ||
+ | ProxyPass ws:// | ||
+ | ProxyPassReverse ws:// | ||
+ | </ | ||
+ | SetEnvIf Request_URI " | ||
+ | CustomLog | ||
+ | </ | ||
+ | ```` | ||
+ | |||
+ | ````bash | ||
+ | |||
+ | # Selbst signiertes Zertifikat erstellen (besser Let's Encrypt oder korrektes Hochschulzertifikat verwenden) | ||
+ | openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout / | ||
+ | |||
+ | # Seite aktivieren: | ||
+ | a2ensite bwlehrpool-remote.hs-xyz.de.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 die *guacamole.properties* auf den Wert der *slx-client-list-url*. Diese muss dem Schema https://< | ||
+ | entsprechen. Achten Sie auch auf HTTP bzw. HTTPS. Im Webinterface des Satellitenservers, | ||
+ | |||
+ | Sie können zur Kontrolle die Metadaten des Satelliten direkt auf dem Guacamole-Server manuell abrufen. Führen Sie auf dem Guacamole-Proxy folgen Befehl aus: | ||
+ | curl -k -L -v http://< | ||
+ | |||
+ | Dabei sollte eine json-Struktur herauskommen, | ||
+ | enthält. Wenn dies fehlschlägt sollte allerdings auch im Log | ||
+ | (/ | ||
+ | |||
+ | |||
+ | ### Guacamole-Logs auswerten | ||
+ | |||
+ | - Für Server | ||
+ | ```` | ||
+ | journalctl -u guacd | ||
+ | ```` | ||
+ | - Für Client-Plugin | ||
+ | ```` | ||
+ | tail -n 200 -f / | ||
+ | ```` | ||
+ | |||
+ | </ | ||