
Sommaire
Introduction
Apache Guacamole est une passerelle d’accès à distance sans client qui vous permet de contrôler des systèmes via des protocoles tels que RDP, SSH ou VNC à partir de n’importe quel navigateur web. Utiliser Docker pour installer Guacamole simplifie grandement le processus en permettant de déployer ses services rapidement et efficacement, avec tous les conteneurs nécessaires regroupés dans un seul fichier docker-compose.
Dans ce guide, nous allons voir comment installer Apache Guacamole en utilisant Docker. Nous allons créer un environnement composé de trois conteneurs principaux : une base de données MariaDB pour stocker les données des utilisateurs et des connexions, un serveur Guacamole (guacd) pour gérer les connexions distantes, et l’interface web de Guacamole.
Installation
Dans un premier temps, vous devrez avoir docker d’installer sur votre machine !
Créez d’abord un dossier de travail et accédez-y :
sudo mkdir guacamole && cd guacamole
Ensuite, ouvrez le fichier docker-compose.yml pour y définir la configuration :
sudo nano docker-compose.yml
Ajouter le contenu suivant :
services:
guacamole_db:
container_name: guacamole_db
hostname: guacamole_db
image: mariadb:latest
restart: always
volumes:
- ./guacamole_db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
expose:
- 3306
networks:
- guac_net
guacd:
container_name: guacd
hostname: guacd
image: guacamole/guacd:latest
restart: always
environment:
- RECORDING_SEARCH_PATH=${RECORDING_SEARCH_PATH}
volumes:
- ./guacd_drive:/drive:rw
- ./guacd_record:${RECORDING_SEARCH_PATH}:rw
expose:
- 4822
networks:
- guac_net
guacamole:
container_name: guacamole
hostname: guacamole
restart: always
image: guacamole/guacamole:latest
depends_on:
- guacamole_db
- guacd
ports:
- 8080:8080
links:
- guacd
environment:
- GUACD_HOSTNAME=guacd
- MYSQL_HOSTNAME=guacamole_db
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- RECORDING_SEARCH_PATH=${RECORDING_SEARCH_PATH}
volumes:
- ./guacd_record:${RECORDING_SEARCH_PATH}:ro
networks:
- guac_net
networks:
guac_net:
Création d’un fichier .env pour stocker les variables d’environnement.
sudo nano .env
# DATABASE CONFIG
MYSQL_ROOT_PASSWORD=your_password
MYSQL_DATABASE=guacamole
MYSQL_USER=guacamole
MYSQL_PASSWORD=yout_password
RECORDING_SEARCH_PATH=/var/lib/guacamole/recordings
Le fichier Docker Compose est maintenant prêt. Il nous reste à initialiser la base de données pour Apache Guacamole.
Cette étape est indispensable pour éviter l’erreur suivante lors du démarrage des conteneurs :
### Cause: java.sql.SQLSyntaxErrorException: Table ‘guacamole_db.guacamole_user’ doesn’t exist
Pour les étapes suivantes, il est recommandé d’utiliser l’utilisateur root afin de garantir les permissions nécessaires pour les modifications.
La première étape consiste à récupérer le script d’initialisation de la base de données MySQL.
docker run --rm guacamole/guacamole:latest /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
Ensuite, démarrez les conteneurs avec la commande suivante :
sudo docker compose up -d
Puis, copiez et importez le script d’initialisation dans le conteneur de la base de données à l’aide des commandes suivantes :
cp initdb.sql guacamole_db:/initdb.sql
docker exec -it guacamole_db bash
cat /initdb.sql | mariadb -u root -p guacamole
exit
Enfin, redémarrez le conteneur Guacamole pour appliquer les modifications :
sudo docker restart guacamole
Apache Guacamole est maintenant opérationnel. Vous pouvez y accéder via l’URL suivante :
http://votre-ip:8080/guacamole
La page de connexion s’affichera, et vous pourrez vous connecter en utilisant les identifiants par défaut :
Nom d’utilisateur : guacadmin
Mot de passe : guacadmin

Création d’une session SSH
Dans cette section, nous allons aborder la création d’une session SSH et la liaison à un utilisateur que nous allons créer.
Tout d’abord, accédez à l’onglet « Connexions » puis sélectionnez « Nouvelle connexion ».
Entrez les informations suivantes en les adaptant à vos besoins :



Votre première session est prête !
Pour se connecter à la session, il est nécessaire de se rendre dans l’onglet « Accueil » :

Ensuite, cliquez sur la connexion que vous venez de créer.

La console SSH s’ouvre !

Créer un nouvel utilisateur
Nous allons maintenant créer un nouvel utilisateur.
Dans l’interface d’administration, choisissez « Paramètres » puis « Utilisateurs » et cliquez sur « Nouvel Utilisateur »


Créez un utilisateur « test » sans privilèges, puis cochez la case en bas pour autoriser la connexion à la machine SSH que vous avez créée précédemment.

En vous connectant avec cet utilisateur, vous verrez la connexion SSH que vous avez créée et pourrez y accéder facilement !
Astuce pour copier-coller
Pour effectuer un copier-coller, il faut réaliser la combinaison de touche « shift+alt+tab »
Dans l’onglet presse-papiers, sélectionner le texte que vous voulez copier.

Utilisez de nouveau « Shift+Alt+Tab » pour quitter les onglets, puis faites un clic droit dans l’éditeur de ligne de commande. Vous verrez que le copier-coller fonctionne correctement.
Conclusion
En suivant ce guide, vous avez réussi à installer Apache Guacamole avec Docker, créant ainsi un environnement d’accès à distance pratique et efficace.
Nous avons également vu la création d’une connexion SSH et d’un utilisateur.
N’hésitez pas à explorer davantage les fonctionnalités de Guacamole et à adapter votre installation selon vos besoins spécifiques. Avec Guacamole, vous avez à portée de main un outil puissant pour le contrôle à distance de vos systèmes, le tout accessible depuis n’importe quel navigateur.