Sesión gráfica (X) en un servidor sin pantalla ni teclado (headless)

La manera más habitual de gestionar y administrar un servidor Linux es mediante un acceso SSH y la linea de comandos. No solo es lo más habitual sino posiblemente lo más recomendado y, con algo de práctica, más cómodo y eficiente. Además nos evita cargar en el servidor todo el subsistema gráfico con el coste en recursos asociado. Y por último también mejoramos la seguridad al eliminar componentes.Sin embargo podemos encontrarnos a veces que hay alguna aplicación que requiere una interfaz gráfica y, por las razones anteriores, no queremos instalar todo el entorno X y dejarlo corriendo. ¿Hay alguna alternativa?La hay, y además es muy sencilla de implementar y utilizar. Algo tan sencillo como un servidor X basado en VNC. En Debian el paquete vnc4server nos permite instalar este servidor, al cual podemos añadir un par de paquetes más (un gestor de ventanas y las fuentes básicas) y ya tenemos listo un servidor X. No acaban ahí las ventajas: no necesitamos un gestor de sesiones (gdm, kdm...) porque cada usuario se puede ejecutar su servidor, no tiene que hacer "login". Y esto mismo es una ventaja, porque todo se ejecuta como un usuario, nunca como "root".Los paquetes a instalar son, por ejemplo, los siguientes: vnc4server, xfce4 y xfonts-base. Por supuesto se instalaran múltiples dependencias ya que hay que instalar buena parte de las librerías gráficas de base. Una vez instalado todo solo nos falta ejecutar un simple comando: 

vncserver -geometry 1024x768 -depth 24

Como cualquier usuario. de hecho cualquier usuario puede tener una o más sesiones VNC, utilizando diferentes puertos. La especificación de la resolución y profundidad de color es, por supuesto, a gusto del usuario aunque conviene moderarse si vamos a utilizar la sesión de manera remota para mejorar el rendimiento.Con la primera ejecución se nos preguntará una contraseña para el servicio, con un máximo de 8 caracteres. El protocolo RFB de VNC no es que sea especialmente seguro así que es quizás buena idea no publicar el puerto de comunicación y utilizar un túnel SSH. La ejecución primera también nos informará de la creación de un script de arranque para lanzar diversos servicios en la sesión X, básicamente el gestor de ventanas y un terminal. Por supuesto podemos editar dicho script para ajustarlo a nuestros gustos y necesidades.Definitivamente este es un mecanismo para disponer de una interfaz gráfica en un servidor remoto que además podemos activar y desactivar fácilmente para gestionar adecuadamente los recursos sin sacrificar esa funcionalidad adicional que puede proporcionarnos un entorno gráfico.