Zum Inhalt springen

Apache/Guacamole/Docker: Unterschied zwischen den Versionen

Aus Foxwiki
K Dirkwagner verschob die Seite Apache Guacamole/Docker nach Apache/Guacamole/Docker
Keine Bearbeitungszusammenfassung
 
Zeile 179: Zeile 179:


* Die Weboberfläche ist unter folgender Adresse erreichbar: ''http://<IP_or_Domain_Name>:8080/''
* Die Weboberfläche ist unter folgender Adresse erreichbar: ''http://<IP_or_Domain_Name>:8080/''
[[Kategorie:Apache Guacamole]]
 
[[Kategorie:Apache/Guacamole]]

Aktuelle Version vom 25. November 2025, 08:58 Uhr

Docker

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:

ENV

In docker-compose.yml festgelegte Umgebungsvariablen:

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/