Accueil

Apache Guacamole : Bureau à distance via navigateur

Remote-access
Difficulte: Advanced
4 min de lecture

Tutoriel pour installer et configurer Apache Guacamole, une passerelle de bureau à distance sans client, pour accéder à vos machines via un navigateur web.

Retour aux tutoriels

L'essentiel

  • Guacamole traduit les protocoles RDP, VNC et SSH en HTML5 : aucun client à installer côté poste, et un seul service (HTTPS) exposé sur Internet au lieu d'une collection de ports 3389, 5900 et 22.
  • Le déploiement Docker Compose repose sur quatre conteneurs : guacd (le démon qui parle réellement les protocoles distants), postgres qui héberge guacamole_db, db-init qui exécute /opt/guacamole/bin/initdb.sh --postgresql, et guacamole, l'application web publiée sur le port 8080.
  • L'accès se fait sur http://<ip_du_serveur>:8080/guacamole/ : le suffixe /guacamole/ fait partie du contexte de l'application et n'est pas optionnel.
  • Deux mots de passe sont à changer impérativement : les trois occurrences de CHANGEME_A_STRONG_PASSWORD dans le docker-compose.yml avant le premier démarrage, et le compte par défaut guacadmin / guacadmin dès la première connexion (Préférences puis Utilisateurs).
  • Prévoyez au minimum 2 Go de RAM. En production, placez un reverse proxy (Nginx Proxy Manager, Traefik ou Caddy) devant l'instance pour le TLS. Deux fonctions différenciantes : le partage de session en lecture seule ou en contrôle total, et l'enregistrement vidéo des sessions via le volume ./data/guacd/record.
Qu'est-ce qu'Apache Guacamole ?
Apache Guacamole est une passerelle de bureau à distance sans client. Il vous permet d'accéder à vos ordinateurs (Linux, Windows, MacOS) depuis n'importe quel appareil disposant d'un simple navigateur web. Il traduit les protocoles standards comme VNC, RDP et SSH en un protocole HTML5 qui fonctionne dans votre navigateur.

Pourquoi utiliser Guacamole ?

  • Accès Universel : Pas de client lourd à installer. Un navigateur suffit.
  • Centralisation : Gérez tous vos accès (SSH, RDP, VNC) depuis une seule interface web.
  • Sécurité : Exposez un seul service (HTTPS) sur Internet au lieu de multiples ports RDP/VNC/SSH. Peut s'intégrer à des systèmes d'authentification existants (LDAP, SAML, OpenID).
  • Partage de session : Partagez une session en lecture seule ou en contrôle total, idéal pour le support ou la formation.
  • Enregistrement de session : Enregistrez les sessions RDP/VNC/SSH sous forme de vidéo pour l'audit ou la formation.

Prérequis

  • Un serveur Linux avec Docker et Docker Compose installés. (C'est la méthode d'installation la plus simple et la plus recommandée).
  • Accès root ou privilèges sudo.
  • Un minimum de 2 Go de RAM sur le serveur.

Contenu Premium

Ce tutoriel avancé est réservé aux membres premium.

9,90€ / mois
  • Tous les tutoriels avancés
  • Nouveaux contenus chaque semaine
  • Suivi de progression
  • Annulation à tout moment
MR

Écrit par

Morgann Riu

Expert en cybersécurité et administration Linux. Je partage mes connaissances à travers des tutoriels gratuits et des formations pour aider les administrateurs systèmes et développeurs à sécuriser leurs infrastructures.

Questions fréquentes

Pourquoi l'URL http://mon-serveur:8080 ne suffit-elle pas ?
L'application web est déployée sous le contexte /guacamole, pas à la racine du serveur d'application. L'adresse complète est donc http://<ip_du_serveur>:8080/guacamole/, barre oblique finale comprise. C'est l'erreur la plus fréquente juste après le premier docker-compose up -d. Si vous mettez un reverse proxy devant, veillez à conserver ce chemin ou à le réécrire correctement.
À quoi sert le conteneur guacd, et pourquoi est-il séparé de l'application web ?
guacd est le démon proxy qui établit réellement les connexions RDP, VNC et SSH vers les machines cibles et les convertit en flux exploitable par le navigateur. Le conteneur guacamole, lui, ne sert que l'interface web et l'authentification. Les deux communiquent grâce à la variable GUACD_HOSTNAME: guacd : si elle est mal renseignée, l'interface s'affiche normalement mais aucune connexion ne s'ouvre.
Pourquoi un conteneur db-init distinct, et pourquoi le premier démarrage est-il si lent ?
La base PostgreSQL doit contenir le schéma de Guacamole (tables des utilisateurs, connexions, permissions) avant que l'application web puisse démarrer. Le conteneur db-init exécute initdb.sh --postgresql pour créer ce schéma, puis s'arrête : c'est un travail ponctuel, pas un service permanent. Le premier docker-compose up -d prend donc quelques minutes, le temps du téléchargement des images et de cette initialisation.
Comment sécuriser une instance Guacamole exposée sur Internet ?
Trois actions minimales : remplacer CHANGEME_A_STRONG_PASSWORD par un vrai mot de passe dans les trois services du docker-compose.yml, changer immédiatement le compte guacadmin après la première connexion, et ne jamais publier le port 8080 en clair — placez un reverse proxy (Nginx Proxy Manager, Traefik, Caddy) qui gère le certificat SSL/TLS. Guacamole sait aussi s'adosser à un annuaire existant via LDAP, SAML ou OpenID, ce qui évite de gérer une base de comptes séparée.
Peut-on assister un utilisateur en direct ou garder une trace des sessions ?
Oui, les deux. Le partage de session permet d'ouvrir une session existante à un tiers en lecture seule ou en contrôle total, ce qui couvre le support et la formation sans outil tiers. Séparément, l'enregistrement de session capture les sessions RDP, VNC et SSH sous forme de vidéo à des fins d'audit ; c'est la raison d'être du volume ./data/guacd/record monté sur le conteneur guacd.

Partager ce tutoriel

Cet article vous a plu ?

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Commentaires

Recommandé pour vous

Article de fond sur le sujet

Checklist Sécurité Linux

30 points essentiels pour sécuriser un serveur Linux. Recevez aussi les nouveaux tutoriels par email.

Pas de spam. Désabonnement en 1 clic.