Starten einer Webseite im Kiosk-Modus
Wir gehen hier von meinem Base-Image aus diesem Artikel hier aus. Alle Schritte (bis auf vielleicht der letzte mit der node.js-App) wurden durchgeführt, wir können eine ISO erstellen, die ISO startet.
Unser Ziel ist es, dass unser Debian automatisch startet, automatisch einen Benutzer einloggt, Fluxbox startet, Chromium startet und eine Webseite im Fullscreen anzeigt.
Als zusätzliche Randnotiz: Chromium wird nicht am Beenden gehindert. Das hier ist eher für Info-Screens, die keine Tastaturen angeschlossen haben – oder nur für Tastaturen, bei denen entweder ALT oder F4 nicht mehr funktionieren.
Große Teile dieses Artikels sind übrigens aus meinem Artikel Auto-Login und Starten eines Scriptes geklaut. Wenn ihr nur ein Script in der Konsolensitzung starten wollt, dann seid ihr da richtig. Wenn ihr Webseiten (oder jede andere X-Anwendung) haben wollt, gerne weiterlesen.
Sämtliche Befehle hier werden im chroot ausgeführt. Nur zum Bauen des SquashFS sowie des ISO-Images muss später das chroot verlassen werden.
Erstellen eines Benutzers
Den Benutzer nennen wir einfach „add“:
useradd -m -s /bin/bash app
Mehr wars nicht.
Aktivieren von autologin
Zuerst erstellen wir folgendes Verzeichnis:
/etc/systemd/system/[email protected]
In diesem Verzeichnis erstellen wir eine Datei override.conf
und füllen sie mit folgendem Inhalt:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin app --noclear %I 38400 linux
Was es macht – es loggt automatisch TTY1 (also die Ausgabe via Desktop, nicht über z.B. SSH) als root ein, behält den Log von vor dem Login bei, und startet mit einer Baud-Rate von 38.4000 und der Umgebungsvariable TERM auf „linux“ gesetzt die Standardshell des Benutzers.
Anschließend aktivieren wir den neu angelegten Dienst:
systemctl enable [email protected]
Nach Erstellung des Images und Boot von diesem sollte der Benutzer „app“ automatisch eingeloggt werden.
Aktivieren von autologin
Zuerst erstellen wir folgendes Verzeichnis:
/etc/systemd/system/[email protected]
In diesem Verzeichnis erstellen wir eine Datei override.conf
und füllen sie mit folgendem Inhalt:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin app --noclear %I 38400 linux
Was es macht – es loggt automatisch TTY1 (also die Ausgabe via Desktop, nicht über z.B. SSH) als root ein, behält den Log von vor dem Login bei, und startet mit einer Baud-Rate von 38.4000 und der Umgebungsvariable TERM auf „linux“ gesetzt die Standardshell des Benutzers.
Anschließend aktivieren wir den neu angelegten Dienst:
systemctl enable [email protected]
Nach Erstellung des Images und Boot von diesem sollte der Benutzer „app“ automatisch eingeloggt werden.
Nachinstallieren einer GUI
Wir haben uns, wie oben bereits angedeutet, für Fluxbox als Window-Manager und Chromium als Browser entschieden. Die installieren wir nun stumpf:
apt install xorg fluxbox chromium
Anschließend reboot
Autostart von X-Org und Fluxbox
Zwei Befehle:
echo "startx" > .bash_profile
echo "startfluxbox" > .xinitrc
Wer, wie ich, WSL nutzt, muss nun einmal ein Image erzeugen, dieses starten, und den Ordner /home/app/.fluxbox
aus dem gebootetem Image ziehen. Diesen dann in dem debootstrappten Image einspielen.
Alle anderen können einmal startx
eingeben, um sich den Ordner automatisch generieren zu lassen.
Konfiguration von Chromium
Die /home/app/.fluxbox/startup
um folgendes ergänzen:
xset s off
xset -dpms
xset s noblank
chromium --incognito --no-first-run --kiosk http://kiosk.url/pfad &
Hier natürlich den Pfad http://kiosk.url/pfad
anpassen.
Das wars
Wenn wir nun unser ISO-Image neu bauen, startet das Debian, loggt sich automatisch als User „app“ ein, startet den X-Server, dieser startet Fluxbox und dieses startet Chromium mit unserer Seite.