Hej allihopa,
Jag ville dela med mig av hur jag fick en pekskärmskiosk i helskärm att fungera på min ZimaBoard 2 ansluten till en 22" pekskärm via HDMI.
Eftersom ZimaOS saknar paketchef (apt finns inte), är tricket att göra allt inuti Docker-containrar.
Min setup
ZimaBoard 2 1664 (Intel N100, 16 GB RAM)
ZimaOS v1.5.4
22" pekskärm via HDMI + USB-C→USB-A pekskärmsingång

Tillvägagångssättet
ZimaOS är Buildroot-baserat — ingen apt, ingen Xorg, inget skrivbordsmiljö. Istället kör vi en Debian-container med Xorg modesetting-drivrutin + Chromium i kiosk-läge, med /dev/dri vidarebefordrat. En separat nginx:alpine-container serverar dashboard-filerna.
Steg 1 — Lägg till din användare i docker-gruppen
Öppna webbterminalen på http://your-zima-ip:7681 och kör:
bash
sudo usermod -aG docker DITT_ANVÄNDARNAMN
Anslut sedan om SSH för att ändringen ska träda i kraft.
Steg 2 — Skapa filerna
bash
mkdir -p /DATA/AppData/kiosk/dashboard
/DATA/AppData/kiosk/Dockerfile:
text
FROM debian:bookworm-slim
RUN echo 'deb http://deb.debian.org/debian bookworm-backports main' >> /etc/apt/sources.list
RUN apt-get update && \
apt-get install -y \
xserver-xorg-core \
xserver-xorg-input-libinput \
openbox chromium \
x11-xserver-utils xinit \
fonts-noto-core && \
apt-get install -y -t bookworm-backports libgl1-mesa-dri && \
rm -rf /var/lib/apt/lists/*
COPY xorg.conf /etc/X11/xorg.conf
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
| Varför backports Mesa? Intel N100 (Alder Lake-N, PCI ID 0x46d4) stöds endast från Mesa 23.0+. Debian bookworm levererar 22.3. Backports erbjuder 25.x. |
/DATA/AppData/kiosk/xorg.conf:
text
Sektion "Enhet"
Identifierare "Intel"
Drivrutin "modesetting"
Alternativ "AccelMethod" "ingen"
EndSection
Sektion "Skärm"
Identifierare "Standard"
Enhet "Intel"
EndSection
Sektion "InputDevice"
Identifierare "Touchscreen"
Drivrutin "libinput"
Alternativ "Enhet" "/dev/input/event8"
EndSection
Sektion "ServerLayout"
Identifierare "Standard"
Skärm "Standard"
Inmatningsenhet "Touchscreen" "CorePointer"
EndSection
|
Hitta ditt touch-enhetens eventnummer med: bash cat /proc/bus/input/devices | grep -A3 -i touch |
/DATA/AppData/kiosk/entrypoint.sh:
text
#!/bin/sh
Xorg :0 vt1 -s 0 -dpms -nolisten tcp &
sleep 4
export DISPLAY=:0
xset s off && xset -dpms && xset s noblank
openbox --sm-disable &
sleep 1
exec chromium \
--kiosk --no-sandbox --disable-gpu \
--disable-dev-shm-usage \
--touch-events=enabled \
--no-first-run --disable-infobars \
"${KIOSK_URL:-http://localhost:8888}"
/DATA/AppData/kiosk/nginx.conf:
text
server {
listen 8888;
root /usr/share/nginx/html;
index index.html;
}
Lägg dina dashboard HTML/CSS/JS-filer i /DATA/AppData/kiosk/dashboard/.

Steg 3 — Bygg och Kör
Bygg (notera: docker build behöver --config /tmp på ZimaOS):
bash
docker --config /tmp build -t kiosk:latest /DATA/AppData/kiosk
Dashboard webbserver:
bash
docker --config /tmp run -d \
--name dashboard-server \
--restart unless-stopped \
--network host \
-v /DATA/AppData/kiosk/dashboard:/usr/share/nginx/html:ro \
-v /DATA/AppData/kiosk/nginx.conf:/etc/nginx/conf.d/default.conf:ro \
nginx:alpine
Kioskdisplay:
bash
docker --config /tmp run -d \
--name jarvis-kiosk \
--restart unless-stopped \
--privileged \
--network host \
-e KIOSK_URL=http://localhost:8888 \
-v /DATA/AppData/kiosk/xorg.conf:/etc/X11/xorg.conf:ro \
-v /DATA/AppData/kiosk/entrypoint.sh:/entrypoint.sh:ro \
-v /run/udev:/run/udev:ro \
kiosk:latest
Båda containrarna har --restart unless-stopped så de överlever omstarter automatiskt.
Touchskärmsklick-fix (viktigt!)
Xorg:s libinput mappar touch som pekare (mus) händelser. Chromium tillämpar sedan en liten rörelsetröskel för klick — även en 1px fingerförskjutning förhindrar att det utlöses. Om din dashboard använder onclick-hanterare, lägg till denna JS för att ersätta dem med pointerup + en 20px tröskel:
js
(funktion touchFix() {
const downs = {};
document.addEventListener('pointerdown', e => {
downs[e.pointerId] = { x: e.clientX, y: e.clientY };
}, { passive: true });
funktion isTap(e) {
const d = downs[e.pointerId];
returnera !d || (Math.abs(e.clientX - d.x) < 20 && Math.abs(e.clientY - d.y) < 20);
}
funktion run(fn) { försök { ny Function(fn)(); } fånga(ex) {} }
funktion patchButtons(root) {
root.querySelectorAll('button[onclick]').forEach(btn => {
const oc = btn.getAttribute('onclick');
btn.removeAttribute('onclick');
btn.addEventListener('pointerup', e => { e.stopPropagation(); om (isTap(e)) run(oc); });
});
}
window.addEventListener('load', () => {
document.querySelectorAll('.widget[onclick]').forEach(el => {
const oc = el.getAttribute('onclick');
el.removeAttribute('onclick');
el.addEventListener('pointerup', e => { om (isTap(e) && !e.target.closest('button')) run(oc); });
});
patchButtons(document.body);
});
ny MutationObserver(muts => muts.forEach(m =>
m.addedNodes.forEach(n => { om (n.nodeType === 1) patchButtons(n); })
)).observe(document.body, { childList: true, subtree: true });
})();
Lägg också till i din CSS för att dölja muspekaren på en pekskärm:
css
{ cursor: none !important; touch-action: manipulation; }

Felsökning
| Problem | Åtgärd |
| docker build misslyckas med okänd flagga | Använd docker --config /tmp build … |
| Svart skärm / Grundläggande utgångstest misslyckades | Använd Xorg modesetting, inte Wayland/cage |
| Mesa stöder inte N100 | Installera libgl1-mesa-dri från bookworm-backports |
| Pekskärmsinmatning upptäcks inte | Kontrollera händelsenummer med /proc/bus/input/devices, uppdatera xorg.conf |
| Instrumentpanelen visar ZimaOS-inloggning | Port 80 används av ZimaOS — använd en annan port (888 fungerar) |
Min alltid aktiva Home Assistant-lösning (Svara)
Jag byggde en energieffektiv home assistant-lösning som är tillgänglig dygnet runt utan att min huvuddator drar ström hela tiden. Hemligheten är en Zima som fungerar som den alltid aktiva hjärnan, medan min fulla PC sover i viloläge tills den verkligen behövs.
Huvud-PC:n
Här är vad som finns i den primära maskinen:
CPU: AMD Ryzen 9 9950X3D
Moderkort: ASUS ROG Crosshair X870E Glacial
RAM: Acer Predator Hermes RGB DDR5 96GB (2×48GB) 6000MHz CL28
Lagring: Crucial T710 4TB NVMe M.2 PCIe 5.0 Gen5
GPU (Spel): ASUS ROG Astral GeForce RTX 5080 16GB
GPU (AI): Intel Arc Pro B70 32GB (väntar på lansering)
PSU: Corsair RM1200x
Chassi: Thermaltake Tower 900
Zima-uppsättningen (Den alltid påslagna hubben)
Zima körs 24/7 och hanterar allt lättviktigt — hemassistentuppgifter, kameraflöden och grundläggande AI-frågor med Groq gratisnivå via molnet.
Anslutna kringutrustningar direkt till Zima:
Pisichen 22" pekskärmsmonitor via HDMI → miniDP-adapter + en USB-C-kabel för pekinmatning
Edifier G1000 II högtalare via extern USB-A till 3,5 mm ljudkort
DAMAO DGM20S mikrofon via USB-A
Lagring:
Seagate IronWolf Pro 20TB — ”svarta hålet” NAS-enhet
Seagate IronWolf Pro 1TB — huvud-NAS-enhet
Nätverk:
Zima ansluten till routern via Ethernet
Andra Ethernet-kabeln går direkt från Zima till PC:n för snabba lokala överföringar

Den smarta delen: Wake-on-LAN
Här är magin — när någon ställer en fråga som är för komplex för att Gemini ska hantera bra, skickar Zima ett Wake-on-LAN-paket för att väcka huvud-PC:n ur viloläge. När den är igång ansluter den till en lokal 70B parameter LLM som körs på Intel Arc Pro B70. När uppgiften är klar går PC:n tillbaka till viloläge.
Resultatet: en hemassistent som alltid är lyhörd, men den stora riggen vaknar bara när det verkligen är tungt arbete som ska göras. Elräkningarna hålls rimliga, och jag får fortfarande tillgång till en riktigt kapabel lokal modell när jag behöver den.
Stort tack till Claude Code och Perplexity — ärligt talat, utan deras hjälp hade jag aldrig kunnat sätta ihop hela det här projektet på egen hand. De var ovärderliga genom hela processen.
Jag hoppas att denna information hjälper alla som är galna nog att ge sig på ett liknande projekt — dela gärna vidare var du vill!
Zima Kampanjnav
Mer att läsa

Självhostingsdagen 2026: Varför den 25 september tillhör självhostingsgemenskapen
Upptäck vad Self-Hosting Day 2026 är, varför den 25 september är viktig, vad människor kör på egna servrar och hur du delar din egen...

Cybersäkerhetsmånaden 2026: Hur säker är ditt digitala liv hemma?
Använd cybersäkerhetsmånaden 2026 till att granska fem lager i ditt digitala hem: identitet, enheter, nätverk, data och återställning.

Så bygger SjslTech en R36S-molnspelserver med ZimaOS
SjslTech jämför tre sätt att vara värd för ett R36S-spelbibliotek via SMB: en Windows-dator, ZimaOS som körs på ZimaBlade och en annan R36S-handkonsol. Guiden...

