Raspberry Pi 4: Modo Kiosk con proxy es posible!

En este artículo vamos a hablar sobre cómo crear un modo Kiosk con proxy utilizando una Raspberry Pi 4. Esta publicación es una colaboración de un compañero, que está realizando las prácticas curriculares del módulo de grado medio en Sistemas Microinformáticos y Redes.

En nuestro departamento, adquirimos hace tiempo una Raspberry Pi 4 (Enlace de Amazon) para sustituir el Nuk que tenemos en el televisor de nuestro despacho, en el que mostramos varios paneles de información. Hasta el momento, no habíamos tenido tiempo de ponernos manos a la obra con este nuevo «cacharrito». Aprovechando la ocasión, pusimos a nuestro compañero a investigar sobre el modo Kiosk que ofrece la Raspberry sobre chromium y que empezase a configurarla.

Aunque existen multitud de tutoriales de como configurar el modo Kiosk en la Raspberry, nuestro alumno en prácticas encontró una gran dificultad al tener que configurar el modo Kiosk bajo un proxy. Por este motivo, le propuse explicar cómo había logrado realizar la configuración.

LABISTS Raspberry Pi 4

  • Memoria del ordenador: 8 GB
  • Memoria Ram: 8 GB
  • Conexión Bluetooth
  • Interfaz de hardware: USB, USB 3.0, USB-C Ethernet, Micro- HDMI

1. ¿Qué es el Modo Kiosk?

El modo quiosco, consiste básicamente en utilizar un SO (Sistema Operativo) con unas funcionalidades reducidas. La finalidad es que sirva de herramienta de interacción con una interfaz visual, que pueda mostrar información relacionada de una empresa o entidad con sus clientes, empleados o colaboradores.

Como este modo se basa en una interfaz y sistema operativo ligero, se puede utilizar de muchas maneras. Esto permite al usuario tener una interacción fácil y rápida con el dispositivo.

Entre las muchas tareas que puede cumplir el modo Kiosk, nosotros hemos decidido configurarlo para sustituir nuestro viejos terminales SunRay (terminales ligeros en SUN) que había en el A5. El objetivo es conseguir que los usuarios pueden agilizar las consultas rápidas en la web sin necesidad de ir a un aula, encender un ordenador, cargar el sistema y autenticarse para acceder a un navegador.

2. Configurar modo kiosk

Lo primero que hay que hacer, es actualizar la lista de paquetes disponibles y sus versiones. Luego actualizarlas e instalarlas, respetando la configuración del software siempre que sea posible.

sudo apt-get update 
sudo apt-get upgrade 

Seguidamente, instalar xdotool, se trata de una herramienta que permite ejecutar un script bash para llevar a cabo pulsaciones de teclas. Por otro lado, Unclutter, permite ocultar el puntero del ratón en la pantalla. Para instalar estos dos comandos, tienes que ejecutar el siguiente comando en la Raspberry:

sudo apt-get install xdotool unclutter sed 

Una vez instalados los paquetes necesarios, hay que configurar el sistema de la Raspberry Pi para que inicie sesión sin necesidad de autenticarse 

Normalmente suele venir activado de forma predeterminada, si por algún motivo no fuera así, sigue estas instrucciones, si no es tu caso, pasa directamente al apartado 2.2.

2.1 Configuración inicio de sesión automático

Puedes acceder a la configuración mediante el siguiente comando:

sudo raspi-config 

Para seleccionar cada opción pulsa la tecla Intro. 

Dentro de la herramienta encontrarás las siguientes opciones:

  • 1 System Options
  • S5 Boot /Auto Login
  • B4 Desktop Autologin

Una vez terminada la configuración, reinicia el equipo para aplicar los cambios. 

A continuación, pasamos con el script. 

2.2 Secuencia de comandos de Raspberry PI Kiosk 

Esto se encargará de la mayor parte del trabajo de nuestro Raspberry Pi Kiosk, del lanzamiento de Chromium y la simulación de pulsaciones de teclas. 

Empieza con el kiosk ejecutando el siguiente comando.

sudo nano /home/pi/kiosk.sh 

Este archivo está vacío y tienes que escribir estas líneas. 

#!/bin/bash

Este código define que intérprete la línea de comandos (CLI) que debe usar el para intentar ejecutar el archivo 

