Agente Linux — Operación
Servicio systemd
El agente corre como kiosk-browser.service. Auto-arranca en la VT7 al inicio del sistema, con Restart=on-failure.
| Operación | Comando |
|---|---|
| Ver estado | systemctl status kiosk-browser |
| Logs en vivo | journalctl -u kiosk-browser -f |
| Logs de la app | tail -f /tmp/kiosk.log |
| Reiniciar | systemctl restart kiosk-browser |
| Parar | systemctl stop kiosk-browser |
| Ver el navegador | chvt 7 |
Heartbeat e integración con RDS
- Heartbeat cada 60 segundos: el agente se registra como dispositivo Linux y envía estado.
- GPS / info del dispositivo cada 5 minutos (incluye lat/lon, uptime, distro/versión leídos de
/etc/os-release, modelo de hardware DMI). - Subida de logs en cada heartbeat — disponibles en el panel: Dispositivos → Acciones → Logs.
- Configuración remota: en cada heartbeat el agente recibe el modo (Web/Playlist), URL inicio, allowlist y passcode actualizados desde el panel.
- Capturas remotas: si el panel solicita una captura desde Acciones → Captura de pantalla, el agente lanza
scrotsobre$DISPLAY=:0, comprime a JPEG (calidad 70) y sube la imagen firmada con HMAC v2. Detalle.
Geolocalización (GPS + IP)
El agente reporta la ubicación con dos vías, en orden:
- gpsd local (
127.0.0.1:2947) — si tienes un módulo GPS conectado (USB serie / NMEA) ygpsd.socketestá activo (el instalador lo deja habilitado), el agente lee la última fijación conmode ≥ 2(2D / 3D). - Geolocalización por IP — fallback automático. Llama a
https://ipwho.is/y cachea el resultado 1 hora en memoria; suficiente para un kiosk que no se mueve.
Si las dos vías fallan, envía 0,0 y RDS lo trata como "sin fix" (no sobrescribe el último valor bueno).
Conectar un GPS USB
gpsd viene preinstalado con USBAUTO=true: enchufa el receptor, no hace falta tocar nada — la siguiente lectura de gpsd ya devolverá una fijación cuando el receptor tenga señal.
Soporte de pantallas táctiles
Habilitado de serie en cualquier panel que aparezca como dispositivo táctil para libinput:
- El navegador embebido recibe eventos
TouchEventreales en lugar de mouse emulado (flags Chromium--touch-events=enabled --enable-pinchenrun.sh). - Pinch-to-zoom funcional.
- Hot-corner de Settings (5 toques en la esquina superior-izquierda en 2 s) acepta
TouchBeginademás del mouse press. - Teclado en pantalla: el diálogo de Ajustes lanza
onboardautomáticamente al abrirse, y lo cierra al cerrar el diálogo. Sin teclado físico también puedes configurar el agente.
Modo Web Kiosk
Lanza el navegador a una URL configurable con:
- Allowlist-based navigation — sólo dominios permitidos cargan; el resto redirige a la URL de inicio.
- Botones flotantes Back, Reload y Home en la esquina inferior izquierda.
- Bloquea aperturas de nueva pestaña/ventana — todos los enlaces se abren en la misma vista.
Modo Playlist
Reproduce el slideshow de vídeos/imágenes gestionado desde el panel web.
- Los archivos se descargan automáticamente al disco local.
- Verificación CRC32 antes de marcar un archivo como descargado.
- Reproduce desde caché local inmediatamente al reiniciar — no necesita conexión al servidor para empezar.
- Pantalla completa, edge-to-edge — sin barra de estado ni botones.
- Adapta automáticamente a cualquier resolución (SD, FHD, 4K) sin reinicio.
Logs
Los logs del agente se persisten localmente y se suben al servidor en cada heartbeat. Para verlos:
- Localmente:
tail -f /tmp/kiosk.logpor SSH. - Desde el panel: Dispositivos → fila del dispositivo → Acciones → Logs.
Actualizaciones
Las actualizaciones se hacen volviendo a ejecutar el mismo instalador one-liner que usaste para instalar. Cuando detecta /opt/promobrowser/.git, hace git fetch + reset --hard origin/main, vuelve a aplicar paquetes del sistema (idempotente vía apt-get install -y) y reescribe el unit de systemd. Después reinicias el servicio:
curl -fsSL https://rds.digitalsignagerds.com/install.sh | sudo bash
sudo systemctl restart kiosk-browser
El instalador no reinicia el servicio automáticamente — hazlo tú con
systemctl restarttras la actualización.
Configuración de red
El menú de admin (5 toques en la esquina superior-izquierda) incluye una pestaña Network con:
Estado actual
Panel monoespaciado en la parte superior que se autorefresca cada 5 segundos. Muestra, para cada interfaz conectada:
- Nombre y tipo (ethernet / wifi)
- Nombre del perfil de NetworkManager
- IP, máscara, puerta de enlace, DNS
WiFi
- Scan again — refresca la lista de redes disponibles (
nmcli device wifi rescan). - Tabla con SSID, señal % y tipo de seguridad. La red actualmente en uso aparece marcada con ✓ en verde.
- Connect — selecciona una red de la tabla y pulsa Connect. Si está cifrada, pide contraseña. Llama a
nmcli device wifi connect. - Forget current network — elimina el perfil de la red WiFi actualmente activa (
nmcli connection delete).
En equipos sin adaptador WiFi (kiosks puramente cableados) el panel sigue apareciendo y muestra "No WiFi adapter detected" al pulsar Scan/Connect.
Ethernet
- Selector DHCP (recomendado) / Static.
- En modo Static aparecen los campos:
- IP / CIDR — p.ej.
192.168.1.50/24 - Gateway — p.ej.
192.168.1.1 - DNS — uno o varios separados por comas
- IP / CIDR — p.ej.
- Apply Ethernet config llama a
nmcli connection modify ipv4.method auto|manual …seguido de un down/up del perfil para aplicar al instante.
El cambio puede cortar momentáneamente la conexión si estás conectado por SSH a través del mismo cable. Los servicios del kiosk (heartbeat) se recuperan automáticamente.
Todas las operaciones de red se registran en agent.log bajo la categoría NETWORK.
Resolución de problemas frecuentes
| Síntoma | Diagnóstico |
|---|---|
| Pantalla en blanco al arrancar | systemctl status kiosk-browser — si está activo pero no ves nada, prueba chvt 7. |
| No conecta al servidor | Revisa Server URL y Device ID en Settings → Server → Test Connection. |
| Vídeos no reproducen | Falta algún paquete gstreamer. Reinstala: sudo apt install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav. |
El teclado 12345 no abre Settings |
El watcher X11 RECORD necesita python3-xlib — reinstala el paquete. |
| Cambios del panel no llegan | Espera al siguiente heartbeat (60 s); en caso de duda journalctl -u kiosk-browser -f para ver llamadas. |