28055e6bc76cf8e8c2f2f5fc3b16cb94a1d333e8
Kiosk Chromium — Debian 13 (trixie) — Dell OptiPlex 3040
Kiosk wyświetlający stronę http://instrukcje.local w Chromium na pełnym ekranie. Używa sway jako kompozytora Wayland oraz swayidle + wlopm do zarządzania energią monitora.
Wymagania
- Dell OptiPlex 3040, monitor DP lub HDMI
- Debian 13 (trixie) netinst — instalacja minimalna bez środowiska graficznego
Instalacja krok po kroku
1. Utwórz użytkownika kiosk
useradd -m -r -s /usr/sbin/nologin kiosk
usermod -aG tty,input,video,dialout kiosk
2. Zainstaluj pakiety
apt update && apt install -y \
sway swayidle wlopm wlr-randr \
chromium
cagenie obsługuje protokołuwlr-output-power-management-v1, przez cowlopmz nim nie działa — ekran można wygasić, ale nie można go wybudzić. Dlatego używamysway.
3. Skopiuj pliki konfiguracyjne
# Skrypt zarządzający kioskiem
cp kiosk-manager.sh /home/kiosk/kiosk-manager.sh
chmod +x /home/kiosk/kiosk-manager.sh
# Strona oczekiwania na sieć
cp waiting.html /home/kiosk/waiting.html
chown kiosk:kiosk /home/kiosk/waiting.html
# Konfiguracja sway
mkdir -p /home/kiosk/.config/sway
cp sway-config /home/kiosk/.config/sway/config
chown -R kiosk:kiosk /home/kiosk/.config
# Jednostka systemd
cp kiosk.service /etc/systemd/system/kiosk.service
4. Włącz i uruchom serwis
systemctl daemon-reload
systemctl enable kiosk.service
systemctl start kiosk.service
Opis plików
kiosk.service
Jednostka systemd uruchamiająca sway jako użytkownik kiosk. Ważne parametry:
| Opcja | Wartość | Opis |
|---|---|---|
PAMName=login |
login |
Dostęp do urządzeń przez logind (GPU, input) |
RuntimeDirectory=kiosk |
kiosk |
Automatycznie tworzy /run/kiosk z prawami 0700 |
XDG_RUNTIME_DIR |
/run/kiosk |
Wymagane przez sway / Wayland |
WLR_LIBSEAT_BACKEND |
logind |
Dostęp do GPU bez uprawnień roota |
IDLE_TIME |
120 |
Czas bezczynności (sekundy) przed wygaszeniem ekranu |
ExecStart |
/usr/bin/sway |
Kompozytor Wayland |
Restart=always |
— | Automatyczny restart po awarii / wyjściu Chromium |
Zmiana czasu wygaszania:
# Edytuj /etc/systemd/system/kiosk.service
Environment=IDLE_TIME=300 # 5 minut
systemctl daemon-reload
systemctl restart kiosk.service
sway-config → /home/kiosk/.config/sway/config
Minimalna konfiguracja sway:
output * bg #000000 solid_color # czarne tło
output * transform 90 # obrót monitora o 90° (usuń jeśli zbędne)
exec swayidle before-sleep "wlopm --off '*'" # wygaszenie przy sleep
exec /home/kiosk/kiosk-manager.sh # start kiosku
kiosk-manager.sh → /home/kiosk/kiosk-manager.sh
Uruchamiany przez sway przy starcie sesji. Kolejność działania:
- Uruchamia
swayidlebez flagi-w— ignoruje idle inhibitory (Chromium ustawia inhibitor Wayland;swayidle -wrespektuje go i nigdy nie wygasiłby ekranu) wlopm --off '*'po IDLE_TIME sekundach — wysyła DPMS standby przez protokółwlr-output-power-management-v1; link DP/HDMI pozostaje aktywny, więc wybudzenie jest niezawodne- Chromium startuje natychmiast z lokalnym plikiem
waiting.html(ekran oczekiwania) - Ping-loop czeka, aż
KIOSK_HOST(192.168.40.126) odpowie - Po uzyskaniu sieci: Chromium jest zamykany i restartowany z docelowym
http://instrukcje.local
Zmiana adresu IP serwera:
# W kiosk-manager.sh zmień zmienną:
KIOSK_HOST="192.168.40.126"
waiting.html → /home/kiosk/waiting.html
Lokalna strona HTML wyświetlana przez Chromium w trakcie oczekiwania na sieć. Ciemne tło, animowany spinner i pulsujący napis „Oczekiwanie na sieć...".
Zarządzanie i diagnostyka
Logi
# Ostatnie 100 linii logów serwisu
journalctl -u kiosk.service -b --no-pager -n 100 -o cat
# Śledzenie na żywo
journalctl -u kiosk.service -f
Restart / zatrzymanie
systemctl restart kiosk.service
systemctl stop kiosk.service
Sprawdzenie wyjść wideo
WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/kiosk wlr-randr
Ręczne wygaszenie / wybudzenie
WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/kiosk wlopm --off '*'
WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/kiosk wlopm --on '*'
Rozwiązywanie problemów
| Objaw | Przyczyna | Rozwiązanie |
|---|---|---|
| Serwis natychmiast się kończy | Brak /run/kiosk |
Sprawdź RuntimeDirectory=kiosk w pliku unit |
XDG_RUNTIME_DIR is not set |
Brak zmiennej środowiskowej | Upewnij się że Environment=XDG_RUNTIME_DIR=/run/kiosk jest w unit |
| Ekran się nie wygasza | Chromium blokuje idle | swayidle musi być uruchomiony bez flagi -w |
| Ekran gaśnie ale nie wraca | wlr-randr --off rozłącza link DRM |
Używaj wlopm z sway (nie wlr-randr --off) |
wlopm: Wayland server does not support... |
Kompozytor bez protokołu power-management | Zamień cage na sway |
| Czarny ekran po restarcie | Chromium trzyma zablokowany profil | rm -rf /home/kiosk/.cache/chromium && systemctl restart kiosk.service |
Description
Languages
HTML
61.5%
Shell
38.5%