Агент Linux — Эксплуатация
Служба systemd
Агент работает как kiosk-browser.service. Автоматически запускается на VT7 при старте системы, с параметром Restart=on-failure.
| Операция | Команда |
|---|---|
| Посмотреть состояние | systemctl status kiosk-browser |
| Логи в реальном времени | journalctl -u kiosk-browser -f |
| Логи приложения | tail -f /tmp/kiosk.log |
| Перезапустить | systemctl restart kiosk-browser |
| Остановить | systemctl stop kiosk-browser |
| Показать браузер | chvt 7 |
Heartbeat и интеграция с RDS
- Heartbeat каждые 60 секунд: агент регистрируется как устройство Linux и отправляет состояние.
- GPS / информация об устройстве каждые 5 минут (включает широту/долготу, uptime, дистрибутив и версию из
/etc/os-release, модель оборудования по DMI). - Отправка логов при каждом heartbeat — доступны в панели: Устройства → Действия → Логи.
- Удалённая конфигурация: при каждом heartbeat агент получает из панели актуальные режим (Web/Playlist), стартовый URL, allowlist и passcode.
- Удалённые снимки экрана: если панель запрашивает снимок через Действия → Снимок экрана, агент запускает
scrotна$DISPLAY=:0, сжимает в JPEG (качество 70) и загружает изображение, подписанное HMAC v2. Подробнее.
Геолокация (GPS + IP)
Агент определяет местоположение двумя способами, по порядку:
- Локальный gpsd (
127.0.0.1:2947) — если у вас подключён модуль GPS (USB-серийный / NMEA) и активенgpsd.socket(установщик оставляет его включённым), агент читает последнюю фиксацию сmode ≥ 2(2D / 3D). - Геолокация по IP — автоматический резервный вариант. Обращается к
https://ipwho.is/и кэширует результат на 1 час в памяти; этого достаточно для kiosk, который не перемещается.
Если оба способа не срабатывают, отправляется 0,0, и RDS трактует это как «нет фиксации» (последнее корректное значение не перезаписывается).
Подключение USB-GPS
gpsd устанавливается заранее с USBAUTO=true: подключите приёмник — больше ничего делать не нужно, следующее чтение gpsd вернёт фиксацию, как только приёмник поймает сигнал.
Поддержка сенсорных экранов
Включена по умолчанию на любой панели, которая распознаётся libinput как сенсорное устройство:
- Встроенный браузер получает настоящие события
TouchEventвместо эмулированной мыши (флаги Chromium--touch-events=enabled --enable-pinchвrun.sh). - Работает pinch-to-zoom.
- Горячий угол для Settings (5 касаний верхнего левого угла за 2 с) принимает
TouchBeginнаряду с нажатием мыши. - Экранная клавиатура: диалог настроек автоматически запускает
onboardпри открытии и закрывает его вместе с диалогом. Настроить агент можно и без физической клавиатуры.
Режим Web Kiosk
Запускает браузер по настраиваемому URL со следующими особенностями:
- Навигация на основе allowlist — загружаются только разрешённые домены; остальные перенаправляются на стартовый URL.
- Плавающие кнопки Back, Reload и Home в нижнем левом углу.
- Блокирует открытие новых вкладок и окон — все ссылки открываются в том же представлении.
Режим Playlist
Воспроизводит слайд-шоу из видео и изображений, управляемое из веб-панели.
- Файлы автоматически скачиваются на локальный диск.
- Проверка CRC32 перед тем, как отметить файл как загруженный.
- Воспроизводит из локального кэша сразу после перезапуска — для старта подключение к серверу не требуется.
- Полный экран, edge-to-edge — без строки состояния и кнопок.
- Автоматически подстраивается под любое разрешение (SD, FHD, 4K) без перезапуска.
Логи
Логи агента сохраняются локально и загружаются на сервер при каждом heartbeat. Чтобы посмотреть их:
- Локально:
tail -f /tmp/kiosk.logпо SSH. - Из панели: Устройства → строка устройства → Действия → Логи.
Обновления
Обновление выполняется повторным запуском того же однострочного установщика, который вы использовали при установке. Обнаружив /opt/promobrowser/.git, он выполняет git fetch + reset --hard origin/main, заново применяет системные пакеты (идемпотентно через apt-get install -y) и перезаписывает unit systemd. После этого перезапустите службу:
curl -fsSL https://rds.digitalsignagerds.com/install.sh | sudo bash
sudo systemctl restart kiosk-browser
Установщик не перезапускает службу автоматически — сделайте это сами командой
systemctl restartпосле обновления.
Настройка сети
Меню администратора (5 касаний верхнего левого угла) содержит вкладку Network со следующими элементами:
Текущее состояние
Моноширинная панель в верхней части, автоматически обновляемая каждые 5 секунд. Для каждого подключённого интерфейса показывает:
- Имя и тип (ethernet / wifi)
- Имя профиля NetworkManager
- IP, маску, шлюз, DNS
WiFi
- Scan again — обновляет список доступных сетей (
nmcli device wifi rescan). - Таблица с SSID, уровнем сигнала в % и типом защиты. Текущая используемая сеть отмечена зелёной ✓.
- Connect — выберите сеть в таблице и нажмите Connect. Если сеть защищена, будет запрошен пароль. Вызывает
nmcli device wifi connect. - Forget current network — удаляет профиль текущей активной сети WiFi (
nmcli connection delete).
На машинах без адаптера WiFi (полностью проводные kiosk) панель всё равно отображается и показывает «No WiFi adapter detected» при нажатии Scan/Connect.
Ethernet
- Переключатель DHCP (рекомендуется) / Static.
- В режиме Static появляются поля:
- IP / CIDR — например,
192.168.1.50/24 - Gateway — например,
192.168.1.1 - DNS — один или несколько адресов через запятую
- IP / CIDR — например,
- Apply Ethernet config вызывает
nmcli connection modify ipv4.method auto|manual …, а затем down/up профиля, чтобы применить настройки немедленно.
Изменение может ненадолго разорвать соединение, если вы подключены по SSH через тот же кабель. Службы kiosk (heartbeat) восстанавливаются автоматически.
Все сетевые операции записываются в agent.log под категорией NETWORK.
Решение частых проблем
| Симптом | Диагностика |
|---|---|
| Пустой экран при запуске | systemctl status kiosk-browser — если служба активна, но ничего не видно, попробуйте chvt 7. |
| Нет соединения с сервером | Проверьте Server URL и Device ID в Settings → Server → Test Connection. |
| Видео не воспроизводятся | Не хватает какого-то пакета gstreamer. Переустановите: sudo apt install gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav. |
Ввод 12345 не открывает Settings |
Наблюдателю X11 RECORD нужен python3-xlib — переустановите пакет. |
| Изменения из панели не доходят | Дождитесь следующего heartbeat (60 с); в случае сомнений выполните journalctl -u kiosk-browser -f, чтобы увидеть вызовы. |