Agent Linux — Exploitation
Service systemd
L'agent tourne en tant que kiosk-browser.service. Auto-démarre sur la VT7 au boot, avec Restart=on-failure.
| Opération | Commande |
|---|---|
| Voir l'état | systemctl status kiosk-browser |
| Logs en direct | journalctl -u kiosk-browser -f |
| Logs de l'app | tail -f /tmp/kiosk.log |
| Redémarrer | systemctl restart kiosk-browser |
| Arrêter | systemctl stop kiosk-browser |
| Voir le navigateur | chvt 7 |
Heartbeat et intégration RDS
- Heartbeat toutes les 60 secondes : l'agent s'enregistre comme appareil Linux et envoie l'état.
- GPS / info appareil toutes les 5 minutes (inclut lat/lon, uptime, distro/version lus depuis
/etc/os-release, modèle matériel DMI). - Upload des logs à chaque heartbeat — disponibles dans le panneau : Appareils → Actions → Logs.
- Config distante : à chaque heartbeat l'agent reçoit le mode (Web/Playlist), URL d'accueil, allowlist et mot de passe mis à jour depuis le panneau.
- Captures distantes : si le panneau demande une capture via Actions → Capture d'écran, l'agent lance
scrotsur$DISPLAY=:0, compresse en JPEG (qualité 70) et envoie l'image signée HMAC v2. Détail.
Géolocalisation (GPS + IP)
L'agent rapporte la position via deux voies, dans l'ordre :
- gpsd local (
127.0.0.1:2947) — si un module GPS est branché (USB série / NMEA) et quegpsd.socketest actif (l'installateur l'active), l'agent lit le dernier fix avecmode ≥ 2(2D / 3D). - Géolocalisation par IP — fallback automatique. Appelle
https://ipwho.is/et met en cache le résultat 1 heure en mémoire ; suffisant pour un kiosk qui ne bouge pas.
Si les deux voies échouent, envoie 0,0 et RDS considère « pas de fix » (n'écrase pas la dernière valeur correcte).
Brancher un GPS USB
gpsd est préinstallé avec USBAUTO=true : branchez le récepteur, aucune autre action — la prochaine lecture gpsd retournera un fix dès que le récepteur aura du signal.
Support écran tactile
Activé d'office sur tout panneau apparaissant comme dispositif tactile pour libinput :
- Le navigateur embarqué reçoit de vrais
TouchEvents au lieu de souris émulée (flags Chromium--touch-events=enabled --enable-pinchdansrun.sh). - Pinch-to-zoom fonctionnel.
- Le hot-corner des Settings (5 taps en haut à gauche en 2 s) accepte
TouchBeginen plus du mouse press. - Clavier à l'écran : le dialogue Settings lance
onboardautomatiquement à l'ouverture, et le ferme à la fermeture du dialogue. Sans clavier physique vous pouvez aussi configurer l'agent.
Mode Web Kiosk
Lance le navigateur sur une URL configurable avec :
- Navigation basée sur allowlist — seuls les domaines autorisés se chargent ; le reste redirige vers l'URL d'accueil.
- Boutons flottants Back, Reload et Home en bas à gauche.
- Bloque les ouvertures de nouvelle onglet/fenêtre — tous les liens s'ouvrent dans la même vue.
Mode Playlist
Joue le slideshow de vidéos/images géré depuis le panneau web.
- Les fichiers sont téléchargés automatiquement sur le disque local.
- Vérification CRC32 avant de marquer un fichier comme téléchargé.
- Lit depuis le cache local immédiatement au redémarrage — pas besoin de connexion serveur pour démarrer.
- Plein écran, edge-to-edge — sans barre d'état ni boutons.
- S'adapte automatiquement à n'importe quelle résolution (SD, FHD, 4K) sans redémarrage.
Logs
Les logs de l'agent sont persistés localement et envoyés au serveur à chaque heartbeat. Pour les voir :
- Localement :
tail -f /tmp/kiosk.logen SSH. - Depuis le panneau : Appareils → ligne de l'appareil → Actions → Logs.
Mises à jour
Les mises à jour se font en relançant le même installateur one-liner que vous avez utilisé pour installer. Quand il détecte /opt/promobrowser/.git, il fait git fetch + reset --hard origin/main, réapplique les paquets système (idempotent via apt-get install -y) et réécrit l'unit systemd. Puis vous redémarrez le service :
curl -fsSL https://rds.digitalsignagerds.com/install.sh | sudo bash
sudo systemctl restart kiosk-browser
L'installateur ne redémarre pas le service automatiquement — faites-le vous-même avec
systemctl restartaprès la mise à jour.
Configuration réseau
Le menu admin (5 taps en haut à gauche) inclut un onglet Network avec :
État actuel
Panneau monospace en haut, auto-rafraîchi toutes les 5 secondes. Affiche, pour chaque interface connectée :
- Nom et type (ethernet / wifi)
- Nom du profil NetworkManager
- IP, masque, passerelle, DNS
WiFi
- Scan again — rafraîchit la liste des réseaux disponibles (
nmcli device wifi rescan). - Tableau avec SSID, signal % et type de sécurité. Le réseau actuellement utilisé apparaît marqué ✓ en vert.
- Connect — sélectionnez un réseau dans le tableau et appuyez sur Connect. S'il est chiffré, demande un mot de passe. Appelle
nmcli device wifi connect. - Forget current network — supprime le profil du réseau WiFi actuellement actif (
nmcli connection delete).
Sur les machines sans adaptateur WiFi (kiosks purement câblés) le panneau apparaît quand même et affiche « No WiFi adapter detected » en appuyant sur Scan/Connect.
Ethernet
- Sélecteur DHCP (recommandé) / Static.
- En mode Static, les champs apparaissent :
- IP / CIDR — par ex.
192.168.1.50/24 - Gateway — par ex.
192.168.1.1 - DNS — un ou plusieurs séparés par des virgules
- IP / CIDR — par ex.
- Apply Ethernet config appelle
nmcli connection modify ipv4.method auto|manual …suivi d'un down/up du profil pour appliquer immédiatement.
Le changement peut couper brièvement votre connexion si vous êtes en SSH via le même câble. Les services du kiosk (heartbeat) se rétablissent automatiquement.
Toutes les opérations réseau sont enregistrées dans agent.log sous la catégorie NETWORK.
Dépannage fréquent
| Symptôme | Diagnostic |
|---|---|
| Écran noir au démarrage | systemctl status kiosk-browser — si actif mais rien à l'écran, essayez chvt 7. |
| Ne se connecte pas au serveur | Vérifiez Server URL et Device ID dans Settings → Server → Test Connection. |
| Les vidéos ne se lisent pas | Un paquet gstreamer manque. Réinstallez : sudo apt install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav. |
Le clavier 12345 n'ouvre pas Settings |
Le watcher X11 RECORD a besoin de python3-xlib — réinstallez le paquet. |
| Les changements du panneau n'arrivent pas | Attendez le prochain heartbeat (60 s) ; en cas de doute journalctl -u kiosk-browser -f pour voir les appels. |