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
Se connecter à l’interface admin :
https://authentik.ton-domaine.tld/if/admin/
💡 Remarque : Cette URL ne fonctionne que si un DNS est configuré. Sinon, utilisezhttp://<IP>:9000
.Aller dans Providers > + Create Type : OAuth2/OpenID Provider
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é
Enregistrer et copier :
Client ID
Client Secret
3. Création de l’Application dans Authentik
Allez dans Applications > + Create
Remplir :
Nom :
Guacamole
Slug :
guacamole
Provider : celui créé juste avant
Enregistrer.
4. Récupération des Endpoints Authentik
À partir du provider OIDC, notez :
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
docker-compose.yml
👉 Lien GitHub docker-compose Guacamole
b. Créer le fichier .env
.env
Dans le même dossier que docker-compose.yml
, créer un fichier .env
:
Utiliser le bon endpoint en fonction de si DNS est configuré ou non
OPENID_AUTHORIZATION_ENDPOINT="http://<authentijk_ip>/application/o/guacamole/authorize/" OPENID_JWKS_ENDPOINT="http://<authentijk_ip>/application/o/guacamole/jwks/" OPENID_ISSUER="http://<authentijk_ip>/application/o/guacamole/" OPENID_CLIENT_ID="<CLIENT_ID>" OPENID_CLIENT_SECRET="<CLIENT_SECRET>"
Pour l'accès à Guacamole, via IP:8080
OPENID_REDIRECT_URI="http://:8080/guacamole/" OPENID_USERNAME_CLAIM_TYPE=preferred_username
✅ 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
Quand Guacamole est derrière un reverse proxy avec HTTPS, Authentik doit faire confiance au certificat TLS présenté à l’URL de redirection (redirect_uri
).
1. Authentik valide le domaine guacamole.ton-domaine.tld
Le certificat du reverse proxy (Let’s Encrypt ou autre) doit être valide et signé par une autorité de confiance.
Pas de certificat autosigné côté RP si Authentik est strict (par défaut, il vérifie les chaînes).
2. (Optionnel) Authentik derrière le reverse proxy
Tu peux aussi exposer Authentik derrière le même reverse proxy. Cela permet :
De forcer HTTPS côté Authentik
D’homogénéiser la configuration réseau
De simplifier l’ouverture des ports (souvent juste 80/443)
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
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?