Inicio » Linux » Guía de Instalación de Apache Guacamole en Debian 12 con MySQL

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

Loading

1. Actualizar el sistema

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

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:

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:

wget https://apache.org/dyn/closer.lua/guacamole/1.5.0/source/guacamole-server-1.5.0.tar.gz
wget 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:

tar -xzf guacamole-server-1.5.0.tar.gz
cd guacamole-server-1.5.0
./configure --with-systemd-dir=/etc/systemd/system --enable-mysql
make -j$(nproc)
sudo make install
sudo ldconfig

Habilita y arranca el servicio:

sudo systemctl daemon-reload
sudo systemctl enable guacd
sudo systemctl start guacd

5. Configurar Guacamole Client

Copia el archivo .war en la ruta de Tomcat:

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:

sudo mysql -u root -p

Ejecuta los siguientes comandos:

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:

wget https://apache.org/dyn/closer.lua/guacamole/1.5.0/source/guacamole-auth-jdbc-1.5.0.tar.gz
tar -xzf guacamole-auth-jdbc-1.5.0.tar.gz
cd guacamole-auth-jdbc-1.5.0/mysql/schema
cat ./*.sql | sudo mysql -u root -p guacamole_db

6.3 Configurar Guacamole para usar MySQL

Crea el directorio de configuración:

sudo mkdir -p /etc/guacamole
sudo nano /etc/guacamole/guacamole.properties

Agrega lo siguiente:

guacd-hostname: localhost
guacd-port: 4822
auth-provider: net.sourceforge.guacamole.net.auth.mysql.MySQLAuthenticationProvider
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: StrongPassword123!

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

6.4 Copiar el conector MySQL a Tomcat

sudo ln -s /usr/share/java/mysql-connector-java.jar /var/lib/tomcat9/lib/

7. Crear un enlace simbólico

sudo ln -s /etc/guacamole /var/lib/tomcat9/.guacamole

8. Asignar permisos adecuados

sudo chown -R tomcat:tomcat /etc/guacamole
sudo chmod -R 600 /etc/guacamole/guacamole.properties

9. Reiniciar los servicios

sudo systemctl restart guacd tomcat9 mysql

10. Acceder a Apache Guacamole

Abre un navegador y accede a:

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.