Skip to content

Commit fe7aee9

Browse files
authored
Professionalize kiosk installer (#1)
Modularize the Debian 13 Raspberry Pi kiosk installer, add managed migrations and optional wallpaper setup, harden browser transitions, and add automated validation.
1 parent 192e6d0 commit fe7aee9

22 files changed

Lines changed: 2141 additions & 1179 deletions

.gitattributes

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
*.sh text eol=lf
2+
templates/rpi-kiosk-* text eol=lf
3+
templates/cec/rpi-kiosk-cec text eol=lf
4+
*.service text eol=lf
5+
*.toml text eol=lf
6+
*.plymouth text eol=lf
7+
*.script text eol=lf
8+
*.md text eol=lf
9+
*.png binary

.github/workflows/ci.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Installer validation
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
permissions:
8+
contents: read
9+
10+
jobs:
11+
validate:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Install ShellCheck
17+
run: sudo apt-get update && sudo apt-get install -y shellcheck
18+
19+
- name: Run ShellCheck
20+
run: |
21+
shellcheck -x \
22+
kiosk_setup.sh \
23+
templates/rpi-kiosk-browser \
24+
templates/rpi-kiosk-netwatch \
25+
templates/cec/rpi-kiosk-cec \
26+
tests/test.sh
27+
28+
- name: Run installer tests
29+
run: bash tests/test.sh

README.md

Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,81 @@
1-
# Raspberry Pi KIOSK - Alu-Technika Kft.
2-
- www.alutechnika.hu
1+
# Raspberry Pi KIOSK – Alu-Technika Kft.
2+
3+
Gyorsan telepíthető és biztonságosan újrafuttatható kioszkrendszer Raspberry Pi 4 gépekhez.
4+
5+
## Támogatott célrendszer
6+
7+
- Raspberry Pi 4
8+
- Raspberry Pi OS / Debian 13 (Trixie), Desktop
9+
- Wayland és labwc
10+
- 1920×1080-as HDMI-monitor
11+
12+
## Gyors telepítés
13+
14+
A telepítő ideiglenes könyvtárba klónozza a projektet. A futás végén a teljes forráskönyvtár automatikusan törlődik:
15+
16+
```bash
17+
tmpdir="$(mktemp -d)" && (
18+
set -e
19+
trap 'cd ~; rm -rf "$tmpdir"' EXIT
20+
21+
echo "TEMP mappa: $tmpdir"
22+
git clone --depth 1 https://github.com/MISIKEX/rpi-kiosk-core.git "$tmpdir"
23+
cd "$tmpdir"
24+
25+
chmod +x kiosk_setup.sh
26+
./kiosk_setup.sh
27+
)
28+
```
29+
30+
Ugyanez a parancs később újra futtatható. A telepítő a saját fájljait és megjelölt konfigurációs blokkjait frissíti, nem készít duplikált bejegyzéseket.
31+
32+
## Működés
33+
34+
A normál, aktív nézet a helyi kezelőpanel. A `swayidle` figyeli a felhasználói aktivitást:
35+
36+
- egér- vagy billentyűaktivitáskor a kezelőpanel indul;
37+
- az alapértelmezett 20 másodperces inaktivitás után az inaktív KIOSK oldal indul;
38+
- az új nézet előbb megjelenik, és csak utána áll le a régi Chromium-folyamat;
39+
- a két nézet külön böngészőprofilt használ, így a kezelőpanel állapota nem keveredik az inaktív oldallal;
40+
- zárolás és PID-ellenőrzés akadályozza meg a párhuzamos vagy idegen Chromium-folyamatok leállítását.
41+
- a Raspberry Pi OS saját képernyőblankolása letiltásra kerül, hogy az inaktív KIOSK oldal folyamatosan látható maradjon.
42+
43+
## Választható modulok
44+
45+
- APT csomaglista és rendszerfrissítés
46+
- labwc / Wayland
47+
- Chromium kioszk mód
48+
- greetd autologin
49+
- work/idle URL-váltás
50+
- hálózatra várás
51+
- egérkurzor elrejtése
52+
- Alu-Technika háttérkép
53+
- Alu-Technika Plymouth splash
54+
- 1080p kijelzőmód és forgatás
55+
- HDMI-hang
56+
- HDMI-CEC távirányító
57+
- internet-watchdog automatikus újraindítással
58+
59+
## Tartósan telepített elemek
60+
61+
A TEMP könyvtár törlődik. Csak a működéshez szükséges, név szerint kezelt elemek maradnak:
62+
63+
- `/etc/rpi-kiosk/` – kioszkbeállítások
64+
- `/var/lib/rpi-kiosk/` – minimális állapot és visszaállítási információ
65+
- `/usr/local/bin/rpi-kiosk-*` – futó segédprogramok
66+
- `/usr/local/share/rpi-kiosk/` – telepített grafikai elemek
67+
- `/etc/systemd/system/rpi-kiosk-*.service` – választható szolgáltatások
68+
- `~/.config/labwc/` – megjelölt, duplikációmentes labwc-blokkok
69+
- `~/.local/state/rpi-kiosk/chromium/` – elkülönített work/idle Chromium-profilok
70+
71+
Sikertelen telepítési lépésnél a hiba részletei a `~/rpi-kiosk-install-error.log` fájlba kerülnek. Sikeres telepítés nem hagy telepítési naplót.
72+
73+
## Fejlesztés és ellenőrzés
74+
75+
```bash
76+
bash tests/test.sh
77+
```
78+
79+
A teszt ellenőrzi a Bash-szintaxist, a kezelt blokkok ismételt frissítését, a bootparaméter-kezelő függvényeket és a hibakódok továbbadását.
80+
81+
Részletes felépítés: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).

