OpenID + Apache Guacamole

🐳 Installer Apache Guacamole avec Authentik (OIDC) via Docker

⚙️ Prérequis

  • Docker et Docker Compose installés :

    sudo apt update
    sudo apt install docker.io docker-compose -y
    sudo systemctl enable --now docker

1. Installation d’Authentik avec Docker

👉 Guide officiel : Authentik Docker Installation


2. Création du Provider OIDC dans Authentik

  1. Se connecter à l’interface admin : https://authentik.ton-domaine.tld/if/admin/ 💡 Remarque : Cette URL ne fonctionne que si un DNS est configuré. Sinon, utilisez http://<IP>:9000.

  2. Aller dans Providers > + Create Type : OAuth2/OpenID Provider

  3. Configurer :

    • Nom : Guacamole OIDC Provider

    • Authorization flow : explicit consent

    • Redirect URIs :

      http://<IP>:8080/guacamole/
      OU
      https://guacamole.ton-domaine.tld/guacamole/   ⚠️ Seulement si DNS configuré
  4. Enregistrer et copier :

    • Client ID

    • Client Secret


3. Création de l’Application dans Authentik

  1. Allez dans Applications > + Create

  2. Remplir :

    • Nom : Guacamole

    • Slug : guacamole

    • Provider : celui créé juste avant

  3. Enregistrer.


4. Récupération des Endpoints Authentik

À partir du provider OIDC, notez :

Endpoint
Exemple (avec DNS)
Exemple (sans DNS)

Authorization Endpoint

https://authentik.ton-domaine.tld/application/o/guacamole/authorize/

http://<IP>/application/o/guacamole/authorize/

JWKS Endpoint

https://authentik.ton-domaine.tld/application/o/guacamole/jwks/

http://<IP>application/o/guacamole/jwks/

Issuer

https://authentik.ton-domaine.tld/application/o/guacamole/

http://<IP>/application/o/guacamole/

Redirect URI (vers Guacamole)

https://guacamole.ton-domaine.tld/guacamole/

http://<IP>:8080/guacamole/


5. Déploiement de Guacamole avec Docker

a. Télécharger le docker-compose.yml

👉 Lien GitHub docker-compose Guacamole

b. Créer le fichier .env

Dans le même dossier que docker-compose.yml, créer un fichier .env :

👉 Lien Github Fichier .env

Utiliser le bon endpoint en fonction de si DNS est configuré ou non

Remplacer <IP> et les secrets par vos vraies valeurs.


▶️ Lancer les conteneurs

docker-compose up -d

✅ Accéder à Guacamole

  • Sans DNS (défaut) : http://<IP>:8080/guacamole/

  • Avec DNS (et certificat HTTPS) : https://guacamole.ton-domaine.tld/guacamole/


🔁 Bonus : Utilisation d’un Reverse Proxy (ex: NGINX)

Pour rendre l’accès à Guacamole plus propre et sécurisé, on peut le placer derrière un reverse proxy comme NGINX.

Exemple de configuration NGINX

server {
    listen 80;
    server_name guacamole.ton-domaine.tld;

    location / {
        rewrite ^/$ /guacamole/ permanent;
        return 301 /guacamole;
    }

    location /guacamole/ {
        proxy_pass http://192.168.99.98:8080/guacamole/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
    }
}

✅ Avantages

  • URL propre : https://guacamole.ton-domaine.tld/

  • Connexion sécurisée (HTTPS avec certbot ou autre)

  • Possibilité de gérer l'accès en frontal via firewall, fail2ban, etc.

  • Permet de cacher l’IP/port interne de Guacamole


⚠️ Important : Impacts sur Authentik

Exemple : config parallèle pour Authentik

server {
    listen 443 ssl;
    server_name authentik.ton-domaine.tld;

    location / {
        proxy_pass http://192.168.99.99/; # IP d’Authentik
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # Certificats TLS
    ssl_certificate /etc/letsencrypt/live/authentik.ton-domaine.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/authentik.ton-domaine.tld/privkey.pem;
}

🧠 Résumé des recommandations

Élément
Avec DNS / RP
Sans DNS / RP

Guacamole accessible via

https://guacamole.tld/guacamole/

http://<IP>:8080/guacamole/

Authentik doit connaître

Certificat TLS du reverse proxy

Pas de validation TLS

Certificat

Let’s Encrypt ou équivalent

Non requis

Authentik via RP

Recommandé

Optionnel


Last updated

Was this helpful?