Communityoplossing

Bouw een touchscreenkiosk op ZimaBoard 2 met Docker, X.Org, Chromium en een lokaal dashboard

A detailed April 2026 community tutorial for turning a ZimaBoard 2 1664 on ZimaOS 1.5.4 into a fullscreen touchscreen kiosk. The author ran Debian/X.Org/Chromium inside Docker, exposed Intel graphics and udev input, hosted the dashboard with nginx, added a touch-event workaround, and later shared photos of the working 24/7 home-assistant setup.

Deze bron is een sterk voorbeeld van het gebruik van ZimaOS als appliance-host, in plaats van te proberen de alleen-lezen-systeemlaag om te vormen tot een desktopdistributie. Omdat ZimaOS geen normale apt omgeving of ingebouwde X.Org-desktop bouwde de auteur de volledige kioskstack binnen Docker: Debian + X.Org + Chromium voor de weergave, plus een kleine nginx-container voor het lokale dashboard.

Het resultaat was een werkende 22-inch touchscreenkiosk, verbonden met een ZimaBoard 2 1664. Dit blijft een geavanceerde community-build, geen door IceWhale ondersteunde desktopmodus. Er wordt gebruikgemaakt van hostnetwerken, directe toegang tot graphics en invoer en een geprivilegieerde kioskcontainer. Gebruikers moeten de beveiligings- en apparaattoegangsafwegingen begrijpen voordat ze dit kopiëren.

Voltooid 22-inch touchscreen-kioskdashboard, verbonden met een ZimaBoard 2 en met een schermvullend aangepast homedashboard
De auteur van de bron deelde de voltooide kiosk, die als altijd beschikbaar dashboard naast de hoofd-pc draait.

De kiosk draait een desktopstack binnen Docker

Het Dockerfile uit de bron begint met Debian Bookworm Slim en installeert X.Org, libinput, Openbox, Chromium, X11-hulpprogramma's, lettertypen en Mesa. De host blijft ZimaOS; de grafische gebruikersruimte draait in de container.

Dit is precies het soort werklastisolatie dat het ZimaOS-appliancemodel wil stimuleren.

De Intel-gpu wordt beschikbaar gesteld aan de kioskcontainer

De handleiding gebruikt X.Orgs modesetting driver en geeft het Intel DRM-apparaat door aan de container. De auteur stelde specifiek vast dat de vereiste Mesa-ondersteuning Bookworm-backports nodig had voor de N100-grafische stack die door de ZimaBoard 2 werd gebruikt.

De huidige ZimaBoard 2-hardware gebruikt een Intel N150. Gebruikers die de handleiding opnieuw uitvoeren, moeten daarom de huidige Mesa-/X.Org-ondersteuning controleren in plaats van ervan uit te gaan dat de historische details over de N100 identiek zijn.

Touchinvoer komt via de input-/udev-laag van de host

Het beeldsignaal gebruikte HDMI/miniDP, terwijl de touchscreencontroller via USB was aangesloten. In de handleiding wordt /proc/bus/input/devices, koppelt het juiste eventapparaat in X.Org en deelt /run/udev zodat de container invoerapparaten kan identificeren.

ZimaBoard 2-kioskconfiguratie met touchscreenmonitor, luidsprekers en hoofd-pc in dezelfde Home Assistant-werkruimte
Het touchscreen was onderdeel van een bredere energiezuinige architectuur waarbij Zima online bleef en de krachtige hoofd-pc in de slaapstand ging totdat die nodig was.

Een aparte nginx-container serveert het dashboard

De broncode voert uit nginx:alpine op een niet-ZimaOS-poort (8888 in het voorbeeld) en koppelt de dashboardbestanden alleen-lezen. Chromium opent die lokale URL in kioskmodus.

Door een aparte webcontainer te gebruiken, kunnen de dashboardbestanden eenvoudig worden bijgewerkt zonder de grafische container opnieuw te bouwen.

Gebruik poort 80 van ZimaOS niet opnieuw voor het dashboard

In de handleiding wordt expliciet vermeld dat ZimaOS poort 80 al voor het dashboard gebruikt. Als Chromium de verkeerde pagina opent, controleer dan de poort van het aangepaste dashboard en de KIOSK_URL waarde in plaats van ZimaOS onverwacht te wijzigen.

De auteur voegde een workaround voor pointer-events toe voor tikken op het touchscreen

In het dashboard van de bron kon een kleine vingerbeweging voorkomen dat Chromium traditionele onclick handlers. De auteur verving de click-afhandeling door pointerup plus een bewegingsdrempel.

Die JavaScript-code is specifiek voor de applicatie. Moderne webinterfaces die voor aanraking zijn ontworpen, moeten de voorkeur geven aan pointer-/touchvriendelijke bedieningselementen in plaats van globaal inline uit te voeren onclick strings.

De geprivilegieerde modus is de grootste beveiligingsafweging

De bron start de kioskcontainer met --privileged. Dit biedt brede toegang tot apparaten en de hostkernel en is veel minder beperkt dan een gewone dashboardcontainer.

Als je de build reproduceert, test dan eerst of expliciete /dev/driMounts voor , input-apparaten en udev, plus beperkt toegepaste capabilities, zijn voldoende. Houd het dashboard op een vertrouwd LAN.

De bron gebruikt unless-stopped voor automatisch herstel

Zowel de nginx- als de kioskcontainer gebruiken restart: unless-stopped gedrag zodat het display na een herstart van ZimaOS terugkeert. Bewaar het Dockerfile, de X.Org-configuratie, het entrypoint en het dashboard onder persistente /DATA opslag.

Het huidige ZimaOS kan dit reproduceerbaarder verpakken met Compose

Het huidige ZimaOS ondersteunt standaardimports van Docker Compose/YAML. In plaats van meerdere lange docker run commando's kan een ervaren gebruiker beide services, herstartbeleid, apparaten, volumes en netwerken vastleggen in één gecontroleerd Compose-bestand.

Gebruik het huidige ZimaOS Compose-model.

Grote zelfgebouwde desktop-pc die naast de altijd ingeschakelde ZimaBoard 2-kiosk en de hub voor Home Assistant wordt gebruikt
Het bredere ontwerp van de auteur houdt de ZimaBoard 2 24/7 online en schakelt de energieverslindende hoofd-pc alleen in voor zwaardere workloads.

Veelgestelde vragen over de touchscreenkiosk

Moet apt of een desktopomgeving op de ZimaOS-host geïnstalleerd zijn?

Nee. De bron houdt X.Org, Openbox, Mesa en Chromium bewust binnen Docker.

Is dit een officiële desktopmodus van ZimaOS?

Nee. Het is een community-build die IceWhale met toestemming en naamsvermelding mocht delen.

Waarom vormt de kioskcontainer een groter risico dan een normale app?

De bron geeft het de geprivilegieerde modus plus directe toegang tot graphics en invoer, waardoor de Docker-isolatie afneemt.