Rename every remaining voxip name to daynivo, with a one-time migration
CI / test-bookworm (push) Successful in 29s
CI / test-latest (push) Successful in 31s

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>
This commit is contained in:
rothmanandClaude Opus 5.5 committed 2026-11-05 23:58:03 +01:00
1 parent 6733aacb6e
commit eb0242c182
68 files changed
+527 -424

No files matched your search

@@ -1,8 +1,8 @@
[Unit]
Description=Daynivo configuratie en SSH-sleutels importeren vanaf de bootpartitie
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
Documentation=file:///usr/share/doc/daynivo-kiosk/README.md
After=local-fs.target
Before=voxip-kiosk-manager.service voxip-kiosk-browser.service ssh.service
Before=daynivo-kiosk-manager.service daynivo-kiosk-browser.service ssh.service
ConditionPathExistsGlob=|/boot/firmware/daynivo-config.json
ConditionPathExistsGlob=|/boot/firmware/daynivo-authorized_keys
ConditionPathExistsGlob=|/boot/daynivo-config.json
@@ -15,7 +15,7 @@ ConditionPathExistsGlob=|/boot/voxip-authorized_keys
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/lib/voxip-kiosk/voxip-kiosk-helper boot-import
ExecStart=/usr/lib/daynivo-kiosk/daynivo-kiosk-helper boot-import
[Install]
WantedBy=multi-user.target
@@ -1,18 +1,18 @@
[Unit]
Description=Daynivo Kiosk agent (navigatie, offlinepagina, verversen)
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
After=voxip-kiosk-browser.service
Documentation=file:///usr/share/doc/daynivo-kiosk/README.md
After=daynivo-kiosk-browser.service
[Service]
Type=simple
User=kiosk
Group=kiosk
RuntimeDirectory=voxip-kiosk-agent
RuntimeDirectory=daynivo-kiosk-agent
RuntimeDirectoryMode=0755
ExecStart=/usr/lib/voxip-kiosk/voxip-kiosk-agent
ExecStart=/usr/lib/daynivo-kiosk/daynivo-kiosk-agent
Restart=always
RestartSec=5
SyslogIdentifier=voxip-kiosk-agent
SyslogIdentifier=daynivo-kiosk-agent
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
+36
View File
@@ -0,0 +1,36 @@
[Unit]
Description=Daynivo Kiosk Chromium
Documentation=file:///usr/share/doc/daynivo-kiosk/README.md
Requires=daynivo-kiosk-x.service
After=daynivo-kiosk-x.service daynivo-boot-import.service
# Restarting or stopping X restarts/stops the browser as well.
PartOf=daynivo-kiosk-x.service
# A crash loop stops after 6 starts in 10 minutes; the healthcheck logs it
# and retries after a cool-down (see daynivo-kiosk-healthcheck).
StartLimitIntervalSec=600
StartLimitBurst=6
[Service]
Type=simple
User=kiosk
Group=kiosk
Environment=DISPLAY=:0
Environment=XAUTHORITY=/run/daynivo-kiosk-x/Xauthority
Environment=HOME=/home/kiosk
RuntimeDirectory=daynivo-kiosk-browser
RuntimeDirectoryMode=0755
StateDirectory=daynivo-kiosk-browser
StateDirectoryMode=0700
ExecStart=/usr/lib/daynivo-kiosk/daynivo-kiosk-browser
# daynivo-kiosk-browser exits 1 after a crash when browser_restart is on, 0 when it is off.
Restart=on-failure
RestartSec=5
TimeoutStopSec=15
KillMode=control-group
OOMScoreAdjust=-100
LogRateLimitIntervalSec=30s
LogRateLimitBurst=300
SyslogIdentifier=daynivo-kiosk-browser
[Install]
WantedBy=multi-user.target
+11
View File
@@ -0,0 +1,11 @@
[Unit]
Description=Daynivo Kiosk healthcheck
Documentation=file:///usr/share/doc/daynivo-kiosk/README.md
[Service]
Type=oneshot
RuntimeDirectory=daynivo-kiosk-health
RuntimeDirectoryPreserve=yes
ExecStart=/usr/lib/daynivo-kiosk/daynivo-kiosk-healthcheck
SyslogIdentifier=daynivo-kiosk-healthcheck
TimeoutStartSec=60
@@ -1,27 +1,27 @@
[Unit]
Description=Daynivo Kiosk Manager (webbeheer)
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
After=network.target voxip-boot-import.service
Documentation=file:///usr/share/doc/daynivo-kiosk/README.md
After=network.target daynivo-boot-import.service
StartLimitIntervalSec=300
StartLimitBurst=10
[Service]
Type=simple
User=voxip
Group=voxip
User=daynivo
Group=daynivo
# systemd-journal: read logs; video: vcgencmd (voltage/throttling)
SupplementaryGroups=systemd-journal video
ExecStart=/usr/lib/voxip-kiosk/voxip-kiosk-manager
ExecStart=/usr/lib/daynivo-kiosk/daynivo-kiosk-manager
Restart=always
RestartSec=3
UMask=0027
LogsDirectory=voxip-kiosk
LogsDirectory=daynivo-kiosk
LogsDirectoryMode=0750
SyslogIdentifier=voxip-kiosk-manager
SyslogIdentifier=daynivo-kiosk-manager
# No NoNewPrivileges/ProtectSystem/ProtectHome: the helper started through
# "sudo -n voxip-kiosk-helper" inherits this unit's mount namespace and must
# "sudo -n daynivo-kiosk-helper" inherits this unit's mount namespace and must
# be able to write /etc (hostname, NetworkManager profiles). The web process
# itself runs unprivileged as user voxip and can only write its own dirs.
# itself runs unprivileged as user daynivo and can only write its own dirs.
# Also no ProtectKernelTunables/ProtectKernelModules/LockPersonality,
# RestrictSUIDSGID, SystemCall*, ...: for a non-root unit those imply
# NoNewPrivileges, and sudo then refuses to run (tests/test_units.py).
@@ -1,11 +1,11 @@
[Unit]
Description=Daynivo Kiosk OS: controleren op updates (en installeren als dat aan staat)
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
Documentation=file:///usr/share/doc/daynivo-kiosk/README.md
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/lib/voxip-kiosk/voxip-kiosk-updater --auto
ExecStart=/usr/lib/daynivo-kiosk/daynivo-kiosk-updater --auto
TimeoutStartSec=1h
SyslogIdentifier=voxip-kiosk-updater
SyslogIdentifier=daynivo-kiosk-updater
File renamed without changes.
@@ -1,6 +1,6 @@
[Unit]
Description=Daynivo Kiosk X-server (vt7)
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
Documentation=file:///usr/share/doc/daynivo-kiosk/README.md
After=systemd-user-sessions.service systemd-logind.service
Conflicts=getty@tty7.service
StartLimitIntervalSec=600
@@ -20,10 +20,10 @@ StandardOutput=journal
StandardError=journal
UtmpIdentifier=tty7
UtmpMode=user
RuntimeDirectory=voxip-kiosk-x
RuntimeDirectory=daynivo-kiosk-x
RuntimeDirectoryMode=0700
ExecStartPre=+/usr/bin/chvt 7
ExecStart=/usr/lib/voxip-kiosk/voxip-kiosk-x
ExecStart=/usr/lib/daynivo-kiosk/daynivo-kiosk-x
Restart=always
RestartSec=3
@@ -1,6 +1,6 @@
[Unit]
Description=Daynivo netwerkherstel bij opstarten (rollback en noodreset)
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
Documentation=file:///usr/share/doc/daynivo-kiosk/README.md
DefaultDependencies=no
After=local-fs.target
Before=NetworkManager.service network-pre.target shutdown.target
@@ -10,7 +10,7 @@ Conflicts=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/lib/voxip-kiosk/voxip-kiosk-helper network-boot-guard
ExecStart=/usr/lib/daynivo-kiosk/daynivo-kiosk-helper network-boot-guard
[Install]
WantedBy=multi-user.target
-36
View File
@@ -1,36 +0,0 @@
[Unit]
Description=Daynivo Kiosk Chromium
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
Requires=voxip-kiosk-x.service
After=voxip-kiosk-x.service voxip-boot-import.service
# Restarting or stopping X restarts/stops the browser as well.
PartOf=voxip-kiosk-x.service
# A crash loop stops after 6 starts in 10 minutes; the healthcheck logs it
# and retries after a cool-down (see voxip-kiosk-healthcheck).
StartLimitIntervalSec=600
StartLimitBurst=6
[Service]
Type=simple
User=kiosk
Group=kiosk
Environment=DISPLAY=:0
Environment=XAUTHORITY=/run/voxip-kiosk-x/Xauthority
Environment=HOME=/home/kiosk
RuntimeDirectory=voxip-kiosk-browser
RuntimeDirectoryMode=0755
StateDirectory=voxip-kiosk-browser
StateDirectoryMode=0700
ExecStart=/usr/lib/voxip-kiosk/voxip-kiosk-browser
# voxip-kiosk-browser exits 1 after a crash when browser_restart is on, 0 when it is off.
Restart=on-failure
RestartSec=5
TimeoutStopSec=15
KillMode=control-group
OOMScoreAdjust=-100
LogRateLimitIntervalSec=30s
LogRateLimitBurst=300
SyslogIdentifier=voxip-kiosk-browser
[Install]
WantedBy=multi-user.target
-11
View File
@@ -1,11 +0,0 @@
[Unit]
Description=Daynivo Kiosk healthcheck
Documentation=file:///usr/share/doc/voxip-kiosk/README.md
[Service]
Type=oneshot
RuntimeDirectory=voxip-kiosk-health
RuntimeDirectoryPreserve=yes
ExecStart=/usr/lib/voxip-kiosk/voxip-kiosk-healthcheck
SyslogIdentifier=voxip-kiosk-healthcheck
TimeoutStartSec=60