Salta al contenuto principale
Installa Guacamole su Docker con Traefik e 2FA
  1. Articles/

Installa Guacamole su Docker con Traefik e 2FA

·3 minuti
Article Guide Traefik Docker Guacamole 2fa
Indice dei contenuti
Finalmente ho trovato come far funzionare il Wake on LAN da Guacamole in docker, guarda questa guida.
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
#

  1. 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
  1. Il file generato deve essere passato (collegato come volume) al database per importare la struttura necessaria per Guacamole

  2. Lanciare e creare il container del database (potrebbe servire sudo)

docker-compose up -d guacamole-db

Guacamole
#

  1. 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
  1. Guacamole è funzionante e puoi collegarti all’interfaccia all’indirizzo: https://guacamole.example.com I dati per il primo login sono:

    • user: guacadmin
    • password: guacadmin
  2. 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.

  1. Quando l’installazione di Guacamole è funzionante è consigliato attivare l’autentificazione a 2 fattori (2FA).

  2. Aggiungere il parametro TOTP_ENABLED: 'true' al container guacamole. 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

Related

Borg Backup in Home Assistant
·4 minuti
Article Docker Backup Borg Home Assistant
Borg Backup server in Docker
·3 minuti
Article Docker Backup Borg
Esempio mutual TLS con Traefik
·6 minuti
Article Diy Traefik Guida MTLS