Entorno gráfico X mínimo en un servidor remoto
Trabajando con servidores Linux es muy difícil encontrarse con una aplicación que no esté diseñada para funcionar por linea de comandos. Aún así hay veces, aunque sea pocas, que encuentras alguna aplicación que cuenta sólo con interfaz gráfica y que quieres ejecutar en un servidor remoto. Instalar todo un servidor X completo con su escritorio KDE, Gnome o similar supone un exceso de paquetes instalados, procesos ejecutando, mayores consideraciones de seguridad…
Mi solución actual a este problema, después de varias iteraciones, es utilizar el servidor vnc4server junto a un gestor de ventanas muy ligero. Concretamente utilizo openbox. La combinación de ambos paquetes permite tener un escritorio accesible mediante el protocolo VNC. Además este servidor se vincula al usuario que lo ejecuta. Yo siempre trabajo con un usuario sin privilegios y usando sudo para las tareas que requieren permisos. Este mecanisme permite además que todos los procesos VNC y X se ejecuten como el usuario sin privilegios con lo cual la seguridad és mayor. No existe un gestor de sesiones como gdm o kdm.
Una vez instalados los paquetes vnc4server y openbox ejecutar un servidor es tan sencillo como ejecutar este comando como el usuario que queramos:
vncserver :1 -geometry 1024x768 -depth 24
Podemos ajustar el tamaño de pantalla y profundidad de color variando los parámetros correspondientes de la llamada. La primera vez que ejecutemos el comando nos pedirá que creemos una contraseña. Pese a la contraseña no podemos considerar el protocolo VNC como seguro así que es recomendable no abrir el puerto libremente y conectar mediante una VPN o un tunel SSH.
Una vez arrancado el servidor podemos ver que escucha en el puerto 5901 (5900 + el :1 que hemos indicado al arrancar).
sargue@zotac:~/bin$ netstat -lp |grep 5901 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp6 0 0 [::]:5901 [::]:* LISTEN 6634/Xvnc4
Ya sólo nos hace falta conectar mediante cualquier cliente VNC a este puerto. Veremos una pantalla muy mínima en la que obtenemos un shell y podemos pulsar el botón derecho para lanzar un shell o un navegador web.