Si alguna vez has trabajado con una instancia EC2, sabes que AWS no proporciona una interfaz gráfica de usuario (GUI) por defecto. Aunque existen servicios gestionados como Amazon WorkSpaces o NICE DCV, estos pueden resultar menos flexibles o más costosos.
Pero no te preocupes, podemos configurar nuestra propia GUI en una instancia EC2. Para ello, utilizaremos VNC, un protocolo para compartir escritorios de manera remota, junto con noVNC, una interfaz web que nos permitirá acceder a la GUI desde cualquier navegador sin necesidad de instalar software adicional.
Vamos a ver cómo hacerlo paso a paso. 🚀
Proceso de instalación y configuración
1️⃣ Paso 1: Lanzar una instancia EC2
Primero, necesitamos una instancia EC2 en AWS. Si ya tienes una funcionando, puedes saltar este paso. Si no, sigue estos pasos:
Ve a la consola de AWS EC2 y haz clic en "Launch Instance".
Selecciona un AMI basado en Debian.
Crea o selecciona un par de claves SSH para acceder a la instancia.
Asegúrate de que el grupo de seguridad permite tráfico en el puerto 22 (SSH).
Lanza la instancia y anota su dirección IP pública.
2️⃣ Paso 2: Conectarse por SSH a la instancia
Una vez que la instancia esté en ejecución, usa SSH para conectarte desde tu terminal:
ssh -i "[NOMBRE_DE_TU_CLAVE].pem" admin@[DIRECCIÓN_IP_PÚBLICA]
Si todo está bien, deberías ver el terminal de tu instancia EC2.
3️⃣ Paso 3: Instalar XFCE, TightVNC y noVNC
Ahora instalaremos el entorno de escritorio XFCE, junto con TightVNC (para la conexión VNC) y noVNC (para acceder desde el navegador).
Ejecuta los siguientes comandos en tu instancia EC2:
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -q -y xfce4 xfce4-goodies tightvncserver dbus-x11 novnc
Esto instalará todos los paquetes necesarios.
4️⃣ Paso 4: Crear un usuario para VNC
Para gestionar la sesión VNC, crearemos un usuario llamado vncuser
:
sudo useradd vncuser -m
sudo passwd vncuser
Te pedirá que ingreses una contraseña. Usa una segura y anótala.
5️⃣ Paso 5: Configurar TightVNC
Primero, crea la carpeta donde guardaremos la configuración de VNC:
sudo mkdir /home/vncuser/.vnc
sudo chown -R vncuser:vncuser /home/vncuser/.vnc
Ahora establece una contraseña para VNC:
sudo su -l -c 'vncpasswd' vncuser
Configura la resolución de pantalla (por ejemplo, 1920x1080):
echo "geometry=1920x1080" | sudo tee /home/vncuser/.vnc/config
sudo chmod 600 /home/vncuser/.vnc/config
Configura XFCE como el entorno de escritorio predeterminado para VNC:
echo -e "#!/bin/bash\nxrdb $HOME/.Xresources\nstartxfce4 &" | sudo tee /home/vncuser/.vnc/xstartup
sudo chmod +x /home/vncuser/.vnc/xstartup
6️⃣ Paso 6: Configurar noVNC para acceso desde el navegador
Para hacer que noVNC sea más accesible, lo configuraremos para que su interfaz web se abra directamente sin necesidad de añadir /vnc.html
en la URL:
sudo ln -s /usr/share/novnc/vnc.html /usr/share/novnc/index.html
Ahora crearemos dos scripts para iniciar y detener noVNC fácilmente:
Script para iniciar VNC (startvnc.sh
)
sudo nano /home/vncuser/startvnc.sh
Copia y pega el siguiente contenido:
#!/usr/bin/bash
/usr/bin/vncserver :$1
websockify -D --web=/usr/share/novnc/ $((6080-1+$1)) localhost:$((5901-1+$1))
Guarda el archivo y cierra el editor.
Script para detener VNC (stopvnc.sh
)
sudo nano /home/vncuser/stopvnc.sh
Copia y pega lo siguiente:
#!/usr/bin/bash
kill $(lsof -ti tcp:$((6080-1+$1)))
/usr/bin/vncserver -kill :$1
exit 0
Guarda los cambios y cierra el archivo.
7️⃣ Paso 7: Automatizar el inicio de noVNC con systemd
Para que noVNC se inicie automáticamente al reiniciar la instancia, configuraremos un servicio en systemd:
sudo nano /etc/systemd/system/vncserver@.service
Pega este contenido:
[Unit]
Description=Start VNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=vncuser
Group=vncuser
WorkingDirectory=/home/vncuser
PIDFile=/home/vncuser/.vnc/%H:%i.pid
ExecStartPre=/home/vncuser/stopvnc.sh %i
ExecStart=/home/vncuser/startvnc.sh %i
ExecStop=/home/vncuser/stopvnc.sh %i
[Install]
WantedBy=multi-user.target
Guarda y cierra el archivo. Luego, recarga systemd y habilita el servicio:
sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service
sudo systemctl start vncserver@1.service
8️⃣ Paso 8: Permitir tráfico en el puerto de noVNC
Para acceder a la GUI desde el navegador, necesitamos abrir el puerto 6080 en el grupo de seguridad de la instancia:
- Ve a la consola de AWS EC2.
- Selecciona la instancia y abre la pestaña "Security".
- Haz clic en el grupo de seguridad y selecciona "Edit inbound rules".
- Agrega una nueva regla:
- Tipo: Custom TCP
- Rango de puertos: 6080
- Origen: Anywhere (0.0.0.0/0)
- Guarda los cambios.
9️⃣ Paso 9: Acceder a la GUI desde el navegador
¡Listo! Ahora puedes abrir tu navegador y acceder a la interfaz gráfica escribiendo en la barra de direcciones:
http://[DIRECCIÓN_IP_PÚBLICA]:6080
Introduce la contraseña de VNC y verás el escritorio XFCE funcionando en tu instancia EC2.
Conclusión
Configurar una GUI en EC2 puede parecer complicado, pero con los pasos correctos, es completamente posible. Con noVNC, puedes acceder a tu escritorio desde cualquier navegador sin necesidad de instalar software adicional.
Si necesitas un entorno gráfico para trabajar con EC2, esta es una excelente solución sin depender de servicios costosos como Amazon WorkSpaces.
¿Te ha sido útil este tutorial? ¡Déjamelo saber en los comentarios! 👇🏻
Top comments (0)