Releases on Gitea, one-line installer and auto-update (1.1.0)

- .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>
This commit is contained in:
rothmanandClaude Opus 5.5 committed 2026-11-05 19:30:34 +01:00
1 parent 33ef898fcc
commit f8303754f7
25 files changed
+899 -20

No files matched your search

+60 -4
View File
@@ -23,8 +23,9 @@ hardware staat in [`docs/HARDWARE-TEST.md`](docs/HARDWARE-TEST.md).
### Optie A — kant-en-klare image
1. Bouw de image (zie hieronder) of gebruik een uitgebrachte
`*-daynivo-kiosk-os-*.img.xz`.
1. Download de nieuwste `*-daynivo-kiosk-os-*.img.xz` bij de
[releases](https://git.rothman.nl/rothman/daynivo-kiosk-os/releases),
of bouw hem zelf (zie hieronder).
2. Schrijf hem met **Raspberry Pi Imager** (*Eigen image gebruiken*) of
**balenaEtcher** naar een microSD-kaart van 16 GB of groter.
3. Optioneel, in Raspberry Pi Imager → *OS-aanpassingen*: wifi, gebruiker
@@ -44,8 +45,17 @@ Vereist: Raspberry Pi OS Lite Bookworm of Trixie met NetworkManager (de
standaard sinds Bookworm).
```bash
sudo apt-get install -y git
git clone <url-van-deze-repository> daynivo-kiosk-os
curl -fsSL https://daynivo.nl/kiosk/install.sh | sudo bash -s -- \
--url "https://schermen-ijsselflat.voxip.nl" --name "IJsselflat" --hostname ijsselflat
```
`install-online.sh` (dat is wat daynivo.nl serveert, en het hangt ook bij
elke release) haalt de nieuwste release op, controleert de SHA-256, pakt hem
uit in `/opt/daynivo-kiosk-os/<versie>` en draait daar `install.sh`. Git is
niet nodig. Vanuit een clone kan het ook:
```bash
git clone https://git.rothman.nl/rothman/daynivo-kiosk-os.git
cd daynivo-kiosk-os
sudo ./install.sh --url "https://schermen-ijsselflat.voxip.nl" --name "IJsselflat" --hostname ijsselflat
```
@@ -60,6 +70,23 @@ de Daynivo-repository)? Dan neemt `install.sh` de display-URL (inclusief
### Updaten
In de webinterface onder **Systeem → Software-updates**: *Nu controleren*,
*Bijwerken naar …*, en het vinkje **Automatisch bijwerken**. Elke nacht
tussen 03:00 en 05:00 (`voxip-kiosk-update.timer`) kijkt de kiosk of er een
nieuwe release is; met het vinkje aan installeert hij die meteen. Dat werkt
ook op een apparaat dat met de image of vanuit een clone is geïnstalleerd.
Vanaf de commandoregel:
```bash
sudo /usr/lib/voxip-kiosk/voxip-kiosk-updater --check # alleen kijken
sudo /usr/lib/voxip-kiosk/voxip-kiosk-updater --install # nieuwste release installeren
```
De updater installeert alleen een nieuwere versie met een kloppende
checksum, pakt hem uit in `/opt/daynivo-kiosk-os/<versie>` (de laatste twee
blijven bewaard) en draait daar `update.sh --no-pull`. Vanuit een clone kan
het ook met git:
```bash
cd daynivo-kiosk-os
sudo ./update.sh # git pull --ff-only + back-up van /etc/voxip-kiosk + install.sh --upgrade
@@ -117,6 +144,34 @@ bouwen zijn. Er bestaat geen snapshot-archief voor Raspberry Pi OS, dus
twee builds op verschillende dagen kunnen nieuwere pakketversies bevatten.
Bewaar voor een uitrol daarom de gebouwde `.img.xz` zelf.
## Releases
Een release maak je door `VERSION` te verhogen, te committen en een tag met
hetzelfde nummer te pushen:
```bash
echo 1.2.0 > VERSION && git commit -am "Release 1.2.0"
git tag v1.2.0 && git push && git push origin v1.2.0
```
Gitea Actions (`.github/workflows/release.yml`) draait dan de tests en maakt
een release met `daynivo-kiosk-os-<versie>.tar.gz` (+ `.sha256`) en
`install-online.sh`. Daarna bouwt dezelfde workflow het SD-image en hangt het
`.img.xz` (+ `.sha256`) aan dezelfde release; dat duurt 30 tot 90 minuten of
langer. Zodra de tar-bestanden er staan, zien de kiosks de nieuwe versie.
Vereist op de Gitea-server:
- een **act_runner** met het label `ubuntu-latest`;
- voor het image: `container.privileged: true` in de runnerconfiguratie
(pi-gen heeft loop-devices en binfmt_misc nodig) en genoeg schijfruimte
(± 15 GB tijdens het bouwen);
- de maximale bijlagegrootte (`[attachment] MAX_SIZE` in `app.ini`, in MB)
groter dan het image (± 1 GB);
- optioneel een repository-secret `RELEASE_TOKEN` (token met schrijfrecht op
de repository), als het standaardtoken van de workflow geen releases mag
maken.
## Beheer
### Webinterface — `http://<hostname>.local:8080`
@@ -164,6 +219,7 @@ journalctl -u voxip-kiosk-browser -u voxip-kiosk-agent -f
| `admin_port` | `8080` | poort van de beheerinterface |
| `admin_https` | `false` | HTTPS met zelfondertekend certificaat |
| `admin_allow_public` | `false` | ook toegang vanaf publieke IP-adressen (afgeraden) |
| `auto_update` | `false` | elke nacht een nieuwe release installeren |
Wijzigingen via de webinterface of `voxip-kiosk-ctl` worden atomair
opgeslagen, met een `.bak` van de vorige versie. Een URL-wijziging gaat in