Zum Inhalt springen

Apache Guacamole: Unterschied zwischen den Versionen

Aus Foxwiki
DanielZorin (Diskussion | Beiträge)
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 12: Zeile 12:


== Komponenten ==
== Komponenten ==
Guacamole setzt sich aus verschiedenen Komponenten zusammen
* Die [[Webanwendung]] bildet die Schnittstelle, über die die Benutzer mit Guacamole interagieren können
* 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
* Diese stellt die visuelle Oberfläche bereit, mit der entfernte Computersysteme über den Browser aufgerufen und gesteuert werden können
Zeile 18: Zeile 17:
* Dieser Dienst übersetzt und optimiert dynamisch native Protokolle in das spezifische Guacamole-Protokoll, um eine effiziente Kommunikation und Darstellung im Webbrowser zu ermöglichen
* 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 ===
=== Frontend ===
; Webanwendung
Die Webanwendung dient als Benutzeroberfläche und ist für Authentifizierung sowie Autorisierung zuständig
Die Webanwendung dient als Benutzeroberfläche und ist für Authentifizierung sowie Autorisierung zuständig
* Sie implementiert nicht direkt Fernzugriffsprotokolle
* Sie implementiert nicht direkt Fernzugriffsprotokolle
Zeile 25: Zeile 25:
* Auf der Clientseite, die im Webbrowser abläuft, kommt [[JavaScript]] zum Einsatz
* Auf der Clientseite, die im Webbrowser abläuft, kommt [[JavaScript]] zum Einsatz


=== Dienst "guacd" ===
=== Backend ===
"guacd" ist ein Backend-Dienst, der Anfragen von der Webanwendung entgegennimmt und Verbindungen zu entfernten Computersystemen herstellt
; guacd
* 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
* Anfragen von Webanwendungen annehmen und Verbindungen zu entfernten Computersystemen herstellen
* 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


; Fernzugriffsprotokolle
lädt 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
 
<syntaxhighlight lang="bash" highlight="1" copy line>
mkdir /opt/guacamole-docker && cd /opt/guacamole-docker
</syntaxhighlight>
 
2. Zunächst muss eine Datei namens ''docker-compose.yml'' mit folgendem Inhalt erstellt werden:
 
<syntaxhighlight lang="yaml" highlight="" copy line>
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:
 
</syntaxhighlight>
 
==== ENV ====
 
In docker-compose.yml festgelegte Umgebungsvariablen:
 
{| class="wikitable options big"
! 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.
 
<syntaxhighlight lang="bash" highlight="1" copy line>
docker run --rm guacamole/guacamole:latest /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
</syntaxhighlight>
 
* 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
 
<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>
docker compose up -d
</syntaxhighlight>
 
* Die Weboberfläche ist unter folgender Adresse erreichbar: ''http://<IP_or_Domain_Name>:8080/''


<noinclude>
<noinclude>
Zeile 223: Zeile 44:
# https://de.wikipedia.org/wiki/Apache_Guacamole
# https://de.wikipedia.org/wiki/Apache_Guacamole
# https://guacamole.apache.org
# https://guacamole.apache.org
# https://www.howtoforge.de/anleitung/so-installierst-du-apache-guacamole-unter-debian-11/
# https://computingforgeeks.com/install-and-use-guacamole-remote-desktop-on-debian/
# https://guacamole.apache.org/doc/1.4.0/gug/guacamole-docker.html
# https://guacamole.apache.org/doc/1.4.0/gug/guacamole-docker.html


[[Kategorie:Remote Access]]
[[Kategorie:Apache Guacamole]]
[[Kategorie:Apache/Projekt]]


</noinclude>
</noinclude>

Aktuelle Version vom 24. November 2025, 20:14 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

  • 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

Frontend

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

Backend

guacd
  • Anfragen von Webanwendungen annehmen und Verbindungen zu entfernten Computersystemen herstellen
Fernzugriffsprotokolle

lädt 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


Anhang

Siehe auch

Links

Weblinks

  1. https://de.wikipedia.org/wiki/Apache_Guacamole
  2. https://guacamole.apache.org
  3. https://guacamole.apache.org/doc/1.4.0/gug/guacamole-docker.html