Files
s-informer-sur-la-tech-www/articles/2026/Déploiement d'Apache Guacamole via Docker sur Debian 12 (Bookworm).md

4.4 KiB
Raw Blame History

title, description, tags, date, lastmod, type, category, status
title description tags date lastmod type category status
Déploiement d'Apache Guacamole via Docker sur Debian 12 (Bookworm)
2026-03-11 00:27 2026-03-11 01:19
article
Guide
brouillon

Déploiement d'Apache Guacamole via Docker sur Debian 12 (Bookworm)

L'installation d'Apache Guacamole peut vite devenir un enfer de dépendances (Java, Tomcat, extensions JDBC). Le passage par Docker simplifie tout, à condition de bien gérer la persistance des données et l'initialisation de la base PostgreSQL.

1. La Philosophie du Stack

Nous utilisons un trio de conteneurs isolés :

  • Guacamole Client : L'interface Web (Java/Tomcat).

  • Guacd : Le moteur natif (proxy RDP/SSH/VNC).

  • PostgreSQL : Le cerveau (stockage des utilisateurs et connexions).

2. Préparation du terrain

On commence par structurer notre projet sur l'hôte :

mkdir ~/guacamole-docker && cd ~/guacamole-docker
mkdir -p guacamole-home data init

3. Le Docker-Compose "Gagnant"

Le secret d'une installation qui ne casse pas lors des mises à jour réside dans l'utilisation d'un fichier guacamole.properties externe.

nano docker-compose.yml

services:
  # Moteur de protocoles
  guacd:
    image: guacamole/guacd
    container_name: guacd
    restart: always

  # Base de données
  postgres:
    image: postgres:15
    container_name: guac-postgres
    restart: always
    environment:
      POSTGRES_DB: guacamole_db
      POSTGRES_USER: guacamole_user
      POSTGRES_PASSWORD: TonMotDePasseFort
    volumes:
      - ./data:/var/lib/postgresql/data
      - ./init:/docker-entrypoint-initdb.d

  # Interface Web
  guacamole:
    image: guacamole/guacamole
    container_name: guacamole
    restart: always
    ports:
      - "8080:8080"
    environment:
      GUACD_HOSTNAME: guacd
      POSTGRESQL_HOSTNAME: postgres
      POSTGRESQL_DATABASE: guacamole_db
      POSTGRESQL_USER: guacamole_user
      POSTGRESQL_PASSWORD: TonMotDePasseFort
    volumes:
      - ./guacamole-home/guacamole.properties:/etc/guacamole/guacamole.properties
    depends_on:
      - guacd
      - postgres

4. Initialisation de la Base de Données

Cest l'étape où 90% des installations échouent. Il faut générer le schéma SQL officiel de Guacamole et le donner à manger à Postgres.

# Générer le script SQL
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgresql > ./init/01_initdb.sql

# Lancer les conteneurs (Postgres va lire le dossier ./init)
docker-compose up -d

5. Configuration Fine (guacamole.properties)

Pour éviter que Java n'ignore vos variables d'environnement, créez ce fichier :

nano guacamole-home/guacamole.properties

postgresql-hostname: postgres
postgresql-port: 5432
postgresql-database: guacamole_db
postgresql-username: guacamole_user
postgresql-password: TonMotDePasseFort
# Optionnel : priorité à la DB
extension-priority: postgresql

6. Le "Cheat Code" pour le premier accès

Si guacadmin / guacadmin vous renvoie un "Identifiant incorrect" (souvent dû à un souci de hachage lors de l'init), créez un admin de secours directement en SQL :

docker exec -i guac-postgres psql -U guacamole_user -d guacamole_db -c "INSERT INTO guacamole_entity (name, type) VALUES ('admin_devops', 'USER');"
docker exec -i guac-postgres psql -U guacamole_user -d guacamole_db -c "INSERT INTO guacamole_user (entity_id, password_hash, password_salt, password_date) SELECT entity_id, decode('8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918', 'hex'), NULL, CURRENT_TIMESTAMP FROM guacamole_entity WHERE name = 'admin_devops';"
docker exec -i guac-postgres psql -U guacamole_user -d guacamole_db -c "INSERT INTO guacamole_system_permission (entity_id, permission) SELECT entity_id, permission::guacamole_system_permission_type FROM guacamole_entity, (VALUES ('CREATE_CONNECTION'), ('CREATE_USER'), ('ADMINISTER')) AS p (permission) WHERE name = 'admin_devops';"

Identifiants : admin_devops / admin


🛠 Tips de DevOps :

  • Logs : Utilisez docker logs -f guacamole pour voir les extensions se charger. Vous devez voir PostgreSQL Authentication loaded.

  • Sécurité : Une fois connecté, créez votre utilisateur final et supprimez les comptes par défaut ou de secours.

  • HTTPS : Ne laissez jamais Guacamole en HTTP (8080). Posez un Nginx Proxy Manager ou un Traefik devant pour gérer le SSL.