Raspbian Lite con Navegador (Chromium / Firefox-ESR)

linux
raspberrypi
navegador
chromium
firefox

#1

Hi folks,

me gustaría tener una RPi con una pantalla (en este caso la táctil oficial) y un navegador abierto en pantalla completa o modo kiosko mejor, para mostrar cosas. La problemática viene en que quiero usar una distro “limpia”, como sería Raspbian Lite (sin escritorio) en lugar de una pesada como Raspbian a secas (que tiene escritorio y muchos programas que no voy a usar). Quiero poder abrirle el navegador desde remoto (como he hecho con aplicaciones hechas con Kivy, un framework de Python. Pero no es tan simple como instalar Firefox-ESR o Chromium

sudo apt install firefox-esr chromium-browser

Según he visto en diferentes artículos, pero en este en concreto, hace falta xserver y xinit, pero además un gestor de ventanas, como matchbox-window-manager.

sudo apt install xserver-org xinit matchbox-window-manager firefox-esr chromium-browser

Vale si instalo todo esto y ejecuto alguno de estos comandos:

# Firefox sin cursor
matchbox-window-manager -user_cursor no& firefox-esr
# Firefox a pelo
matchbox-window-manager & firefox-esr
# Chromium a pelo
matchbox-window-manager & chromium-browser

Me empezó a dar errores:

  1. Los locale, tuve que definirle en el .zshrc las variables a mano y ya no dada ese error.
    export LC_ALL=en_GB.UTF-8
    export LANGUAGE=en_GB.UTF-8
    export LANG=en_GB.UTF-8
    
  2. Me dice que no he definido la variable de entorno DISPLAY, así que en el .zshrc le digo que es la :0.0 (no se que valor tiene que tener, pero siempre dicen que ese)
    export DISPLAY=:0.0
    
  3. Por otro lado he leído que hay que en /etc/ssh/sshd_config hay que poner X11UseLocalHost no (aunque creo que ya viene así por defecto).
  4. Que si la conexión ssh hay que hacerla con ssh -Y pi@192.168... o con ssh -X pi@192.168...

El caso es que he llegado a un callejon sin salida y siempre me sale el mismo error

# Este comando
matchbox-window-manager -use_cursor no& firefox-esr
# Da este error
[1] 5037
matchbox: can't open display! check your DISPLAY variable.
[1]  + 5037 exit 1     matchbox-window-manager -use_cursor no
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0.0
# Y este comando
matchbox-window-manager & firefox-esr
# Da como error
[1] 5080
matchbox: can't open display! check your DISPLAY variable.
[1]  + 5080 exit 1     matchbox-window-manager
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0.0

El principio se supone que el problema viene porque no le estoy definiendo bien el $DISPLAY, pero es que no se que valor ponerle. Por más que busco no encuentro nada. A ver si algun@ de vosotr@s puede ayudarme, y así queda comentado también para la siguiente persona que se vaya a pelear con esto.

Saludos


#2

Um… ¿Y si levantas una app Qt que sea un mero webkit viewer?


#3

Para un tipo kiosco no sería mejor que uses electron?


#4

Os agradezco las alternativas, pero lo que quiero es resolver esto. La única forma más penca que he visto de solucionarlo es instalando Raspbian con escritorio, purgarle un buen tocho de apps que no se usan y hacer que abra en modo terminal en vez de escritorio, pero no lo veo limpio. Prefiero abrir un Raspbian Lite y con un playbook de Ansible decirle que me instale el navegador con sus dependencias.

Quiero esta opción porque voy a tener un backend en Django, todo dockerizado con su docker-compose para levantar nginx y demas historias. La idea es que se levante el navegador con un servicio y todo los demas con dockers.

@MiguelAngelLV gracias, pero no tengo ganas de usar otro tecnología para abrir un navegador, y a parte que no se si ese navegador que levanta va a soportar un Vue o cosicas así.

@baldboy gracias, si tuviera que usar una opcion de desktop probablemente optaría por esta por cacharrear con tecnologias web. Pero el backend de mi app va a ser un Django y no tengo ganas de tener 2 backends.


#5

Realmente, Electron es un frontend. De hecho, es una instancia de Chromium que ejecuta un código concreto, por lo que mantienes solo un backend, pero en vez de mostrarlo en Firefox, lo sacas por Electron, que en la práctica es hasta más sencillo y mantenible.

Si haces un echo $DISPLAY, ¿te muestra el valor que has asignado el .zshrc?


#6

gracias @jsalvador, pero es node (backend) que levante un chromium para tu frontend, ergo son dos backends.

Si, si no pongo nada en el .zshrc al hacer echo $DISPLAY no sale nada por pantalla. Y si pongo uno en .zshrc me sale el de este fichero.

De todas maneras Electron volvemos a las mismas, necesita las X para funcionar…


#7

Hola @klin.
Hace un tiempo me enfrasqué con un sistema de pesado automático, en el que recuperé una Rpi de 2011 con una pantalla, con la idea de emplear Chromium en modo kiosko. Raspbian era terriblemente pesado y opté por usar DietPi. Es una opción muy ligera para Rpi, con un script ya incluido para iniciarse en modo kiosko con Chromium. Fue lo único que me funcionó de forma ligera. Si tienes un rato para evaluarla, y los scripts de inicio y configuración no te dan problemas (son muy particulares), podría venirte bien.
¡Un saludo!
Alex.


#8

Eh… no. Para nada. Te estás confundiendo con nodewebkit, y ni eso. Electron se utiliza para aplicaciones finales, no hay un backend por medio. Es solamente un contenedor.

¿Y con Firefox no?

Para saber qué salida de DISPLAY necesitas, tira del buen xrandr.

Una guía rápida: https://www.faqforge.com/linux/find-id-display-connected-linux-machine/


#9

Al final entre @goretoxo y @vsuarez conseguí que levantase las X, instalando lxde y lightdm.

Gracias @harlock le voy a echar un ojo a esa distro :wink: . También estaba mirando las de Balena

@jsalvador gracias por lo del xrandr, a ver que sale.