docs/ARCHITECTURE.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Telepítőarchitektúra
2+
3+
## Tervezési célok
4+
5+
1. Egyetlen, TEMP-be klónozható belépési pont.
6+
2. Gyors telepítés: a csomagok egy összevont APT-lépésben kerülnek fel.
7+
3. Biztonságos újrafuttatás: saját fájlok és megjelölt blokkok felülírása.
8+
4. Valódi hibakezelés: minden háttérfolyamat kilépési kódja ellenőrzött.
9+
5. Moduláris bővíthetőség.
10+
6. A kezelőpanel és az inaktív KIOSK nézet gyors, sorosított váltása.
11+
7. A Raspberry Pi OS saját kijelzőblankolásának kikapcsolása, hogy az idle oldal folyamatosan látható maradjon.
12+
13+
## Könyvtárak
14+
15+
```text
16+
kiosk_setup.sh Interaktív vezérlő és telepítési sorrend
17+
lib/core.sh Naplózás, kérdések, validáció, fájlműveletek
18+
modules/packages.sh APT-csomagok
19+
modules/session.sh labwc, seatd, greetd/LightDM
20+
modules/browser.sh Chromium-konfiguráció és policy
21+
modules/appearance.sh háttér, splash, kurzor, labwc autostart
22+
modules/hardware.sh bootparaméterek, kijelző, hang, CEC
23+
modules/netwatch.sh internet-watchdog
24+
templates/ telepített futó fájlok és systemd egységek
25+
tests/test.sh helyi statikus és funkcionális ellenőrzés
26+
```
27+
28+
## Telepítési életciklus
29+
30+
```text
31+
preflight
32+
→ összes válasz begyűjtése
33+
→ URL- és értékvalidálás
34+
→ terv megjelenítése
35+
→ felhasználói jóváhagyás
36+
→ egyesített csomagtelepítés
37+
→ modulok alkalmazása
38+
→ systemd- és fájlellenőrzés
39+
→ opcionális reboot
40+
```
41+
42+
Rendszermódosítás nem történik addig, amíg az összes kérdésre nincs érvényes válasz, és a felhasználó nem hagyta jóvá az összegzést.
43+
44+
## Kezelt konfigurációk
45+
46+
A megosztott konfigurációs fájlokban a telepítő ezt a blokkot használja:
47+
48+
```text
49+
# RPI_KIOSK_MANAGED_BEGIN
50+
...
51+
# RPI_KIOSK_MANAGED_END
52+
```
53+
54+
Újrafuttatáskor a teljes korábbi blokk törlődik, majd az új állapot egyszer kerül be. A régi `KIOSKPARANCS` blokkokat a migráció automatikusan eltávolítja.
55+
56+
A teljesen saját fájlok `rpi-kiosk-*` néven kerülnek telepítésre, ezért pontosan azonosíthatók és biztonságosan frissíthetők.
57+
58+
A böngészővezérlő külön work és idle profilt használ. Váltáskor az új nézet
59+
előbb elindul, majd a korábbi, PID-del azonosított folyamat szabályosan leáll.
60+
A művelet `flock` zárolást használ, így az egymásra futó idle/resume események
61+
sorban hajtódnak végre.
62+
63+
## Új modul hozzáadása
64+
65+
Egy új modul:
66+
67+
1. a `modules/` könyvtárban kapjon külön fájlt;
68+
2. csak a saját, `rpi-kiosk-*` nevű fájljait kezelje;
69+
3. legyen engedélyezési és kikapcsolási útvonala;
70+
4. újrafuttatáskor ne készítsen második konfigurációt vagy szolgáltatást;
71+
5. az alkalmazás után ellenőrizze a létrehozott fájlokat/szolgáltatásokat;
72+
6. a szükséges csomagokat a `build_package_list` függvényhez adja hozzá;
73+
7. kapjon szintaktikai vagy funkcionális tesztet.

kiosk-telepites.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
### 🖥️ Kiosk Mód Telepítése
1+
# KIOSK mód telepítése
22

3-
Használd az alábbi parancsot a Kiosk mód automatikus telepítéséhez. A szkript egy ideiglenes könyvtárban dolgozik, így nem hagy szemetet a rendszerben:
3+
Normál felhasználóként futtasd az alábbi parancsot. A telepítő csak a szükséges műveleteknél kér `sudo` jogosultságot.
44

55
```bash
66
tmpdir="$(mktemp -d)" && (
@@ -15,3 +15,7 @@ tmpdir="$(mktemp -d)" && (
1515
./kiosk_setup.sh
1616
)
1717
```
18+
19+
A források a futás végén automatikusan törlődnek. Módosítás vagy új modul beállítása esetén ugyanaz a parancs újra futtatható: a telepítő felülírja a saját fájljait, és lecseréli a korábban megjelölt konfigurációs blokkokat.
20+
21+
Az alapértelmezett célrendszer Raspberry Pi 4, Debian 13/Trixie Desktop, labwc/Wayland és 1920×1080-as HDMI-monitor.

0 commit comments

Comments
 (0)