Services (daynivo-kiosk-*, daynivo-network-guard, daynivo-boot-import),
programs in /usr/lib/daynivo-kiosk, folders /etc, /var/lib, /var/log and
/var/cache daynivo-kiosk*, the system user daynivo, DAYNIVO_* settings,
the plymouth theme, network profiles daynivo-eth0/wlan0, the image stage
and its first user daynivoadmin.
install.sh moves a kiosk installed up to 1.2.x over once: old services
stopped and removed, folders moved (configuration, password, browser
profile, logs) with symlinks under the old names, the voxip user renamed
with the same uid, network profiles renamed unless a change awaits
confirmation, and old leftovers removed. Tested by upgrading a configured
1.2.0 installation in a container, and running the install a second time.
Old names keep working where people type or place them: voxip-config.json,
voxip-authorized_keys, voxip-network-reset, voxip-kiosk-ctl, and
VOXIP_DEFAULT_URL / VOXIP_DEVICE_NAME for image builds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- daynivo-config.json, daynivo-authorized_keys and daynivo-network-reset
on the boot partition; errors go to daynivo-config.error.txt.
- daynivo-kiosk-ctl, with voxip-kiosk-ctl as a symlink to it.
- The voxip-* names keep working, so existing SD cards and instructions
stay valid; when both config files are present the Daynivo one is
applied last.
- Internal names (services, /etc/voxip-kiosk, user voxip) are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- .github/workflows/release.yml: a tag vX.Y.Z runs the tests, publishes
daynivo-kiosk-os-X.Y.Z.tar.gz (+ .sha256) and install-online.sh as a
Gitea release, then builds the SD image with pi-gen and attaches it.
- install-online.sh: curl | sudo bash installer for the latest release.
- voxip-kiosk-updater: checks the latest release, verifies and unpacks a
newer one under /opt/daynivo-kiosk-os and runs its update.sh. A daily
timer checks around 03:00 and installs when auto_update is on.
- Web interface: Systeem -> Software-updates with the auto-update switch,
check now and install now (helper verbs update-check / update-install).
- CI checks out with plain git, so it runs on Gitea's act_runner too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Product name (Daynivo Kiosk OS), default device name, kiosk screens,
service descriptions, installer output and docs. Internal names
(voxip-kiosk-*, /etc/voxip-kiosk, user voxip, VOXIP_* variables) stay.
An update renames a device still called "VoxIP Kiosk" to the new default.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Daynivo mark sits on a small white tile in the navy bar, where its
navy parts would otherwise disappear; the favicon is Daynivo's too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ProtectKernelTunables, ProtectKernelModules and LockPersonality imply
NoNewPrivileges for a non-root unit, so sudo refused to start the helper
(hostname, reboot, network changes all failed). Guarded by a test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>