Installa Guacamole su Docker con Traefik e 2FA
Nota
Finalmente ho trovato come far funzionare il Wake on LAN da Guacamole in docker, guarda questa guida.
Nota
Se vuoi installare Guacamole con il database Postgres guarda questa guida.
Accedere da remoto a un terminal SSH o a una sessione grafica con VNC/RDP può essere molto utile. In particolare se i device sono molti e se si cambia regolarmente la postazione di lavoro. Guacamole è una delle soluzioni open source sul mercato. Purtroppo non c’è un singolo container docker da installare e non è facile trovare una guida completa per l’installazione dall’inizio alla fine.
Qui sotto ho creato una piccola guida per l’installazione di Guacamole con un database mysql per la gestione degli utente e l’integrazione con Traefik per avere un collegamento https.
Requisiti
- Installazione funzionante di Traefik e relativi certificati per https (vedi esempio di base)
- Accesso con SSH alla macchina dove è installato
docker
Procedura per l’installazione
Database mysql
- Generare il file di inizializzazione per il database mysql (potrebbe servire sudo)
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
Il file generato deve essere passato (collegato come volume) al database per importare la struttura necessaria per Guacamole
Lanciare e creare il container del database (potrebbe servire sudo)
docker-compose up -d guacamole-db
Guacamole
- Creare i due container di Guacamole lanciando il seguente comando (potrebbe servire sudo). Viste le dipendenze dei vari container, verranno creati entrambi.
docker-compose up -d guacamole
Guacamole è funzionante e puoi collegarti all’interfaccia all’indirizzo: https://guacamole.example.com I dati per il primo login sono:
- user: guacadmin
- password: guacadmin
Ti consiglio di duplicare l’account di default e crearne uno nuovo di amministratore. Poi eseguire il login con il nuovo account e cancellare quello di default.
2FA per Guacamole
Dalla versione 1.3.0 TOTP è integrato nel container docker (PR 471), purtroppo la documentazione non è ancora stata aggiornata.
Quando l’installazione di Guacamole è funzionante è consigliato attivare l’autentificazione a 2 fattori (2FA).
Aggiungere il parametro
TOTP_ENABLED: 'true'
al containerguacamole
. Al primo login verrà presentato il QR per attivare il 2FA e verrà richiesto d’immettere un codice per confermare.
Docker compose
guacd:
image: guacamole/guacd
container_name: guacd
hostname: guacd
restart: unless-stopped
volumes:
- /volume1/docker/guacamole/guacd/drive:/drive:rw
- /volume1/docker/guacamole/guacd/record:/record:rw
guacamole:
image: guacamole/guacamole
container_name: guacamole
hostname: guacamole
restart: unless-stopped
depends_on:
- guacd
- guacamole-db
environment:
GUACD_HOSTNAME: guacd
MYSQL_HOSTNAME: guacamole-db
MYSQL_DATABASE: guacamole_db
MYSQL_USER: guacamole_user
MYSQL_PASSWORD: ${GUACAMOLE_PASSWORD}
#TOTP_ENABLED: 'true'
links:
- guacd
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.guacamole.rule=Host(`guacamole.${DOMAIN}`)'
- 'traefik.http.routers.guacamole.entrypoints=web-secure'
- 'traefik.http.routers.guacamole.tls=true'
- "traefik.http.routers.guacamole.tls.certresolver=certificato"
- "traefik.http.routers.guacamole.tls.domains[0].main=*.${DOMAIN}"
#- "traefik.http.routers.guacamole.tls.options=myTLSOptions@file"
- "traefik.http.routers.guacamole.service=guacamoleService"
- "traefik.http.routers.guacamole.middlewares=guacamoleMdl"
- "traefik.http.middlewares.guacamoleMdl.addprefix.prefix=/guacamole"
- "traefik.http.services.guacamoleService.loadBalancer.server.port=8080"
guacamole-db:
image: mysql/mysql-server
container_name: guacamole-db
hostname: guacamole-db
environment:
MYSQL_USER: guacamole_user
MYSQL_PASSWORD: ${GUACAMOLE_PASSWORD}
MYSQL_DATABASE: guacamole_db
restart: unless-stopped
volumes:
- ./initdb.sql:/initdb.sql #DB configuration file
- /volume1/docker/guacamole/database:/var/lib/mysql/:rw
Crediti Foto di Steve Buissinne da Pixabay