Agente Linux — Operação
Serviço systemd
O agente corre como kiosk-browser.service. Auto-arranca na VT7 no início do sistema, com Restart=on-failure.
| Operação | Comando |
|---|---|
| Ver estado | systemctl status kiosk-browser |
| Logs em direto | journalctl -u kiosk-browser -f |
| Logs da app | tail -f /tmp/kiosk.log |
| Reiniciar | systemctl restart kiosk-browser |
| Parar | systemctl stop kiosk-browser |
| Ver o navegador | chvt 7 |
Heartbeat e integração com o RDS
- Heartbeat a cada 60 segundos: o agente regista-se como dispositivo Linux e envia o estado.
- GPS / info do dispositivo a cada 5 minutos (inclui lat/lon, uptime, distro/versão lidos de
/etc/os-release, modelo de hardware DMI). - Envio de logs em cada heartbeat — disponíveis no painel: Dispositivos → Ações → Logs.
- Configuração remota: em cada heartbeat o agente recebe o modo (Web/Playlist), URL inicial, allowlist e passcode atualizados a partir do painel.
- Capturas remotas: se o painel solicitar uma captura a partir de Ações → Captura de ecrã, o agente executa
scrotsobre$DISPLAY=:0, comprime para JPEG (qualidade 70) e envia a imagem assinada com HMAC v2. Detalhe.
Geolocalização (GPS + IP)
O agente reporta a localização por duas vias, em ordem:
- gpsd local (
127.0.0.1:2947) — se tiver um módulo GPS ligado (USB série / NMEA) e ogpsd.socketativo (o instalador deixa-o ativo), o agente lê a última fixação commode ≥ 2(2D / 3D). - Geolocalização por IP — fallback automático. Chama
https://ipwho.is/e mantém o resultado em cache 1 hora em memória; suficiente para um kiosk que não se movimenta.
Se ambas as vias falharem, envia 0,0 e o RDS trata-o como "sem fix" (não sobrescreve o último valor válido).
Ligar um GPS USB
O gpsd vem pré-instalado com USBAUTO=true: ligue o recetor, não é preciso mexer em nada — a próxima leitura de gpsd devolverá uma fixação assim que o recetor tiver sinal.
Suporte para ecrãs táteis
Ativado de origem em qualquer painel que apareça como dispositivo tátil para libinput:
- O navegador embutido recebe eventos
TouchEventreais em vez de rato emulado (flags Chromium--touch-events=enabled --enable-pinchemrun.sh). - Pinch-to-zoom funcional.
- Hot-corner de Settings (5 toques no canto superior-esquerdo em 2 s) aceita
TouchBeginalém do mouse press. - Teclado no ecrã: o diálogo de Definições lança
onboardautomaticamente ao abrir, e fecha-o ao fechar o diálogo. Sem teclado físico também pode configurar o agente.
Modo Web Kiosk
Lança o navegador para um URL configurável com:
- Navegação baseada em allowlist — apenas os domínios permitidos carregam; o resto redireciona para o URL inicial.
- Botões flutuantes Back, Reload e Home no canto inferior esquerdo.
- Bloqueia aberturas de novo separador/janela — todas as ligações são abertas na mesma vista.
Modo Playlist
Reproduz o slideshow de vídeos/imagens gerido a partir do painel web.
- Os ficheiros são descarregados automaticamente para o disco local.
- Verificação CRC32 antes de marcar um ficheiro como descarregado.
- Reproduz a partir da cache local imediatamente ao reiniciar — não precisa de ligação ao servidor para começar.
- Ecrã inteiro, edge-to-edge — sem barra de estado nem botões.
- Adapta-se automaticamente a qualquer resolução (SD, FHD, 4K) sem reinício.
Logs
Os logs do agente são persistidos localmente e enviados para o servidor em cada heartbeat. Para os consultar:
- Localmente:
tail -f /tmp/kiosk.logpor SSH. - A partir do painel: Dispositivos → linha do dispositivo → Ações → Logs.
Atualizações
As atualizações são feitas executando novamente o mesmo instalador one-liner que usou para instalar. Quando deteta /opt/promobrowser/.git, faz git fetch + reset --hard origin/main, reaplica os pacotes do sistema (idempotente via apt-get install -y) e reescreve a unit do systemd. Depois reinicia o serviço:
curl -fsSL https://rds.digitalsignagerds.com/install.sh | sudo bash
sudo systemctl restart kiosk-browser
O instalador não reinicia o serviço automaticamente — faça-o com
systemctl restartapós a atualização.
Configuração de rede
O menu de admin (5 toques no canto superior-esquerdo) inclui um separador Network com:
Estado atual
Painel monoespaçado na parte superior que se auto-refresca a cada 5 segundos. Mostra, para cada interface ligada:
- Nome e tipo (ethernet / wifi)
- Nome do perfil do NetworkManager
- IP, máscara, gateway, DNS
WiFi
- Scan again — refresca a lista de redes disponíveis (
nmcli device wifi rescan). - Tabela com SSID, sinal % e tipo de segurança. A rede atualmente em uso aparece marcada com ✓ a verde.
- Connect — selecione uma rede da tabela e carregue em Connect. Se estiver cifrada, pede palavra-passe. Chama
nmcli device wifi connect. - Forget current network — elimina o perfil da rede WiFi atualmente ativa (
nmcli connection delete).
Em equipamentos sem adaptador WiFi (kiosks apenas cablados) o painel continua a aparecer e mostra "No WiFi adapter detected" ao carregar em Scan/Connect.
Ethernet
- Seletor DHCP (recomendado) / Static.
- Em modo Static aparecem os campos:
- IP / CIDR — ex.:
192.168.1.50/24 - Gateway — ex.:
192.168.1.1 - DNS — um ou vários separados por vírgulas
- IP / CIDR — ex.:
- Apply Ethernet config chama
nmcli connection modify ipv4.method auto|manual …seguido de um down/up do perfil para aplicar imediatamente.
A alteração pode cortar momentaneamente a ligação se estiver ligado por SSH através do mesmo cabo. Os serviços do kiosk (heartbeat) recuperam-se automaticamente.
Todas as operações de rede são registadas em agent.log na categoria NETWORK.
Resolução de problemas frequentes
| Sintoma | Diagnóstico |
|---|---|
| Ecrã em branco no arranque | systemctl status kiosk-browser — se está ativo mas não vê nada, experimente chvt 7. |
| Não liga ao servidor | Verifique Server URL e Device ID em Settings → Server → Test Connection. |
| Vídeos não reproduzem | Falta algum pacote gstreamer. Reinstale: sudo apt install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav. |
O teclado 12345 não abre Settings |
O watcher X11 RECORD precisa de python3-xlib — reinstale o pacote. |
| Alterações do painel não chegam | Aguarde o próximo heartbeat (60 s); em caso de dúvida journalctl -u kiosk-browser -f para ver as chamadas. |