Zum Inhalt springen

Apache Guacamole: Unterschied zwischen den Versionen

Aus Foxwiki
DanielZorin (Diskussion | Beiträge)
DanielZorin (Diskussion | Beiträge)
Zeile 195: Zeile 195:
* Dieser Befehl generiert das SQL-Schema Guacamole, ohne das die Datenbank die erforderlichen Tabellen und Anfangsdatensätze nicht erstellen kann
* Dieser Befehl generiert das SQL-Schema Guacamole, ohne das die Datenbank die erforderlichen Tabellen und Anfangsdatensätze nicht erstellen kann


4. Start der Container
 
4. Um das Zertifikat zu erhalten, müssen Sie außerdem die Datei acme.json erstellen
 
<syntaxhighlight lang="bash" highlight="1" copy line>
touch acme.json && chmod 600 acme.json
</syntaxhighlight>
 
 
5. Start der Container
<syntaxhighlight lang="bash" highlight="1" copy line>
<syntaxhighlight lang="bash" highlight="1" copy line>
docker compose up -d
docker compose up -d

Version vom 24. November 2025, 17:25 Uhr

Apache Guacamole - Gateway für den Fernzugriff auf Computersysteme

Beschreibung

Apache Guacamole ist ein freies und quelloffenes Gateway für den Fernzugriff auf Computersysteme, welches von der Apache Software Foundation betreut wird

Plattformunabhängig ermöglicht es Benutzern, ohne einen dedizierten Client über Webbrowser auf entfernte Computer oder virtuelle Maschinen zuzugreifen

  • Administratoren können den Zugriff durch ein erweiterbares System für Authentifizierung und Autorisierung regeln, sodass Zielcomputer sicher hinter Guacamole isoliert werden können, ohne direkt im Internet erreichbar zu sein

Für den Fernzugriff nutzt Guacamole die Komponente guacd, die Protokolle wie RDP, VNC oder SSH für den Zugriff auf die jeweiligen Ressourcen verwendet

  • Da Guacamole keinen spezifischen Client benötigt, ist keine Agenteninstallation auf den Zielressourcen erforderlich
  • Durch die Integration des Clients in Webbrowser können Benutzer ohne zusätzliche Fernwartungssoftware auf ihre Computersysteme zugreifen

Komponenten

Guacamole setzt sich aus verschiedenen Komponenten zusammen

  • Die Webanwendung bildet die Schnittstelle, über die die Benutzer mit Guacamole interagieren können
  • Diese stellt die visuelle Oberfläche bereit, mit der entfernte Computersysteme über den Browser aufgerufen und gesteuert werden können
  • Im Hintergrund arbeitet der Dienst "guacd", welcher als Backend-Dienst fungiert
  • Dieser Dienst übersetzt und optimiert dynamisch native Protokolle in das spezifische Guacamole-Protokoll, um eine effiziente Kommunikation und Darstellung im Webbrowser zu ermöglichen

Webanwendung

Die Webanwendung dient als Benutzeroberfläche und ist für Authentifizierung sowie Autorisierung zuständig

  • Sie implementiert nicht direkt Fernzugriffsprotokolle
  • Stattdessen verlässt sie sich auf den Dienst "guacd", der diese Protokolle ins Guacamole-Protokoll übersetzt
  • Die Serverseite dieser Anwendung ist in Java programmiert und wird in einem Servlet-Container, wie Apache Tomcat oder Jetty, ausgeführt
  • Auf der Clientseite, die im Webbrowser abläuft, kommt JavaScript zum Einsatz

Dienst "guacd"

"guacd" ist ein Backend-Dienst, der Anfragen von der Webanwendung entgegennimmt und Verbindungen zu entfernten Computersystemen herstellt

  • Dabei lädt "guacd" dynamisch Unterstützung für verschiedene Fernzugriffsprotokolle, was bedeutet, dass weder "guacd" noch die Webanwendung die Einzelheiten der verschiedenen Fernzugriffsprotokolle kennen müssen
  • Sowohl "guacd" als auch die dazugehörigen Client-Plugins greifen auf die Bibliothek "libguac" zurück, die das Guacamole-Protokoll abstrahiert und die Kommunikation mit der Webanwendung erleichtert


Installation

Installation über Docker Compose

1. Vorbereitung des Arbeitskatalogs

mkdir /opt/guacamole-docker && cd /opt/guacamole-docker

2. Zunächst muss eine Datei namens docker-compose.yml mit folgendem Inhalt erstellt werden:

