====== Installation native de Guacamole ====== * Lien : https://guacamole.apache.org/doc/gug/guacamole-native.html * https://www.it-connect.fr/tuto-apache-guacamole-bastion-rdp-ssh-debian/ ===== Présentation ===== Guacamole est divisé en deux parties : * **guacamole-server** : * fournit le proxy guacd et les bibliothèques associées, * doit être compilé à partir du code source. * **guacamole-client** : * fournit le client à servir par votre conteneur de servlets, généralement Apache Tomcat. * disponible sous forme binaire. ==== guacamole-server==== * contient tous les composants natifs côté serveur nécessaires par Guacamole pour se connecter aux bureaux à distance. * fournit une bibliothèque C commune, **libguac**, dont dépendent tous les autres composants natifs, ainsi que des bibliothèques pour chaque protocole supporté, * **guacd**, le cœur de Guacamole. guacd est le démon proxy qui s’exécute sur le serveur Guacamole : * accepte les utilisateurs des connexions qui sont tunnellées via l’application web Guacamole, * puis se connecte aux bureaux à distance en leur nom. guacd est un exécutable appelé GUACD qui peut être exécuté manuellement ou automatiquement quand votre ordinateur démarre. La construction de guacamole-server nécessite un compilateur C (comme gcc) et des bibliothèques dont dépend guacamole-server. Certaines dépendances sont absolument obligatoire, tandis que d’autres sont optionnels. La présence de dépendances optionnelles permet des fonctionnalités supplémentaires. De nombreuses distributions Linux séparent les paquets de bibliothèques en binaires et des paquets « développement » ; Vous devrez installer les packages de développement. Celles-ci se terminent généralement par un suffixe « -dev » ou « -dev ». ==== Installation ==== === Installer les dépendances indispensables === Pour construire guacamole-server, il faut disposer de : * Cairo : utilisé par libguac pour le rendu graphique, * libjpeg (ou libjpeg-turbo) : utilisé par libguac pour fournir la prise en charge JPEG * libpng : utilisé par libguac pour écrire des images PNG, le type d’image de base utilisé par le protocole Guacamole * libuuid (ou la bibliothèque OSSP UUID) : utilisé pendant le processus de compilation. libtool crée des bibliothèques compilées nécessaire pour le guacamole. apt install -y libcairo2-dev libjpeg62-turbo-dev libtool-bin === Installer les dépendances optionnelles=== Les dépendances optionnelles de Guacamole dictent quelles parties de guacamole-server seront construites. Cela inclut la prise en charge de divers protocoles de bureau à distance, ainsi que toutes les fonctionnalités supplémentaires de ces protocoles : * **FreeRDP** : requis pour le support RDP. * **Pango** : bibliothèque de mise en page de texte que Guacamole utilise pour rendre le texte protocoles nécessitant un terminal (Kubernetes, SSH et telnet). * **libssh2** : nécessaire pour le support SSH et SFTP. * **libVNCServer** : fournit libvncclient, qui est nécessaire pour le support VNC * **libwebsockets** : nécessaire pour le support de Kubernetes. * **OpenSSL** : offre la prise en charge de SSL et TLS - deux schémas de chiffrement courants qui constituent la majorité du trafic web chiffré. * **libwebp** : utilisé par libguac pour écrire des images WebP. * **PulseAudio** (libpulse-dev) : PulseAudio fournit libpulse, utilisé par le support VNC de Guacamole pour fournir un support audio expérimental. * **Libvorbis** (libvorbis-dev) : prend en charge Ogg Vorbis - une norme libre et ouverte pour Compression sonore. Si elle est installée, libguac sera construite avec le support d’Ogg Vorbis et les protocoles supportant l’audio utiliseront la compression Ogg Vorbis lorsque Possible. Sinon, le son ne sera encodé que comme WAV (non compressé), et ne sera que disponible si votre navigateur prend également en charge le WAV. * FFmpeg (libavcodec-dev, libavformat-dev, libavutil-dev, libswscale-dev): Les bibliothèques libavcodec, libavformat, libavutil et libswscale fournies par FFmpeg est utilisé pour encoder des flux vidéo lors de la traduction des enregistrements de sessions de Guacamole * **libtelnet** (libtelnet-dev) : nécessaire pour le support de telnet. apt install -y freerdp3-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libwebsockets-dev libssl-dev libwebp-dev libpulse-dev libvorbis-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libtelnet-dev Debian 13 ne contient que le dépôt freerdp3 alors que Guacamole nécessite freerdp2. Il est nécessaire de compiler freerdp2 en activant le redimensionnement d’images (-DWITH_SWSCALE=ON). === Installer FreeRDP2 === * installer le support de Wayland * https://www.malekal.com/wayland-serveur-affichage-linux/ sudo apt install -y libwayland-dev wayland-protocols libxkbcommon-dev * Activer le support ALSA (Advanced Linux Sound Architecture) pour la redirection audio : sudo apt install -y libasound2-dev * Activer le support CUPS (Common Unix Printing System) pour la redirection d’imprimante dans les sessions RDP : sudo apt install -y libcups2-dev * Activer le support PCSC (smart card redirection) pour les sessions RDP : sudo apt install -y libpcsclite-dev * Activer le support XKBFile (extension X11 pour la gestion des fichiers de clavier) : sudo apt install -y libxkbfile-dev * Activer le support Xinerama (extension X11 pour la gestion multi-écrans) : sudo apt install -y libxinerama-dev * Activer le support Xcursor (extension X11 pour la gestion des curseurs) : sudo apt install -y libxcursor-dev * Activer le support Xv (extension X11 pour l’accélération vidéo) : sudo apt install -y libxv-dev * Activer le support Xi (extension X11 pour la gestion avancée des périphériques d’entrée) : sudo apt install -y libxi-dev * Activer le support XRandR (extension X11 pour la gestion dynamique des résolutions d’écran) : sudo apt install -y libxrandr-dev * Activer le support Xfixes (extension X11 qui ajoute des fonctionnalités utiles comme la gestion avancée des curseurs) : sudo apt install -y libxfixes-dev * Génération des man-pages avec le paquet xsltproc. sudo apt install -y docbook-xsl docbook-xml xsltproc sudo apt install cmake libsystemd-dev clang-format sudo apt install -y libusb-1.0-0-dev libudev-dev pkg-config git clone --branch 2.11.7 https://github.com/FreeRDP/FreeRDP.git cd FreeRDP ?? git submodule update --init --recursive mkdir build && cd build # nettoyer le cache CMake rm -f CMakeCache.txt rm -rf CMakeFiles/ rm -rf build # lancer la configuration cmake -DCMAKE_INSTALL_PREFIX=/usr/local \ -DWITH_CAIRO=ON \ -DWITH_SWSCALE=ON \ -DWITH_MANPAGES=ON \ -DWITH_ALSA=ON \ -DWITH_CUPS=ON \ -DWITH_PCSC=ON \ -DWITH_XKBFILE=ON \ -DWITH_XINERAMA=ON \ -DWITH_XCURSOR=ON \ -DWITH_XV=ON \ -DWITH_XI=ON \ -DWITH_XRANDR=ON \ -DWITH_XFIXES=ON \ -DWITH_WAYLAND=ON \ -Wno-dev \ .. make -j$(nproc) sudo make install sudo ldconfig Vérifier : /usr/local/bin/xfreerdp --version === Autres dépendances optionnelles === * **libtelnet** (libtelnet-dev) : nécessaire pour le support de telnet. === Obtenir le code source === * créer et utiliser un compte pour guacamole apt install sudo adduser guacamole usermod -aG sudo guacamole * avec l'archive wget https://dlcdn.apache.org/guacamole/1.6.0/source/guacamole-server-1.6.0.tar.gz tar -xzf guacamole-server-1.6.0.tar.gz cd guacamole-server-1.6.0 === Créer guacamole-server === * installer Autotools et plusieurs bibliothèques : sudo apt install -y build-essential make pkg-config * configurer la compilation sudo sudo ./configure --with-systemd-dir=/etc/systemd/system/ ... ------------------------------------------------ guacamole-server version 1.6.0 ------------------------------------------------ Library status: freerdp ............. yes (3.x) pango ............... yes libavcodec .......... yes libavformat ......... yes libavutil ........... yes libssh2 ............. yes libssl .............. yes libswscale .......... yes libtelnet ........... yes libVNCServer ........ yes libvorbis ........... yes libpulse ............ yes libwebsockets ....... yes libwebp ............. yes wsock32 ............. no Protocol support: Kubernetes .... yes RDP ........... yes SSH ........... yes Telnet ........ yes VNC ........... yes Services / tools: guacd ...... yes guacenc .... yes guaclog .... yes FreeRDP plugins: /usr/lib/x86_64-linux-gnu/pkgconfig/../../../lib/x86_64-linux-gnu/freerdp3 Init scripts: no Systemd units: /etc/systemd/system/ Type "make" to compile guacamole-server. configure: WARNING: -------------------------------------------- Support for FreeRDP 3.x is currently experimental. Some features, like RemoteApp, have known issues. If not testing, consider using FreeRDP 2.x. -------------------------------------------- * Compiler **guacamole-server** avec **make** : sudo make