# Guía de Instalación de Apache Guacamole en Debian 12 con MySQL

- Link: https://binariocero.com/linux/guia-de-instalacion-de-apache-guacamole-en-debian-12-con-mysql
- Published: 2025-02-20T17:32:29+01:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

## **1. Actualizar el sistema**

Antes de comenzar, es importante asegurarse de que el sistema esté actualizado:

    ```wp-block-preformatted
    sudo apt update && sudo apt upgrade -y
    ```

## **2. Instalar dependencias necesarias**

Guacamole requiere varias dependencias para su compilación y ejecución. Instálalas
con:

    ```wp-block-preformatted
    sudo apt install -y build-essential libcairo2-dev libjpeg-turbo8-dev libpng-dev \libtool-bin libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev \freerdp2-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev \libpulse-dev libssl-dev libvorbis-dev libwebp-dev tomcat9 tomcat9-admin tomcat9-common \tomcat9-user mysql-server mysql-client libmysql-java
    ```

## **3. Descargar Apache Guacamole**

Descarga la última versión de **Guacamole Server** y **Guacamole Client**:

    ```wp-block-preformatted
    wget https://apache.org/dyn/closer.lua/guacamole/1.5.0/source/guacamole-server-1.5.0.tar.gzwget https://apache.org/dyn/closer.lua/guacamole/1.5.0/binary/guacamole-1.5.0.war -O guacamole.war
    ```

## **4. Compilar e instalar Guacamole Server**

Extrae el código fuente y compílalo:

    ```wp-block-preformatted
    tar -xzf guacamole-server-1.5.0.tar.gzcd guacamole-server-1.5.0./configure --with-systemd-dir=/etc/systemd/system --enable-mysqlmake -j$(nproc)sudo make installsudo ldconfig
    ```

Habilita y arranca el servicio:

    ```wp-block-preformatted
    sudo systemctl daemon-reloadsudo systemctl enable guacdsudo systemctl start guacd
    ```

## **5. Configurar Guacamole Client**

Copia el archivo `.war` en la ruta de Tomcat:

    ```wp-block-preformatted
    sudo mv guacamole.war /var/lib/tomcat9/webapps/sudo systemctl restart tomcat9
    ```

## **6. Configurar la autenticación con MySQL**

### **6.1 Crear la base de datos y usuario en MySQL**

Abre MySQL con:

    ```wp-block-preformatted
    sudo mysql -u root -p
    ```

Ejecuta los siguientes comandos:

    ```wp-block-preformatted
    CREATE DATABASE guacamole_db;CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';GRANT ALL PRIVILEGES ON guacamole_db.* TO 'guacamole_user'@'localhost';FLUSH PRIVILEGES;EXIT;
    ```

### **6.2 Importar el esquema de Guacamole en MySQL**

Descarga el esquema de base de datos y aplícalo:

    ```wp-block-preformatted
    wget https://apache.org/dyn/closer.lua/guacamole/1.5.0/source/guacamole-auth-jdbc-1.5.0.tar.gztar -xzf guacamole-auth-jdbc-1.5.0.tar.gzcd guacamole-auth-jdbc-1.5.0/mysql/schemacat ./*.sql | sudo mysql -u root -p guacamole_db
    ```

### **6.3 Configurar Guacamole para usar MySQL**

Crea el directorio de configuración:

    ```wp-block-preformatted
    sudo mkdir -p /etc/guacamolesudo nano /etc/guacamole/guacamole.properties
    ```

Agrega lo siguiente:

    ```wp-block-preformatted
    guacd-hostname: localhostguacd-port: 4822auth-provider: net.sourceforge.guacamole.net.auth.mysql.MySQLAuthenticationProvidermysql-hostname: localhostmysql-port: 3306mysql-database: guacamole_dbmysql-username: guacamole_usermysql-password: StrongPassword123!
    ```

Guarda el archivo (`Ctrl + X`, `Y`, `Enter`).

### **6.4 Copiar el conector MySQL a Tomcat**

    ```wp-block-preformatted
    sudo ln -s /usr/share/java/mysql-connector-java.jar /var/lib/tomcat9/lib/
    ```

## **7. Crear un enlace simbólico**

    ```wp-block-preformatted
    sudo ln -s /etc/guacamole /var/lib/tomcat9/.guacamole
    ```

## **8. Asignar permisos adecuados**

    ```wp-block-preformatted
    sudo chown -R tomcat:tomcat /etc/guacamolesudo chmod -R 600 /etc/guacamole/guacamole.properties
    ```

## **9. Reiniciar los servicios**

    ```wp-block-preformatted
    sudo systemctl restart guacd tomcat9 mysql
    ```

## **10. Acceder a Apache Guacamole**

Abre un navegador y accede a:

    ```wp-block-preformatted
    http://<TU_SERVIDOR>:8080/guacamole
    ```

Inicia sesión con las credenciales almacenadas en MySQL.

## **Extras para Producción**

 1. **Configurar HTTPS en Tomcat**: Usa un proxy inverso como **Nginx** o configura
    un **certificado SSL** en Tomcat.
 2. **Implementar autenticación MFA**: Usa plugins de autenticación como **Duo Security**.
 3. **Restringir acceso a MySQL**: Usa `ufw` o `iptables` para bloquear accesos externos.
 4. **Crear copias de seguridad**: Configura **mariadb-backup** o **mysqldump** para
    hacer copias periódicas.
