7.2 KiB
title: Radicale created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, calendar, caldav, carddav, python, lightweight] confidence: high contested: false sources: [https://selfh.st/apps/?tag=calendar]
🗓️ Radicale
Le serveur CalDAV/CardDAV minimaliste en Python : pas de base de données, configuration en une ligne, parfait pour un usage familial ou un petit labo. C'est le « Pi-hole du calendrier ».
| Métadonnée | Valeur |
|---|---|
| Site web | radicale.org |
| GitHub | Kozea/Radicale |
| License | GPL-3.0 (avec exception AGPL-compat) |
| Langage | Python 3.11+ |
| Étoiles | 513 ⭐ |
| Dernière MAJ | 2026-04 (v3.2.x) |
| Catégorie | cat-calendar |
Description
Radicale est un serveur CalDAV/CardDAV minimaliste écrit en Python. Son crédo : un seul exécutable, pas de base de données (tout est stocké sur disque en fichiers .ics / .vcf ou via un backend stockage), un fichier de config lisible, et basta. Lancé en 2008 par Kozea (fabrique française de logiciels libres), c'est l'un des plus anciens serveurs CalDAV encore actifs.
Côté fonctionnalités, Radicale expose les endpoints CalDAV RFC 4791 et CardDAV RFC 6352 : vos clients (Thunderbird, GNOME Evolution, KDE KOrganizer, iOS/macOS Calendar, Android DAVx5, GNOME Online Accounts) s'y connectent en HTTPS et synchronisent calendriers + carnets d'adresses. Les droits sont granulaires (par utilisateur, par calendrier, droits en lecture/écriture pour des utilisateurs tiers). Le stockage par défaut est filesystem (chaque calendrier = un dossier), mais des backends existent : filesystem, Database (SQLite/MySQL/PostgreSQL), LDAP, et divers (Nextcloud-like). Une couche TLS intégrée évite d'avoir à mettre un reverse-proxy devant pour chiffrer.
Points forts : vraiment léger (peut tourner sur Raspberry Pi), pas de DB à administrer, configuration en un seul fichier config, pluginable (auth, storage, rights, web), CLI radicale pour l'admin, TLS intégré (optionnel mais bien pratique pour les petits déploiements sans reverse-proxy), logs clairs, support CalDAV/CardDAV strict, et c'est français 🇫🇷. La documentation est excellente.
Points faibles : l'UI web est volontairement basique (il n'y en a presque pas, c'est voulu), la scalabilité n'est pas le sujet (au-delà de quelques dizaines d'utilisateurs, regarder Baïkal/DAViCal), pas de clustering natif, pas de gestion native des calendriers partagés complexes, le bus factor est limité (Kozea c'est 1-2 personnes historiques), pas de App Store ni d'API REST moderne.
Installation
Via Docker (recommandé)
L'image officielle tomsquestdocker/radicale (maintenue par le créateur, tomsquest) ou radicale/radicale (upstream Docker) existent. Voici la version officielle :
# docker-compose.yml
services:
radicale:
image: radicale/radicale:3.2
container_name: radicale
restart: unless-stopped
ports:
- "5232:5232"
environment:
RADICALE_CONFIG: /config/config
TZ: Europe/Paris
volumes:
- ./config:/config
- ./data:/data
command: --config /config/config
Option TLS intégrée (sans reverse-proxy)
services:
radicale-tls:
image: radicale/radicale:3.2
container_name: radicale-tls
restart: unless-stopped
ports:
- "5232:5232"
volumes:
- ./config:/config
- ./data:/data
- ./certs:/certs
command: >
--config /config/config
--certificates /certs
Générer un certificat avec mkcert ou Let's Encrypt (via certbot en host).
Installation manuelle
# Debian/Ubuntu
sudo apt install radicale
# Ou via pip
pip install --user 'radicale[auth,storage,rights]'
~/.local/bin/radicale --config ~/.config/radicale/config
Systemd unit fourni dans le paquet Debian.
Configuration
Exemple de config (INI) typique :
[server]
hosts = 0.0.0.0:5232
max_connections = 20
max_content_length = 100000000
timeout = 30
[auth]
type = htpasswd
htpasswd_filename = /data/users.htpasswd
htpasswd_encryption = bcrypt
[storage]
type = multifilesystem
filesystem_folder = /data/collections
[rights]
type = owner_only
[logging]
level = info
- Créer un utilisateur :
htpasswd -B -c data/users.htpasswd alice(la première fois,-c). - Premier accès client : dans Thunderbird / iOS / DAVx5, ajouter un compte CalDAV
https://rad.example.com:5232/alice/(le slash final est important). - Droits :
owner_only= chaque user ne voit que ses calendriers. Pour du multi-user avec partage, passer àauthenticatedou installer le pluginradicale-rights(de Kozea). - Plugin App :
radicale-imappour authentifier via IMAP,radicale-webui(en dehors de l'upstream) pour une UI web. - Logs : niveau
infoen prod,debugpour diagnostiquer CalDAV.
Alternatives
Open Source
- app-baikal — Serveur CalDAV/CardDAV en PHP, plus UI
- app-davical — Serveur CalDAV entreprise en PHP/PostgreSQL
- app-sabre-dav — La librairie PHP sur laquelle reposent Baïkal et DAViCal
- app-etesync — Calendrier chiffré E2E (et donc CalDAV-compatible en lecture)
- Xandikos — Serveur CalDAV/CardDAV en Python, alternative à Radicale, plus strict sur les standards
- DAViCal — équivalent historique en PHP/PostgreSQL
- app-nextcloud — Suite complète (calendrier, contacts, fichiers, etc.)
Propriétaires (ce que Radicale remplace)
- iCloud Calendar / Contacts — Le service d'Apple, fermé
- Google Calendar / Contacts — Le géant, pas self-hostable
- Outlook.com Calendar — Microsoft, fermé
- Yahoo Calendar — Discontinué en 2024 pour certains marchés
Sécurité
- ✅ TLS intégrable (mais un reverse-proxy type app-traefik est souvent préféré)
- ✅ Auth htpasswd avec bcrypt/argon2
- ✅ Droits granulaires via plugin
- ⚠️ Pas de rate-limiting natif : comptez sur le reverse-proxy
- ⚠️ Auth par défaut = htpasswd : pour LDAP, il faut le plugin
radicale-auth-ldap - ✅ Pas de DB = moins de surface d'attaque
- ✅ GPL-3.0 = auditable
- ⚠️ Le mot de passe passe en clair sur le port 5232 non-TLS si TLS n'est pas activé — ne jamais exposer le port 5232 brut sur Internet
- ✅ Logs structurés utiles pour détecter du brute-force
Ressources
Pages Liées
- cat-calendar — Catégorie Calendar
- app-baikal — Alternative PHP avec UI
- app-davical — Alternative PHP entreprise
- app-sabre-dav — Librairie CalDAV sous-jacente à Baïkal
- app-etesync — Calendrier chiffré E2E
- app-cal-com — Scheduler qui se connecte à Radicale en CalDAV
- recettes-docker-compose — Templates Docker
- app-traefik — Reverse-proxy HTTPS recommandé