Guacamole (Docker Compose) mit Traefik 3.0

Dieser Beitrag beschreibt die Einrichtung von Guacamole in der bestehenden Docker Compose Umgebung mit lauffähigem Traefik 3.0, die nach Anleitung von goneuland (Traefik V3 Installation, Konfiguration und CrowdSec-Security) erstellt wurde.

Anlage Containerverzeichnis und Wechsel in selbes:

mkdir /opt/containers/guacamole
cd /opt/containers/guacamole

Anlage docker-compose.yml Datei

version: '3.9'

services:
  guacd:
    image: guacamole/guacd:latest
    container_name: guacd
    hostname: guacd
    restart: unless-stopped
    volumes:
      - ./guacd/drive:/drive:rw
      - ./guacd/record:/record:rw
    networks:
      - guacamole_net

  guacamole:
    image: guacamole/guacamole:latest
    container_name: guacamole
    hostname: guacamole
    restart: unless-stopped
    depends_on:
      - guacd
      - guacamole-db
    environment:
      GUACD_HOSTNAME: guacd # Hostname des guacd-Containers
      MYSQL_ENABLED: "true"
      MYSQL_HOSTNAME: guacamole-db # Hostname des Datenbank-Containers
      MYSQL_DATABASE: guacamole_db # DB Name
      MYSQL_USER: guacamole_user
      MYSQL_PASSWORD: guacamole_2025
      MYSQL_DRIVER: mysql
    links:
        - guacd
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.guacamole.rule=Host(`www.olpajoma.de`) && PathPrefix(`/guacamole`)"
      - "traefik.http.routers.guacamole.entrypoints=websecure"
      - "traefik.http.routers.guacamole.middlewares=default@file"
        #- "traefik.http.routers.guacamole.middlewares=guac-auth,guacprefix"
        #- "traefik.http.middlewares.guac-auth.basicauth.users=USERNAME:PASSWORD"
      - "traefik.http.routers.guacamole.tls=true"
      - "traefik.http.routers.guacamole.tls.certresolver=http_resolver"
      - "traefik.http.routers.guacamole.service=guacamole"
      - "traefik.http.services.guacamole.loadbalancer.server.port=8080"
      - "traefik.docker.network=proxy"
    networks:
      - guacamole_net    # Guacamole internes Netzwerk
      - proxy # Hausnetz Traefik



  guacamole-db:
    image: mariadb:10.9.5
    container_name: guacamole-db
    hostname: guacamole-db
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: guacamole_db
      MYSQL_USER: guacamole_user
      MYSQL_PASSWORD: guacamole_2025
      MYSQL_ROOT_PASSWORD: 'Vault2022'
    networks:
      - guacamole_net
    volumes:
        ./database:/var/lib/mysql  # DB Dateien persistierend

networks:
    proxy:
      external: true
    guacamole_net:
      external: false
      #name: guacamole_net


Datenbank initialisieren

Datenbank und Guacamolecontainer starten

docker compose up -d guacamole database

DB-Initialisierungsdatei erstellen

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql

Kopieren des erstellten Skripts in den DB-Container und ausführen

docker cp initdb.sql guacamole-db:/initdb.sql
docker exec -it guacamolde-db bash cat /initdb.sql | mysql -u root -p guacamole_db

Alternativ kann die Initialisierung auch automatisch erfolgen. Dazu muss das init-File im Container als Volume zur Verfügung gestellt werden. Das Verzeichnis benötigt chmod +x

Der Abschnitt „database“ wird dazu um das Volume erweitert:

  database:
    image: mariadb:10.9.5
    container_name: guacamole-db
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: guacamole_db
      MYSQL_USER: guacamole_user
      MYSQL_PASSWORD: guacamole_2025
      MYSQL_ROOT_PASSWORD: 'Vault2022'
    networks:
      - guacamole_net
    volumes:
      - datenbank:/var/lib/mysql # Datenbank-Daten persistieren
      - /opt/containers/guacamole/init:/docker-entrypoint-initdb.d

Nach Datenbankinitialisierung alle Container starten

docker compose up -d

Kontrolle der Logfiles

docker logs guacamole-db
docker logs guacamole
docker logs guacd

Anmelden als Standardbenutzer (guacadmin/guacadmin)

Ändern des Benutzers, Anlage von Benutzern und Verbindungen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Olpajoma Techblog
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.