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 linuxCode-Sprache: JavaScript (javascript)

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 getty@tty1.serviceCode-Sprache: CSS (css)

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 linuxCode-Sprache: JavaScript (javascript)

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 getty@tty1.serviceCode-Sprache: CSS (css)

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" > .xinitrcCode-Sprache: PHP (php)

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 &Code-Sprache: JavaScript (javascript)

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.

Kategorien:Live-Systeme