Zum Inhalt springen

Apache/Guacamole/Docker

Aus Foxwiki
(Weitergeleitet von Apache Guacamole/Docker)

Apache/Guacamole/Docker - Installation mit Docker Compose

Beschreibung

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"
   REMOTE_IP_VALVE_ENABLED: "true"
   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: https://<Domain_Name>/

Installation

Aufruf

Optionen

Unix GNU Parameter Beschreibung

Parameter

Umgebungsvariablen

Exit-Status

Wert Beschreibung
0 Erfolg
>0 Fehler

Anwendung

Problembehebung

Konfiguration

Dateien

Datei Beschreibung


Anhang

Siehe auch



Dokumentation

Projekt