DEV Community

Cover image for Cómo configurar una GUI en una instancia EC2 con noVNC
Brian
Brian

Posted on • Edited on

Cómo configurar una GUI en una instancia EC2 con noVNC

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]
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ahora establece una contraseña para VNC:

sudo su -l -c 'vncpasswd' vncuser
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ahora crearemos dos scripts para iniciar y detener noVNC fácilmente:

Script para iniciar VNC (startvnc.sh)

sudo nano /home/vncuser/startvnc.sh
Enter fullscreen mode Exit fullscreen mode

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))
Enter fullscreen mode Exit fullscreen mode

Guarda el archivo y cierra el editor.

Script para detener VNC (stopvnc.sh)

sudo nano /home/vncuser/stopvnc.sh
Enter fullscreen mode Exit fullscreen mode

Copia y pega lo siguiente:

#!/usr/bin/bash
kill $(lsof -ti tcp:$((6080-1+$1)))
/usr/bin/vncserver -kill :$1
exit 0
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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:

  1. Ve a la consola de AWS EC2.
  2. Selecciona la instancia y abre la pestaña "Security".
  3. Haz clic en el grupo de seguridad y selecciona "Edit inbound rules".
  4. Agrega una nueva regla:
    • Tipo: Custom TCP
    • Rango de puertos: 6080
    • Origen: Anywhere (0.0.0.0/0)
  5. 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
Enter fullscreen mode Exit fullscreen mode

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)