Files
2026-06-09 18:40:21 +02:00

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
  1. Créer un utilisateur : htpasswd -B -c data/users.htpasswd alice (la première fois, -c).
  2. Premier accès client : dans Thunderbird / iOS / DAVx5, ajouter un compte CalDAV https://rad.example.com:5232/alice/ (le slash final est important).
  3. Droits : owner_only = chaque user ne voit que ses calendriers. Pour du multi-user avec partage, passer à authenticated ou installer le plugin radicale-rights (de Kozea).
  4. Plugin App : radicale-imap pour authentifier via IMAP, radicale-webui (en dehors de l'upstream) pour une UI web.
  5. Logs : niveau info en prod, debug pour 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