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
- Configurar HTTPS en Tomcat: Usa un proxy inverso como Nginx o configura un certificado SSL en Tomcat.
- Implementar autenticación MFA: Usa plugins de autenticación como Duo Security.
- Restringir acceso a MySQL: Usa
ufw
oiptables
para bloquear accesos externos. - Crear copias de seguridad: Configura mariadb-backup o mysqldump para hacer copias periódicas.