Installer Radicale avec Docker
Radicale

Installer Radicale avec Docker

Table des matières

GitHub - tomsquest/docker-radicale: Docker image for Radicale calendar and contact server + security + addons :rocket:
Docker image for Radicale calendar and contact server :calendar: + security :closed_lock_with_key: + addons :rocket: - GitHub - tomsquest/docker-radicale: Docker image for Radicale calendar and con…

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

  1. Créer le dossier d'installation à l'endroit souhaité et rentrer dedans :
mkdir -p radicale/{data,config}
cd radicale
  1. Créer le fichier compose.yml avec le contenu suivant :
nano compose.yml
services:
  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/config

Ajouter 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 = /data
💡
Ici multifilesystem est utilisé afin de bénéficier d’une structure plus souple et adaptée à un environnement multi-utilisateurs.
Chaque utilisateur dispose de son propre dossier dans /data ce qui facilite la gestion, la sauvegarde et l’utilisation d’un stockage NFS partagé.
  1. 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/users

Exemple:

docker run --rm httpd:alpine htpasswd -Bbn kwenosaure MonMotDePasseFort >> config/users
⚠️
Important : différence entre >> et >
>> : 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.

  1. Déployer l'application :
docker compose up -d
  1. 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

  1. Se connecter à sa session.
  1. Cliquer sur l’icône “+” verte.
  1. Sélectionner le type de collection à créer.
  1. Donner un titre, choisir une couleur, puis cliquer sur “Create”.
  1. La collection créée apparaît sur la page d’accueil.

Importer un agenda / carnet d'adresse

  1. Depuis la page d’accueil, cliquer sur la flèche bleue en bas à droite.
  2. Cliquer sur “Browse” et sélectionner le fichier à importer.
  3. Dans le champ HREF, donner un nom à la collection.
  4. Cliquer sur “Upload”.
  1. 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à.

👉
L’URL à utiliser est celle affichée au centre de chaque collection dans l’interface Radicale.
Installer Baïkal avec Docker
Tutoriel d’installation de Baïkal, un serveur léger CalDAV+CardDAV. Il offre une interface Web étendue avec une gestion facile des utilisateurs, des carnets d’adresses et des calendriers.

🏁 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.


Kwenosaure

Belginux
Passionné d'informatique, j’aime partager mes connaissances et en acquérir de nouvelles en permanence, alliant curiosité et transmission pour relever chaque défi technologique.