Apache/Guacamole/Docker: Unterschied zwischen den Versionen
Erscheinungsbild
Die Seite wurde neu angelegt: „=== Docker === ; 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…“ |
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]] | |||
Version vom 24. November 2025, 20:07 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/