Es útil para los casos en que no deseas especificar una aplicación para ejecutar el script. 

xset s noblank 
xset s off
xset -dpms

Estas líneas configuran el xsession, evitan el modo de ahorro de energía para que el dispositivo no entre en modo reposo o que se apague por falta de actividad. 

unclutter -idle 0.5 -root & 

Ahora ejecuta unclutter, el programa que deberías haber instalado anteriormente, recuerda que sirve para ocultar el puntero del ratón al pasar 5 segundos de inactividad. 

Si quieres que desaparezca el puntero del ratón al instante, elimina la parte de -idle 0.5 del comando. 

sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences

sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences

Las siguientes dos líneas buscan el archivo de preferencias de Chromium y elimina cualquier marca que aparezca en la barra de advertencias. 

Si Chromium alguna vez se bloquea o se cierra de forma repentina, las líneas descritas anteriormente, garantizan que no sea necesario recurrir al ratón y teclado para borrar la barra de advertencia. 

http_proxy=http://servidor:Puerto;
https_proxy=http://servidor:Puerto;

Estas dos líneas, son el talón de Aquiles de este artículo, como configurar el modo Kiosko bajo un proxy. En el caso que el proxy necesite un usuario y contraseña sera necesario escribir el siguiente código:

http_proxy=http://usuario:contraseña@servidor:Puerto;
https_proxy=http://usuario:contraseñaservidor:Puerto;

Seguiremo con el siguiente código:

/usr/bin/chromium-browser --noerrdialogs --disable-infobars –kiosk https://javierripoll.es & 

Esta línea lanza Chromium con esto parámetros: 

  • noerrdialogs: Esta opción le dice a Chromium que no debe mostrar ninguno de sus diálogos de error al usuario final. 
  • disable-infobars: Hace que Chromium no muestre su barra de información al usuario final. 
  • kiosk: Hace a Chromium funcionar en modo kiosk, bloquea conjuntos particulares de características y únicamente permite el acceso al navegador web como a cualquier otra función del sistema operativo .
  • https://javierripoll.es: Esta es la web que abre el script cuando se ejecute. Puedes añadir páginas webs, pestañas adicionales si así lo deseas separadas por espacios.
while true; do
      xdotool keydown ctrl+Tab; xdotool keyup ctrl+Tab;
      sleep 15
done

Estas líneas ejecutan un bucle while infinito que usa xdotool para simular presionar Ctrl + Tab, haciendo que Chromium cambie entre las diferentes pestañas abiertas. 

Una vez xdotool ejecuta sus teclas crea un bucle en modo suspensión durante 10 segundos. 

xdotool keydown ctrl+r; xdotool keyup ctrl+r; 

Agrega una actualización de pantalla, es algo a que has de tener en cuenta cuando desees mostrar resultados en vivo. 

Este sería el contenido entero del fichero kiosk.h

#!/bin/bash 

xset s noblank 
xset s off 
xset -dpms 

unclutter -idle 0.5 -root & 

sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences 

sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences 

export http_proxy=http://servidor:Puerto; 
export https_proxy=https://servidor:Puerto; 

/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk https://javierripoll.es https://google.es & 

while true; do 
   xdotool keydown ctrl+Tab; xdotool keyup ctrl+Tab; 
   sleep 10 
done 

2.3 Activar modo Kiosko para que se inicie el arranque

Antes de continuar configurando, debes de determinar la resolución de pantalla que vas a utilizar. 

Des esta manera, indicas al sistema operativo que pantalla muestra el kiosk de Chromium. 

Si no se configura la resolución de la pantalla, el modo kiosko no se cargará o aparecerá en la pantalla incorrecta. 

Para conocer el valor variable del sistema, hay que ejecutar el comando “$DISPLAY”. 

echo $DISPLAY 

NOTA: Anota el valor que indica el comando porque lo vas a necesitar en breve. 

Para que la Raspberry inicie el arranque, crea un archivo de servicio con este comando: 

Sudo nano /lib/systemd/system/kiosk.service

Este archivo es nuevo e tienes que introducir las siguientes líneas: 

[Unit] 

Description=Chromium Kiosk 

Wants=graphical.target 

After=graphical.target 

[Service] 

Environment=DISPLAY=:0 