services:
  db:
    image: mariadb:latest
    container_name: guac-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "ROOT_SUPER_SECRET"
      MYSQL_DATABASE: "guacamole_db"
      MYSQL_USER: "guacamole_user"
      MYSQL_PASSWORD: "GUAC_DB_PASSWORD"
    volumes:
      - db-data:/var/lib/mysql
      - ./initdb.sql:/docker-entrypoint-initdb.d/initdb.sql:ro
    networks:
      - guac-net
  guacd:
    image: guacamole/guacd:latest
    container_name: guacd
    restart: unless-stopped
    networks:
      - guac-net
  guacamole:
    image: guacamole/guacamole:latest
    container_name: guacamole
    restart: unless-stopped
    depends_on:
      - guacd
      - db
    environment:
      GUACD_HOSTNAME: guacd
      GUACD_PORT: "4822"

      MYSQL_ENABLED: "true"
      MYSQL_HOSTNAME: db
      MYSQL_PORT: "3306"
      MYSQL_DATABASE: "guacamole_db"
      MYSQL_USERNAME: "guacamole_user"
      MYSQL_PASSWORD: "GUAC_DB_PASSWORD"

      WEBAPP_CONTEXT: "ROOT"
    networks:
      - guac-net
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.guac.rule=Host(`guacamole.example.com`)"
      - "traefik.http.routers.guac.entrypoints=websecure"
      - "traefik.http.routers.guac.tls.certresolver=letsencrypt"
      - "traefik.http.services.guac.loadbalancer.server.port=8080"

  traefik:
    image: traefik:latest
    container_name: traefik
    restart: unless-stopped
    command:
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"

      # HTTP > HTTPS
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entryPoint.scheme=https"

      # Let's Encrypt ACME HTTP challenge
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.letsencrypt.acme.email=admin@example.com"
      - "--certificatesresolvers.letsencrypt.acme.storage=/acme.json"

    ports:
      - "80:80"
      - "443:443"

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./acme.json:/acme.json

    networks:
      - guac-net

volumes:
  db-data:

networks:
  guac-net:
Variable Wert Beschreibung
MYSQL_ROOT_PASSWORD ROOT_SUPER_SECRET Root-Passwort des MariaDB-Servers
MYSQL_DATABASE guacamole_db Name der Guacamole-Datenbank, die vom MariaDB-Container erstellt und vom Guacamole-Server verwendet wird
MYSQL_USER guacamole_user Datenbankbenutzer für Guacamole (wird im MariaDB-Container angelegt und vom Guacamole-Server genutzt)
MYSQL_PASSWORD GUAC_DB_PASSWORD Passwort des Guacamole-Datenbankbenutzers
GUACD_HOSTNAME guacd Hostname bzw. Docker-Servicename des guacd-Dienstes
GUACD_PORT 4822 TCP-Port, auf dem guacd Verbindungen annimmt
MYSQL_ENABLED true Aktiviert die MySQL-/MariaDB-Authentifizierung im Guacamole-Server
MYSQL_HOSTNAME db Hostname bzw. Docker-Servicename des MariaDB-Servers
MYSQL_PORT 3306 TCP-Port des MariaDB-Servers
MYSQL_USERNAME guacamole_user Datenbankbenutzername, den der Guacamole-Server für Verbindungen verwendet
MYSQL_PASSWORD GUAC_DB_PASSWORD Passwort des von Guacamole verwendeten Datenbankbenutzers
WEBAPP_CONTEXT ROOT Kontextpfad der Guacamole-Webanwendung; ROOT platziert die Anwendung direkt unter / anstatt unter /guacamole

3. Jetzt muss die Struktur der Guacamole-Datenbank vorbereitet werden.

docker run --rm guacamole/guacamole:latest /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
  • Dieser Befehl generiert das SQL-Schema Guacamole, ohne das die Datenbank die erforderlichen Tabellen und Anfangsdatensätze nicht erstellen kann


4. Um das Zertifikat zu erhalten, müssen Sie außerdem die Datei acme.json erstellen

touch acme.json && chmod 600 acme.json


5. Start der Container

docker compose up -d
  • Die Weboberfläche ist unter folgender Adresse erreichbar: http://<IP_or_Domain_Name>:8080/


Anhang

Siehe auch

Links

Weblinks

  1. https://de.wikipedia.org/wiki/Apache_Guacamole
  2. https://guacamole.apache.org
  3. https://www.howtoforge.de/anleitung/so-installierst-du-apache-guacamole-unter-debian-11/
  4. https://computingforgeeks.com/install-and-use-guacamole-remote-desktop-on-debian/
  5. https://guacamole.apache.org/doc/1.4.0/gug/guacamole-docker.html