A pesar de su tamaño mínimo, el Raspberry Pi consigue agradar debido a la variedad de sus in­te­r­fa­ces (USB, red) y su buen re­n­di­mie­n­to, por lo que no es ca­sua­li­dad que el mi­nio­r­de­na­dor sea un co­m­po­ne­n­te esencial de muchos proyectos DIY ele­c­tró­ni­cos y una pla­ta­fo­r­ma muy utilizada para apli­ca­cio­nes de servidor de diversa índole. El manejo directo de Raspberry Pi con el ratón, el teclado o el monitor no siempre es posible o resulta a menudo incómodo, por lo que es necesario recurrir a un PC de es­cri­to­rio separado que gestione el sistema operativo y los recursos del Raspberry Pi por control remoto. A tales efectos, no­r­ma­l­me­n­te se suele es­ta­ble­cer una conexión SSH con el mi­nio­r­de­na­dor, la cual permite acceder fá­ci­l­me­n­te a la interfaz de línea de comandos (CLI). Como al­te­r­na­ti­va, la uti­li­za­ción de un servidor VNC en Raspberry Pi permite el acceso remoto a la interfaz gráfica de usuario.

Servidor VNC en Raspberry Pi: ¿en qué consiste?

Bajo las siglas VNC (Virtual Network Computing) se di­s­tri­bu­ye un software cliente-servidor con el que se puede mostrar y controlar el contenido de la pantalla del sistema deseado (servidor) en otro sistema (cliente). Para ello, las entradas de teclado y los mo­vi­mie­n­tos y clics de ratón del lado del cliente se tra­n­s­mi­ten di­re­c­ta­me­n­te al ordenador remoto. Si instalas y activas VNC en un Raspberry Pi puedes instalar, co­n­fi­gu­rar y gestionar el mi­nio­r­de­na­dor desde otro PC. La base de VNC es Remote Fra­me­bu­f­fer Protocol (RFB), un protocolo de red apto para cualquier pla­ta­fo­r­ma que transmite los co­n­te­ni­dos como bitmaps y utiliza el puerto TCP 5900. Puesto que se crean co­ne­xio­nes sin datos de estado, no se pierden las sesiones remotas creadas incluso en caso de que haya in­te­rru­p­cio­nes te­m­po­ra­les o cambios del cliente VNC.

Nota

Aquí te ex­pli­ca­mos cómo co­n­fi­gu­rar un servidor VNC en un Raspberry Pi para poder uti­li­zar­lo con control remoto. En sentido inverso, también es posible instalar un cliente VNC en el mi­nio­r­de­na­dor para ejercer control remoto sobre otro PC.

Desafíos al co­n­fi­gu­rar el servidor VNC en Raspberry Pi

El software VNC está diseñado de tal manera que funciona con una menor cantidad de recursos. Cuantos más recursos exijan las otras apli­ca­cio­nes que funcionan en el Raspberry Pi, más re­le­va­n­cia adquirirá este aspecto. En principio no existen re­s­tri­c­cio­nes en cuanto a la selección del modelo de Raspberry Pi, por lo que los se­r­vi­do­res VNC pueden co­n­fi­gu­rar­se y eje­cu­tar­se tanto en un Raspberry Pi de primera ge­ne­ra­ción como en uno con la versión más actual.

La elección del software apropiado recayó durante mucho tiempo en las so­lu­cio­nes X11VNC o TightVNC. Para Raspberry Pi ambas resultan apro­pia­das y, a día de hoy, todavía están di­s­po­ni­bles. Desde la in­te­gra­ción de la interfaz de usuario PIXEL en Raspbian, con VNC Connect el sistema operativo estándar tiene su propia apli­ca­ción de co­mpu­tación virtual en red, la cual tiene que activarse para hacer uso de la te­c­no­lo­gía de gestión remota. El requisito para ello es emplear, al menos, Raspbian Jessie, pues de no ser así hay que descargar e instalar el software cliente-servidor.

Nota

VNC Connect y X11VNC permiten el acceso directo a la pantalla actual del Raspberry Pi. Por el contrario, TightVNC transmite versiones virtuales de la pre­se­n­ta­ción original haciendo así posible el registro si­mu­l­tá­neo de varios usuarios en el servidor VNC (de modo similar al concepto tra­di­cio­nal de servidor terminal).

Tutorial: ¿cómo se configura un servidor VNC en un Raspberry Pi?

En el siguiente tutorial te mostramos cómo co­n­fi­gu­rar y utilizar un servidor VNC en el mi­nio­r­de­na­dor. Para nuestro ejemplo re­cu­rri­re­mos a la in­s­ta­la­ción y co­n­fi­gu­ra­ción, muy sencillas, de los co­m­po­ne­n­tes del cliente y del servidor de VNC Connect, es decir, la suite VNC estándar de Raspbian ya me­n­cio­na­da.

Paso 1: instalar o ac­tua­li­zar VNC Connect en Raspberry Pi

El primer paso consiste en ase­gu­rar­se de que la versión actual de VNC Connect está instalada en tu Raspberry Pi, algo que se hace in­tro­du­cie­n­do los si­guie­n­tes comandos en el terminal:

