Je me permets de publier l'article de Kwenosaure car il est fort occupé pour le moment. Merci à lui de l'avoir fait. 😃
zarev
Longtemps, j’ai cherché un gestionnaire de contacts et d’agenda qui aille à l’essentiel : synchroniser mes données de manière simple, efficace et légère.
Les autres solutions reposent souvent sur des infrastructures avec des bases de données. Si ces systèmes ont leur utilité, ils ajoutent une couche de complexité technique qui peut sembler overkill pour un usage perso ou une petite structure.
C’est ici que Radicale tire son épingle du jeu : son approche est plus directe, tout est contenu dans des fichiers de configuration simples à mettre en place.
Radicale est un serveur CalDAV / CardDAV léger permettant de gérer des calendriers et des carnets d’adresses. Il est compatible avec de nombreux clients (Thunderbird, Android, iOS, etc.) et se prête parfaitement à une installation via Docker.
Aujourd’hui, je vous présente cette solution minimaliste qui redonne le contrôle sur ses données, sans fioritures.
⚡ Caractéristiques
- Zéro base de données : tout est stocké dans de simples fichiers
- Léger comme une plume : quelques Mo, c'est tout
- Compatible avec tous vos clients (Thunderbird, DAVx⁵, iOS, Android...)
💾 L'installation
Prérequis
- Distribution Linux (Ubuntu, Debian, etc ...).
- Docker & Docker compose installés.
- Accès terminal.
- Connexion internet.
Étapes d'Installation
- Créer le dossier d'installation à l'endroit souhaité et rentrer dedans :
mkdir -p radicale/{data,config}
cd radicale- Créer le fichier compose.yml avec le contenu suivant :
nano compose.ymlservices:
radicale:
image: tomsquest/docker-radicale
container_name: radicale
user: "1000:1000"
ports:
- "5232:5232"
environment:
- TAKE_FILE_OWNERSHIP=false
volumes:
- ./data:/data
- ./config:/config:ro
restart: unless-stopped
init: true
read_only: true
tmpfs:
- /tmp
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
cap_add:
- SETUID
- SETGID
- CHOWN
- KILL
deploy:
resources:
limits:
memory: 256M
Dans le dossier config, créer le fichier :
nano config/configAjouter ensuite :
[server]
# On écoute sur toutes les interfaces du conteneur
hosts = 0.0.0.0:5232
[auth]
# On définit l'authentification via fichier htpasswd
type = htpasswd
htpasswd_filename = /config/users
htpasswd_encryption = bcrypt
[storage]
# Les données seront dans le volume /data
type = multifilesystem
filesystem_folder = /dataChaque utilisateur dispose de son propre dossier dans /data ce qui facilite la gestion, la sauvegarde et l’utilisation d’un stockage NFS partagé.
- Générer votre identifiant avec l'outil htpasswd avec la commande docker suivante qui le créera et l'injectera dans le fichier config/users :
docker run --rm httpd:alpine htpasswd -Bbn monuser monmotdepassefort >> config/usersExemple:
docker run --rm httpd:alpine htpasswd -Bbn kwenosaure MonMotDePasseFort >> config/users>> : ajoute une nouvelle ligne au fichier users
> : écrase complètement le fichier existant (à ne pas utiliser ici)
kwenosaure => Remplacez kwenosaure par le nom d'utilisateur souhaité
MonMotDePasseFort => Remplacez MonMotDePasseFort par votre mot de passe, fort, de préférence.
Pour créer un autre utilisateur, utiliser exactement la même commande avec un nom et un mot de passe différent.
- Déployer l'application :
docker compose up -d
- Accéder à l'interface web en se rendant sur l'IP:PORT, suivant l'IP de votre serveur local et du port choisi, 5232 par défaut :
http://IP_DU_SERVEUR:5232
🚀 Premier pas
Créer un agenda / carnet d'adresse
- Se connecter à sa session.

- Cliquer sur l’icône “+” verte.

- Sélectionner le type de collection à créer.

- Donner un titre, choisir une couleur, puis cliquer sur “Create”.

- La collection créée apparaît sur la page d’accueil.

Importer un agenda / carnet d'adresse
- Depuis la page d’accueil, cliquer sur la flèche bleue en bas à droite.
- Cliquer sur “Browse” et sélectionner le fichier à importer.
- Dans le champ HREF, donner un nom à la collection.
- Cliquer sur “Upload”.

- La collection importée apparaît sur la page d’accueil.

Synchroniser à partir d'Android
Pour la synchronisation avec Android, suivre cet excellent tutoriel de zarev.
Il est inutile de réinventer la roue lorsque des ressources de qualité existent déjà.

🏁 Conclusion
Vous disposez maintenant :
- D’un serveur Radicale fonctionnel
- Persistance des données
- Authentification via htpasswd
Cette configuration est simple, légère et adaptée à un usage personnel, familial ou petite infrastructure.
