VoxIP Kiosk OS 1.0.0: Raspberry Pi kiosk with web management
CI / test-bookworm (push) Failing after 11s
CI / test-latest (push) Successful in 1m27s

Chromium kiosk without a desktop for the Raspberry Pi 3, a Flask web
interface on port 8080 (kiosk, system and network management), a
restricted root helper, network changes with automatic rollback, a
healthcheck timer, install/update/uninstall scripts and a pi-gen image
build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rothmanandClaude Opus 5.5 committed 2026-11-04 21:38:49 +01:00
commit a33c4822bf
96 files changed
+7535

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
# VoxIP Kiosk OS: allow the kiosk X server to be started by a system service.
allowed_users=anybody
needs_root_rights=yes
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">VoxIP Kiosk Manager op %h</name>
<service>
<type>_http._tcp</type>
<port>8080</port>
<txt-record>path=/</txt-record>
</service>
</service-group>
+19
View File
@@ -0,0 +1,19 @@
{
"TranslateEnabled": false,
"PasswordManagerEnabled": false,
"AutofillAddressEnabled": false,
"AutofillCreditCardEnabled": false,
"BrowserSignin": 0,
"SyncDisabled": true,
"PromotionalTabsEnabled": false,
"MetricsReportingEnabled": false,
"SpellcheckEnabled": false,
"DefaultBrowserSettingEnabled": false,
"DefaultNotificationsSetting": 2,
"DefaultGeolocationSetting": 2,
"DownloadRestrictions": 3,
"PrintingEnabled": false,
"BackgroundModeEnabled": false,
"HideWebStoreIcon": true,
"ShowAppsShortcutInBookmarkBar": false
}
+15
View File
@@ -0,0 +1,15 @@
{
"device_name": "VoxIP Kiosk",
"url": "https://schermen-ijsselflat.voxip.nl",
"refresh_interval": 0,
"screen_always_on": true,
"screen_off_minutes": 10,
"rotation": 0,
"resolution": "auto",
"zoom": 1.0,
"browser_restart": true,
"browser_profile": "persistent",
"admin_port": 8080,
"admin_https": false,
"admin_allow_public": false
}
+11
View File
@@ -0,0 +1,11 @@
# VoxIP Kiosk OS: bounded journal, few SD-card writes.
[Journal]
Storage=persistent
SystemMaxUse=32M
SystemMaxFileSize=8M
RuntimeMaxUse=24M
MaxRetentionSec=1month
# Errors (crit and worse) are always written immediately.
SyncIntervalSec=15m
RateLimitIntervalSec=30s
RateLimitBurst=2000
+11
View File
@@ -0,0 +1,11 @@
/var/log/voxip-kiosk/*.log {
weekly
rotate 8
maxsize 2M
compress
delaycompress
missingok
notifempty
create 0640 voxip voxip
su voxip voxip
}
+4
View File
@@ -0,0 +1,4 @@
# VoxIP Kiosk OS: the web interface (user voxip) may run exactly one program
# as root: the restricted helper, which validates all of its input itself.
Defaults:voxip !requiretty
voxip ALL=(root) NOPASSWD: /usr/lib/voxip-kiosk/voxip-kiosk-helper
+4
View File
@@ -0,0 +1,4 @@
# VoxIP Kiosk OS: hardware watchdog. A hung kernel or PID 1 reboots the Pi.
[Manager]
RuntimeWatchdogSec=15s
RebootWatchdogSec=2min
+5
View File
@@ -0,0 +1,5 @@
# VoxIP Kiosk OS: compressed swap in RAM instead of a swap file on the SD card.
[zram0]
zram-size = ram / 2
compression-algorithm = zstd
swap-priority = 100