Radicale
Radicale provides a small private calendar and contacts sync server for CalDAV and CardDAV clients on phones, tablets, and desktops.
Install it from Suite Manager → Apps — once running it lives at
radicale.<your-domain> and on your Home dashboard.
What you can do
- Sync existing calendar apps — Use standard CalDAV clients instead of changing the app you already use on each device.
- Keep personal schedules private — Store calendar and contact data in your MOS runtime instead of a large cloud provider.
- Start with one private account — This package creates one htpasswd-backed Radicale user and a default calendar collection.
A self-hosted Google Calendar alternative
Radicale does the job people use Google Calendar, Google Contacts, iCloud Calendar, Outlook Calendar, iCloud Contacts, Proton Calendar, and Fastmail Calendar for, on a server you own: the same everyday task, without a subscription and without an account at a company that also keeps your data. If you arrived comparing one of these, this is the app My Own Suite installs in its place — its privacy posture below says exactly what it does and does not send anywhere.
- Google Calendar alternative
- Google Contacts alternative
- iCloud Calendar alternative
- Outlook Calendar alternative
- iCloud Contacts alternative
- Proton Calendar alternative
- Fastmail Calendar alternative
Good to know
Radicale
Private by default Privacy grade A (A is best, D is worst)Runs entirely on your machine. Nothing leaves your server unless you share it.
- Resource needs: Light resources — Radicale runs as one small service with one persistent data volume.
- Package-provided privacy notes (not independently verified by MOS): Radicale runs entirely on your own MOS server with no telemetry, storing calendar and contact collections in a local data volume.
- Use a strong app password because Radicale is exposed on its own authenticated app address.
- Back up the data volume before relying on it for important calendars or contacts.
- Client apps may still sync data to device or vendor backups depending on your phone or desktop settings.
Just want to try Radicale?
MOS is the way to grow a suite — apps installed, backed up, and updated together, all in one tailored dashboard. But if you'd rather see Radicale on its own first, we've set up a one-click deploy on Railway so you can kick the tires with nothing to install.
Install in MOS
Recommended- Yours to control — runs on your own machine or any VPS you pick — and can move anytime
- One dashboard — every app you run, in one place at your own domain
- Backups built in — back up and restore your apps in a couple of clicks
- Fully private if you want — on your own hardware, apps can stay off the public internet entirely
- Updates handled — version-pinned, health-checked, applied for you
- HTTPS and domains — trusted certificates without touching DNS records
- Apps that connect — file, calendar, and office apps work together
Try it on Railway
Good for testing- Live in minutes — deploy from a template, fill in a few setup fields
- The real thing, not a demo — the same app MOS installs, running for you
- Free trial — limited free trial for new users
- Railway account required — a third-party cloud with its own sign-up and usage billing
- Tied to Railway — MOS runs anywhere and can migrate; this deploy lives on their platform
Privacy assessment
This is the assessment behind Radicale's posture grade, exactly as it ships inside the package. It describes package version 0.4.2 and nothing else — install a different version and its own assessment travels with it. Reviewed 31 July 2026, due for reassessment by 31 January 2027.
What was reviewed
- Package — version 0.4.2, content digest
03aec2c9182d…at commit59a4e004337e - Radicale — version 3.7.6 from
docker.io/tomsquest/docker-radicalepinned at89fa44d02b13…
Deliberately outside this assessment:
- CalDAV and CardDAV client apps on phones, tablets, and desktops (for example Apple Calendar, DAVx5, Thunderbird)
- Device or vendor cloud backups configured within those client apps
Evidence
Observed Watched on the wire, in a running instance of this package.
-
The pinned tomsquest/docker-radicale 3.7.6.0 build installs only radicale, passlib[bcrypt], argon2-cffi, pytz, and ldap3 into a local venv and adds a loopback curl healthcheck; it introduces no outbound analytics, licensing, or update service. Its Dockerfile, entrypoint, and env-config helper are byte-identical to the previously reviewed 3.7.1.0 build apart from the default version string.
Source: tomsquest/docker-radicale Dockerfile at tag 3.7.6.0 · checked 2026-07-24
-
A packet capture on the Docker bridge of the built package container recorded no DNS queries and no packets to any routable address across first boot with user and calendar provisioning, idle time, authenticated and rejected CalDAV requests, an event write, a calendar export, recovery from a hard kill, and a clean restart; the only captured traffic was the test client's requests to the Radicale port plus link-local ARP and IPv6 multicast housekeeping from the kernel.
Source: tcpdump capture of the locally built package image (docker0 bridge), 2026-07-31 · checked 2026-07-31
Configured Read from the configuration MOS actually ships.
-
The MOS package projects only RADICALE_ADMIN_USERNAME, RADICALE_ADMIN_PASSWORD, and RADICALE_CALENDAR_DISPLAYNAME into the service and mounts one local data volume; it sets no analytics, update-check, external-service, or telemetry variables.
Source: apps/radicale/manifest.json
-
The package entrypoint configures htpasswd authentication with bcrypt against a local /data/users file and creates the bootstrap user, a default calendar collection named from the locally supplied RADICALE_CALENDAR_DISPLAYNAME value, and one locally generated all-day starter event on the local data volume; no upstream account or service is contacted during provisioning, and the starter event contains no identifying data beyond a random UID and the install date.
Source: apps/radicale/entrypoint.sh
-
All calendar and contact data is persisted to the single data:/data package volume, so CalDAV/CardDAV collections stay within the MOS runtime rather than any upstream store.
Source: apps/radicale/manifest.json and apps/radicale/README.md
Documented Taken from upstream documentation, policies or source.
-
Radicale 3.7.6 is a self-hosted CalDAV/CardDAV server that serves DAV over its own port and stores collections on the local filesystem; its documentation contains no mention of telemetry, usage analytics, update checks, or phone-home behaviour.
Source: Radicale project documentation (v3) · checked 2026-07-24
-
Radicale supports optional IMAP, LDAP, OAuth2, and SMTP authentication backends that would contact an external server, and 3.7.6 adds an imap_append_domain option to the IMAP backend. None are reachable in this package: the entrypoint pins auth type to htpasswd against a local file, and no manifest field exposes an alternative backend.
Source: Radicale project documentation (v3) and apps/radicale/entrypoint.sh · checked 2026-07-24
-
The docker-radicale image maintainer confirmed in writing that to his knowledge the image contains no telemetry, noting that nearly all behaviour comes from Radicale itself.
Source: tomsquest/docker-radicale issue 238, maintainer reply · checked 2026-07-31
What this review does not settle
Published rather than smoothed over. Each of these is a limit of the method, not a finding against the app.
- The 2026-07-31 packet capture covered minutes of provisioning, active use, crash recovery, and restarts; outbound behaviour on longer timers than that window is excluded by the code and build-definition review rather than by observation.
- CalDAV/CardDAV client apps may copy synced calendar and contact data into device or vendor cloud backups depending on each client's settings, which is outside the server package's control.
- The package provisions a single bootstrap Radicale user; multi-user authentication, password rotation, and DAV auto-discovery are future package work not covered by this review.
Policies read
- license — Radicale project (Kozea) · retrieved 2026-07-24
- license — Thomas Queste (tomsquest) · retrieved 2026-07-24
How this review was produced
- Method — AI-assisted review, checked by Rasmus Puls
- Model — Fable 5 (Anthropic)
- Workflow —
assess-app-privacy at
6a741118713a - Repository commit —
59a4e004337e
Technical reference
Maintained alongside the package at apps/radicale/README.md and rendered here
as-is.
Radicale MOS Package
Environment Variables
RADICALE_ADMIN_USERNAME: Required bootstrap username for the first htpasswd user.RADICALE_ADMIN_PASSWORD: Required bootstrap password for the first htpasswd user. Suite Manager stores this as a redacted app secret and materializes it only for runtime apply.RADICALE_CALENDAR_DISPLAYNAME: Display name written to the seeded default calendar’sD:displaynameprop (falls back toMy Calendarwhen unset). Applied when the collection is created, and backfilled once onto an existing collection whose props carry no displayname; a calendar the owner renamed is never touched.icalToken: Generated setup secret used in the tokenized Homepage calendar widget URL.
Volumes And Persistence
data:/data: Stores htpasswd users plus CalDAV/CardDAV collections.
Disable removes the running container while leaving the route, config, secrets, and Docker volume intact. Uninstall removes the running container, route, MOS-owned Homepage shortcut, stored config/secrets, and Docker volume.
Health Check
http://radicale:5232/
The MOS app agent maps this to the package loopback port and treats an HTTP response below 500 as healthy.
Package Behavior
- The package uses the upstream
tomsquest/docker-radicaleimage pinned by digest. entrypoint.shconfigures Radicale htpasswd authentication with bcrypt.- The entrypoint creates the configured admin user when missing.
- The entrypoint creates a default calendar collection at
/<RADICALE_ADMIN_USERNAME>/default-calendar/when missing, named fromRADICALE_CALENDAR_DISPLAYNAME. The internal iCal bridge exports exactly this collection path, so deleting and recreating the calendar under a new path breaks the Homepage widget; renaming it (adisplaynamechange) is safe. - When it creates that collection, the entrypoint also writes one all-day event (
mos-welcome.ics) dated the install day and repeating yearly (RRULE:FREQ=YEARLY). The Homepage calendar widget reports a feed with zeroVEVENT/VTODOitems as an error, so an otherwise-empty new collection would render as a broken widget; the recurrence keeps the feed non-empty in every subsequent year too. Existing collections are never touched. This is a normal CalDAV item, so an owner who deletes it and holds no other events will see the upstream empty-feed error again. - The manifest declares a Homepage calendar widget and a structured internal iCal bridge. Suite Manager keeps the bridge token and Radicale password redacted in public projections, then materializes them only while applying the app runtime and Homepage tile.
Current Limits
- This package creates one bootstrap Radicale user.
- MOS owner identity reuse, password rotation, show-once secret reveal, DAV auto-discovery, and multi-user client onboarding are future package-contract work.