Environment=XAUTHORITY=/home/pi/.Xauthority 

Type=simple 

ExecStart=/bin/bash /home/pi/kiosk.sh 

Restart=on-abort 

User=pi 
Group=pi 

[Install]
WantedBy=graphical.target

Estas líneas indicarán que quieres ejecutar el script kiosk.sh al inicio del sistema operativo. 

Mientras introduces estas líneas, has de modificar en la línea de Environment=DISPLAY=:0, el valor de 0 lo debes cambiar por el valor que habías conseguido antes con el comando de echo $DISPLAY. 

Guarda el archivo con Ctrl+O y Enter, y Ctrl+X para salir del modo de edición. 

Una vez todo configurado, puedes a habilitar el módulo del modo kiosko con el comando:

sudo systemctl enable kiosk.service

Si alguna vez deseas desactivar el modo kiosko puedes utilizar el siguiente comando: 

sudo systemctl disable kiosk.service

Luego, activa el módulo con el comando: 

sudo systemctl start kiosk.service

Si por algún motivo quieres desactivar el modo kiosko, escribe este comando:

sudo systemctl stop kiosk.service

Y si deseas verificar el estado del servicio de Raspberry Pi Kiosk, ejecuta este comando: 

sudo systemctl status kiosk.service

Si el comando se muestra en pantalla como Activo:activo (en ejecución) todo está en orden y debería de estar funcionando correctamente. 

2.4 Como forzar resolución de una Raspberry

Uno de los últimos pasos es imponer la confirmación de la resolución de pantalla a través de la configuración de la raspberry con los siguentes pasos: 

sudo raspi-config

Dentro de la herramienta de configuración, pulsa ENTER en «opciones avanzadas». 

Dentro de este menú hay una opción llamada » Resolución A5 «, selecciónala.

Aquí, busca y selecciona la resolución que mejor se adapte a tu pantalla y presiona ENTER . 

Luego reinicia la raspberry con: 

sudo reboot

Con esto finalizamos la configuración de la Raspberry en modo kiosko y después del reinicio ya iniciará Chromium y mostrará las webs mencionadas anteriormente. 

Por cierto, puedes usar Ctrl+Esc para poder entrar al menú de «accesorios» y «LXTerminal» para poder deshabilitar el servicio. 

Muchas grácias por leer este tutorial y si te ha gustado, no tengas dudas en compartirlo (●’◡’●) 

Manel Pérez
Estudiante de Sistemas Microinformáticos y Redes

LABISTS Raspberry Pi 4

  • Memoria del ordenador: 8 GB
  • Memoria Ram: 8 GB
  • Conexión Bluetooth
  • Interfaz de hardware: USB, USB 3.0, USB-C Ethernet, Micro- HDMI

Fuentes


Si te ha parecido interesante mi artículo, haz clic en el siguiente botón y podrás dar soporte a mí blog invitándome a una cerveza Turia. Gracias!

Artículos que quizá te interesen:

Enviar correos desde R con cuentas Microsoft O365 (y gmail, hotmail…) 

Existen varios paquetes para poder enviar correos electrónicos con adjuntos desde R, como por ejemplo: mailR, sendmailR, mail, blastula, blatr, gmailR, IMmailgun, emayili, RDCOMClient, ponyexpress…. Es muy común encontrarse como configurar estos paquetes para el envío de correos desde cuentas de gmail, hotmail (que al final de este post os pondré unos ejemplos), pero en […]

Como configurar Keepass y tener seguras tus contraseñas 

Es habitual necesitar una cuenta de usuario y una contraseña para todos los sitios web, cuentas de correo, servidor web, inicios de sesión. Y como os he indicado en alguna ocasión en algún artículo, no deberíamos de repetir nuestras contraseñas en estos sitios porque si sacaran a la luz alguna de ellas, tendríamos todas las […]

¡Hola, mundo! 

Bienvenido a WordPress. Esta es tu primera entrada. Edítala o bórrala, ¡luego empieza a escribir!   Un gran poder conlleva una gran responsabilidadSpiderman Pues a ello voy, como dicen en la película de Spiderman: «Un gran poder conlleva una gran responsabilidad«. Los ingenieros, y sobre todo los informáticos, parece que debemos saber solucionar problemas con […]