Calendar and contacts (CalDAV/CardDAV), ghcr.io/kozea/radicale:3.8.1. Login file written from the generated password on the first start only (R-765: rewriting it at every start lost the household's login on a restore). onboarding/radicale.md complete; bench + 9202 proven; FIRST-ADMIN, README, Hungarian freeze. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
10 KiB
Onboarding record — radicale
app: radicale opened: 2026-10-01 template_at: the commit that publishes this record (ghcr.io/kozea/radicale:3.8.1; the step 3.8.0 -> 3.8.1 proven on both venues)
0.1 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/A/A1-github-facts.txt — GPL-3.0; the project's own image, pulled, never redistributed
0.2 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/A/A1-github-facts.txt — v3.8.1 on 2026-09-24, 13 releases in 2026, 10 open issues
0.3 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/FIT.md — 3.8.0, 3.8.1 version tags; amd64, arm64, arm/v7
0.4 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — no start-time network job (the start command is ours, read in the compose); no phone-home found in the image's config or code
0.5 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/install.txt — healthy 22 s after the press with nothing fetched but the image
0.6 | n/a | Radicale serves CalDAV and CardDAV over plain HTTP on one port
0.7 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — a phone client's discovery through traefik over https: well-known 301, PROPFIND 207, the principal and the calendar list; no setup gate stands in the way
0.8 | done | app-catalog-felhom.eu/templates/radicale/.felhom.yml — tagline + use_cases: the family calendar and contacts on its own server
0.9 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/bench/radicale/evidence/MV-radicale/verdict.json — runs on the bench; no public name is read
1.1 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/G/gates-radicale.txt — image-pins and image-resolvable exit 0
1.2 | n/a | Radicale stores files, no database engine anywhere
1.3 | n/a | no MariaDB or PostgreSQL service in this template
1.4 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/bench/radicale/evidence/MV-radicale/verdict.json ; felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/step.txt — the previous release 3.8.0 seeded, stepped INTO the pin 3.8.1, read back on both venues (file storage; no migration switch exists)
1.5 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — PID 1 is radicale itself, the project's own server
1.6 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/S/S1-radicale-reads.txt — the only secret is the login; no image config ships and auth defaults to denyall; the template sets htpasswd + bcrypt from the generated password
1.7 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/S/S1-radicale-reads.txt — the image's entrypoint is radicale --hosts … with no switches; the template's own start command is the whole start-up
1.8 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — an unknown page answers 401 with no debug output
1.9 | done | app-catalog-felhom.eu/templates/radicale/docker-compose.yml — the password is NOT a data_key: the login file is written once and lives on the data volume, so a restore brings the old login back with the calendars (measured, 2.5); marking it would make a restore after a remove refuse
2.1 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/restore.txt — the seed came back from the volume backup alone after the app and its volume were removed (the persistence question answered by a restore)
2.2 | done | app-catalog-felhom.eu/templates/radicale/docker-compose.yml — one named volume (NVMe): collections/ + the login file
2.3 | n/a | needs_hdd false: no drive path to classify; the tier-1 unit holds the one volume
2.4 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — runs as uid 1000 radicale; the volume and the 0600 login file are its own
2.5 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/restore.txt — the update's per-app backup, remove keeping backups, the household's restore button, the event read back with the ORIGINAL login (attempt 1 failed here: box/radicale-attempt1/restore.txt)
2.6 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/restore.txt ; felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/remove.txt — keep-backups and with-data both delete the volume; no drive data exists
2.7 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — 92 KB after the seed; a family's calendars stay in megabytes
2.8 | n/a | Radicale stores no uploaded files: events and contacts are text, read back over CalDAV/CardDAV (2.5)
3.1 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/install.txt — class 1: the box generates the password, the login works on a fresh install (C1)
3.2 | n/a | no known default login: without the template's config Radicale lets nobody in (denyall)
3.3 | n/a | no first-run screen: every request needs the login from the first answer
3.4 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — no sign-up route; a stranger's MKCOL on a new principal answers 401
3.5 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/poll.txt — 25 stranger polls from the press: 404 until routed, then 401; never in
3.6 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — 15 wrong tries: no lock, ~1.3 s delay each (Radicale's own); the right password works at once
3.7 | done | app-catalog-felhom.eu/templates/radicale/.felhom.yml — one shared login (no user admin in Radicale); add_people says each family member uses it and makes their own calendar. Changing the password is not offered in Radicale
3.8 | done | app-catalog-felhom.eu/templates/radicale/docker-compose.yml — the password is read from the environment inside the program, never pasted into code
3.9 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — CalDAV and CardDAV clients' calls through traefik: right 207/201, wrong 401; the browser UI logs in with the same pair (S2 screenshots)
4.1 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/S/S1-radicale-reads.txt — wget is in the image (checked one tool per run); 127.0.0.1:5232/.web/
4.2 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/G/gates-radicale.txt — probe-matches-compose exit 0
4.3 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/install.txt — healthy 22 s after the press, 0 restarts
4.4 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — paused: the controller read stopped, then running after unpause
4.5 | done | app-catalog-felhom.eu/templates/radicale/docker-compose.yml — container_name: radicale, the only service
5.1 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/bench/radicale/mem-radicale.csv — bench, swap 0, from birth: peak anon ~26 MiB of 128M, 0 kills
5.2 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/bench/radicale/evidence/MV-radicale/verdict.json — 10-min watch: anon peak ~20 %, 0 kills, 0 restarts
5.3 | done | app-catalog-felhom.eu/templates/radicale/.felhom.yml — mem_limit 128M = the one service's 128M
5.4 | n/a | Radicale is a Python app, no self-sizing heap
5.5 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/S/S1-radicale-reads.txt — pi_compatible true (arm64 + arm/v7); the image is ~97 MB
6.1 | done | app-catalog-felhom.eu/scripts/upgrade_fixtures_box.py — Radicale: a calendar and an event over CalDAV, with three negative controls
6.2 | done | app-catalog-felhom.eu/templates/radicale/.felhom.yml — the first ladder step 3.8.0 -> 3.8.1, written by upgrade-test.py --write-ladder from both verdicts
6.3 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/undo/box/radicale/step.txt — a drill step to an image that exits: verifying 305 s, the box undid it by itself, 3.8.1 back, the event read back (on attempt 1's template; the undo is the box's, the start command played no part)
6.4 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/bench/radicale/evidence/MV-radicale/verdict.json — no file changes at start (no mark)
6.5 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/A/A1-github-facts.txt — plain x.y.z from v3.0 to v3.8.1
7.1 | n/a | Radicale sends no mail at all; there is nothing to map
8.1 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/G/gates-radicale.txt — copy-i18n exit 0 (frozen with --add-app)
8.2 | done | app-catalog-felhom.eu/templates/radicale/.felhom.yml — tagline, use_cases, first_steps, add_people; each step followed on 9202 (the web login, MKCALENDAR, the phone discovery calls)
8.3 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/S/S3-assets.txt — radicale-logo.svg and three screenshots answer 200 on felhom.eu; boxes get them with the next hub release (R-766)
8.4 | done | app-catalog-felhom.eu/README.md — both tables; FIRST-ADMIN row; category productivity; catalog_since
8.5 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/S/S3-assets.txt — the website's count, read
9.1 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/G/gates-radicale.txt — every gate exit 0, the runtime volume gate included
9.2 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/install.txt ; felhom.eu/documentation/audits/new-apps-2026-10-01/box/radicale/checks.txt — a fresh install from the drill catalog, as household and stranger
9.3 | done | felhom.eu/documentation/audits/new-apps-2026-10-01/README.md — every row done or n/a; the one defect found (attempt 1, 2.5) was fixed before publishing
9.4 | done | app-catalog-felhom.eu/onboarding/radicale.md — published in one commit with this record (the onboarding gate)