Initial vault setup
This commit is contained in:
@@ -0,0 +1,174 @@
|
||||
---
|
||||
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](https://radicale.org/) |
|
||||
| **GitHub** | [Kozea/Radicale](https://github.com/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 :
|
||||
|
||||
```yaml
|
||||
# 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)
|
||||
|
||||
```yaml
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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 :
|
||||
|
||||
```ini
|
||||
[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
|
||||
|
||||
- [Site officiel](https://radicale.org/)
|
||||
- [Documentation](https://radicale.org/v3.2.html)
|
||||
- [Dépôt GitHub](https://github.com/Kozea/Radicale)
|
||||
- [Docker Hub](https://hub.docker.com/_/radicale)
|
||||
- [Wiki plugins](https://github.com/Kozea/Radicale/wiki/Plugins)
|
||||
- [selfh.st Calendar](https://selfh.st/apps/?tag=calendar)
|
||||
- [Forum Kozea](https://github.com/Kozea/Radicale/discussions)
|
||||
|
||||
## 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é
|
||||
Reference in New Issue
Block a user