Algunas tareas son más fáciles con un escritorio gráfico: abrir un navegador, una herramienta con interfaz o una aplicación de escritorio en una máquina remota. XFCE es lo bastante ligero para un servidor pequeño, y TigerVNC te permite verlo desde tu propio ordenador. Esta guía lo configura en un VPS Linux Infrawire sin exponer nunca el puerto VNC a Internet: solo se accede mediante un túnel SSH.
📋 Requisitos previos
- Un VPS con Ubuntu 24.04 o Debian 12 y acceso SSH como root (desde tu área de cliente encuentras la IP y la contraseña root del VPS).
- Al menos 2 GB de RAM para un escritorio cómodo.
- Un cliente SSH en tu ordenador y un visor VNC (RealVNC Viewer o TigerVNC Viewer).
- Una cuenta de usuario normal: no ejecutes el escritorio como root.
📦 Instalar XFCE y TigerVNC
Actualiza el sistema e instala el escritorio y el servidor. dbus-x11 evita un problema frecuente de pantalla gris.
Bashapt update && apt upgrade -y apt install -y xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common dbus-x11
Crea un usuario dedicado si todavía no tienes uno:
Bashadduser USER usermod -aG sudo USER
🔑 Definir la contraseña VNC y la sesión
Cambia a ese usuario y define la contraseña VNC (como máximo 8 caracteres son significativos):
Bashsu - USER vncpasswd
Responde n a la pregunta sobre la contraseña de solo lectura. Luego indica a TigerVNC que arranque XFCE:
Bashmkdir -p ~/.vnc cat > ~/.vnc/xstartup <<'EOF' #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4 EOF chmod +x ~/.vnc/xstartup
Pruébalo a mano, escuchando solo en localhost:
Bashvncserver :1 -localhost yes -geometry 1920x1080 -depth 24 vncserver -list vncserver -kill :1
⚙️ Arranque automático con systemd
De nuevo como root, crea una unidad que ejecute la sesión de tu usuario. La pantalla :1 corresponde al puerto TCP 5901.
INI1# /etc/systemd/system/vncserver@.service 2[Unit] 3Description=TigerVNC server on display %i 4After=network.target 5 6[Service] 7Type=forking 8User=USER 9Group=USER 10WorkingDirectory=/home/USER 11PIDFile=/home/USER/.vnc/%H:%i.pid 12ExecStartPre=-/usr/bin/vncserver -kill :%i 13ExecStart=/usr/bin/vncserver :%i -localhost yes -geometry 1920x1080 -depth 24 14ExecStop=/usr/bin/vncserver -kill :%i 15 16[Install] 17WantedBy=multi-user.target
Bashsystemctl daemon-reload systemctl enable --now vncserver@1.service systemctl status vncserver@1.service
Para un segundo usuario, copia la unidad con otro nombre, con ese usuario y la pantalla :2 (puerto 5902).
🔒 Conectarse mediante un túnel SSH
La opción -localhost yes hace que VNC escuche solo en 127.0.0.1, de modo que nada es accesible desde fuera. Desde tu propio ordenador, abre un túnel:
Bashssh -N -L 5901:localhost:5901 USER@VPS_IP
Deja abierta esa ventana. En tu visor VNC, conéctate a localhost:5901 e introduce la contraseña VNC. El mismo comando funciona en PowerShell de Windows y en la Terminal de macOS. No abras el puerto 5901 en ningún cortafuegos.
✅ Verificación
En el VPS, comprueba que VNC escucha solo en la dirección de loopback:
Bashss -tlnp | grep 5901 systemctl is-active vncserver@1.service
Debes ver 127.0.0.1:5901 y no 0.0.0.0:5901. Desde tu ordenador, el visor debe mostrar el escritorio XFCE una vez establecido el túnel.
🛠️ Solución de problemas
Pantalla gris o sin escritorio. Comprueba que ~/.vnc/xstartup es ejecutable, que dbus-x11 está instalado y lee el registro con cat ~/.vnc/*.log. La falta de la línea exec startxfce4 es la causa más común.
«A VNC server is already running as :1». Queda un bloqueo obsoleto. Ejecuta vncserver -kill :1, elimina /tmp/.X1-lock y /tmp/.X11-unix/X1 si persisten y reinicia el servicio.
El túnel rechaza la conexión. Probablemente el servicio está detenido: revisa systemctl status vncserver@1.service. Asegúrate también de que el puerto local 5901 no esté ya en uso en tu ordenador, o elige otro como -L 5999:localhost:5901.
🎉 Tu VPS ya ofrece un escritorio XFCE privado, accesible solo mediante tu túnel SSH.