sudo apt-get update
sudo apt-get install realvnc-vnc-server
sudp apt-get install realvnc-vnc-viewer

Tras ello, Raspbian ac­tua­li­za­rá tanto la apli­ca­ción de servidor como el cliente (viewer). En teoría es posible utilizar el mi­nio­r­de­na­dor en cualquier momento incluso para acceder a un servidor VNC. Esto, sin embargo, no es objeto de este tutorial.

Si sigues uti­li­za­n­do una versión antigua de Raspbian o de cualquier otro sistema operativo, en tu Raspberry Pi, será necesario que de­s­ca­r­gues VNC Connect. Para ello, visita la página web oficial del de­sa­rro­lla­dor RealVNC y se­le­c­cio­na el archivo de in­s­ta­la­ción para Raspberry Pi en el centro de descargas.

Paso 2: activar el servidor VNC

Una vez has ac­tua­li­za­do el software, ya puedes iniciar el servidor, bien a través de la interfaz de usuario o mediante la CLI.

En el primer caso, abre el menú principal (símbolo de la frambuesa) y se­le­c­cio­na los apartados “Pre­fe­re­n­cias” y “Co­n­fi­gu­ra­ción de Raspberry Pi”. Ve a la pestaña “In­te­r­fa­ces” y establece que “VNC” esté “Activo”.

Para poner en fu­n­cio­na­mie­n­to el VNC server en tu Raspberry Pi mediante la interfaz de línea de comandos necesitas la he­rra­mie­n­ta de co­n­fi­gu­ra­ción raspi-config, que se inicia de la siguiente manera:

sudo raspi-config

Navega hasta llegar al botón “In­te­r­fa­ci­ng Options” (opciones de in­te­r­co­ne­xión) y desplaza el ratón hasta la opción “VNC” para activarlo en última instancia pulsando “Yes”. Tras activar el servidor, este se iniciará au­to­má­ti­ca­me­n­te al arrancar el Raspberry Pi.

Nota

La des­ac­ti­va­ción del servidor VNC funciona de la misma manera. Para ello, escoge las opciones co­n­tra­rias “Des­ac­ti­va­do” o “No”.

Paso 3: comprobar los ajustes de conexión

Si instalas y activas VNC Connect en tu Raspberry Pi y reinicias el mi­nio­r­de­na­dor, podrás ver el icono para el servidor VNC en la barra de sistema de la interfaz de usuario. Al hacer clic sobre el icono aparecerá una ventana que te ofrecerá datos sobre la co­ne­c­ti­vi­dad y la seguridad de la apli­ca­ción remota. De esta manera, la parte izquierda muestra la IP de tu Raspberry necesaria para es­ta­ble­cer la conexión con el cliente VNC. Guarda la dirección para poder acceder a ella po­s­te­rio­r­me­n­te en el ordenador externo. Como al­te­r­na­ti­va, puedes insertar la IP en el siguiente comando de terminal:

hostname -I

En la parte derecha hay una firma y palabras clave para verificar la identidad, las cuales deben mostrarse mediante un mensaje al iniciarse más adelante la conexión VNC. Así es posible demostrar que Raspberry Pi es el sistema de destino en cuestión.

Consejo

Si quieres acceder re­gu­la­r­me­n­te a Raspberry Pi a través de VNC es re­co­me­n­da­ble que le ad­ju­di­ques una dirección IP fija al mi­nio­r­de­na­dor.

Paso 4: instalar VNC Viewer en di­s­po­si­ti­vos externos

Una vez que el servidor VNC funciona en Raspberry Pi, ya puedes dedicarte por completo al ordenador desde el que quieres controlar re­mo­ta­me­n­te al mi­nio­r­de­na­dor, en el que deberás instalar la apli­ca­ción de cliente, es decir, VNC Viewer. Para ello, RealVNC ofrece archivos de in­s­ta­la­ción gratuitos para di­fe­re­n­tes sistemas ope­ra­ti­vos. Así, el cliente puede in­s­ta­lar­se, por ejemplo, en or­de­na­do­res Windows, macOS y Linux. Asimismo, hay apli­ca­cio­nes de cliente para Android o iOS, pero también una extensión de Chrome gracias a la que VNC Viewer puede eje­cu­tar­se a través del navegador de Google. En el centro de descargas de Real VNC puedes de­s­ca­r­gar­te la versión adecuada y comenzar la in­s­ta­la­ción siguiendo el patrón habitual.

Paso 5: es­ta­ble­cer conexión directa con el Raspberry Pi (en la red local)

La vía más rápida y sencilla para utilizar la te­c­no­lo­gía VNC es mediante la conexión directa entre el ordenador cliente y el Raspberry Pi. El requisito para ello es que ambos di­s­po­si­ti­vos estén co­ne­c­ta­dos con la misma red local (LAN o WLAN) y se conozca la IP del Raspberry Pi. En este caso, al iniciar VNC Viewer introduce la dirección en la línea de di­re­c­cio­nes destinada para ello y establece la conexión haciendo clic en la tecla Enter.

Po­s­te­rio­r­me­n­te, la apli­ca­ción cliente pre­se­n­ta­rá el mensaje pre­via­me­n­te anunciado (con firma y palabras clave) para comprobar la identidad. En caso de tratarse de la in­fo­r­ma­ción pre­via­me­n­te pro­po­r­cio­na­da por el servidor VNC, puedes continuar el proceso.

A co­n­ti­nua­ción se te pedirá un nombre de usuario y una co­n­tra­se­ña, esto es, la cuenta de usuario de Raspberry Pi, cuyo nombre de usuario es no­r­ma­l­me­n­te “pi” y la co­n­tra­se­ña “raspberry”. Para evitar el acceso de usuarios no au­to­ri­za­dos, se re­co­mie­n­da modificar estos datos incluso antes de iniciar el servidor VNC.

Paso 6: es­ta­ble­cer una conexión en la nube con el servidor VNC de Raspberry Pi

Si no deseas o no eres capaz de conectar el sistema cliente y el Raspberry Pi a través de una red local, tienes la po­si­bi­li­dad de es­ta­ble­cer la conexión con VNC a través de Internet. Para este tipo de co­ne­xio­nes en la nube, que son gratuitas para pro­pó­si­tos no co­me­r­cia­les y se ca­ra­c­te­ri­zan por el cifrado de extremo a extremo, se necesita una cuenta RealVNC, también gratuita y muy fácil de definir. Para comenzar el registro vuelve a visitar la página web de RealVNC e introduce una dirección de correo ele­c­tró­ni­co en la casilla de registro (sign up).

Se necesitan los datos de inicio de sesión para la nueva cuenta RealVNC (dirección de correo ele­c­tró­ni­co y co­n­tra­se­ña) dos veces, es decir, en la apli­ca­ción de VNC server en Raspberry Pi y del lado cliente en VNC Viewer. En el programa de servidor, añade un acceso directo a la cuenta que incluya un correo ele­c­tró­ni­co y una co­n­tra­se­ña bajo la opción “Licensing” (au­to­ri­za­ción) y, para terminar, haz clic en “Sign in”. Re­gí­s­tra­te en el di­s­po­si­ti­vo cliente con la cuenta utilizada en VNC Viewer. Tras ello, Raspberry Pi aparecerá au­to­má­ti­ca­me­n­te como host di­s­po­ni­ble, de modo que es su­fi­cie­n­te con hacer doble clic sobre el símbolo co­rre­s­po­n­die­n­te para es­ta­ble­cer la conexión VNC.

Paso 7: ajustar la re­so­lu­ción de pantalla del Raspberry Pi

Una vez es­ta­ble­ci­da la conexión remota con el servidor VNC de Raspberry Pi, puede que haya dos motivos por los que sea necesario modificar la re­so­lu­ción de pantalla del mi­nio­r­de­na­dor:

  1. El re­n­di­mie­n­to es reducido, pues la re­so­lu­ción es muy alta.
  2. Se mantiene la re­so­lu­ción estándar (por ejemplo, porque el Raspberry solo se utiliza en modo headless sin estar conectado a un monitor) y es demasiado baja.

Puedes encontrar las po­si­bi­li­da­des de ada­p­ta­ción co­rre­s­po­n­die­n­tes en la he­rra­mie­n­ta raspi-config, que se inicia por medio del siguiente comando de terminal:

sudo raspi-config

Se­le­c­cio­na la opción “Advanced Options” y se­gui­da­me­n­te busca la entrada “Re­so­lu­tion”, donde puedes se­le­c­cio­nar la re­so­lu­ción deseada antes de cerrar la he­rra­mie­n­ta y la CLI.

Consejo

Si quieres tener más control sobre la co­n­fi­gu­ra­ción HDMI de tu Raspberry Pi, también puedes realizar cambios en el archivo de co­n­fi­gu­ra­ción /boot/config.txt . Mediante la entrada hdmi_mode puedes definir uno de los más de 50 formatos di­fe­re­n­tes de salidas HDMI con los valores adecuados. En el manual oficial puedes acceder a la lista completa de valores posibles (apartado “HDMI mode options”).

Paso 8: optimizar el re­n­di­mie­n­to de VNC en Raspberry Pi Zero y Pi 1

Si has instalado el servidor VNC en Raspberry Pi 1 o Zero, el re­n­di­mie­n­to dejará de ser estable debido a la potencia de pro­ce­sa­mie­n­to algo más débil de estos modelos antiguos. Siempre que estés activo en una red local segura podrás mitigar este problema des­ac­ti­va­n­do el cifrado y di­s­mi­nu­ye­n­do, de esta manera, la carga de la CPU.

Nota

La des­ac­ti­va­ción del cifrado solo es posible para co­ne­xio­nes directas, pero no para co­ne­xio­nes en la nube.

Accede al menú del servidor VNC en tu Raspberry Pi y abre las opciones. Se­le­c­cio­na el modo experto y escoge “AlwaysOFF” para el parámetro “En­cr­y­p­tion”. Los cambios no se aplican a las sesiones activas, por lo que debes finalizar las co­ne­xio­nes exi­s­te­n­tes y luego re­ini­ciar­las.

Ir al menú principal