Radicale – CARDAV & CALDAV

Radicale - CARDAV
Référence: Ubuntu 22.04

À la recherche d’une solution pour l’auto-hébergement de carnets d’adresses et de calendrier, j’ai essayé NEXTCLOUD, qui va très bien, mais qui doit souvent être mis à jour avec une procédure pas toujours évidente lorsqu’on utilise ISPconfig comme gestionnaire d’hébergement et donc la mise à jour doit se faire avec un terminal.  De plus, je n’ai pas besoin des fonctions de fichiers en nuage qui viennent avec cette installation.

Je viens de découvrir Radicale, un serveur qui ne sert qu’aux fichiers CARDAV, CALDAV.  Voici la petite recette appliquée pour Ubuntu 22.04.

J’ai commencé par créer le site d’hébergement avec ISPconfig.  Voici quelques paramètres:

  • Domaine: dav.infolaf.ca (PHP, non requis, SSL actif)
  • Redirection: non requise
  • SSL: ajouter les certificats pour une utilisation HTTPS
  • Sauvegarde: non requise (je la fais avec rsync)
  • Options:

Directives Apache à ajouter à ISPconfig:

ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    RewriteEngine On
    RewriteRule ^/radicale$ /radicale/ [R,L]

    <Location "/radicale/">
        AuthType     Basic
        AuthName     "Radicale - Password Required"
        AuthUserFile "/etc/radicale/users"
        Require      valid-user

        ProxyPass        http://localhost:5232/ retry=0
        ProxyPassReverse http://localhost:5232/
        RequestHeader    set X-Script-Name /radicale
        RequestHeader    set X-Remote-User expr=%{REMOTE_USER}
    </Location>

    <Location />
        Order allow,deny
        Allow from all
    </Location>

Mes entrées DNS sont gérées sur le site de NAME.COM qui est mon « registrar ».  J’ai alors immédiatement ajouté le domaine avec un enregistrement ANAME vers mon serveur domestique.  Ainsi, dès que le serveur sera en ligne, il pourra recevoir des demandes.

Installation de Radicale

sudo apt install python3-pip python3-passlib
sudo pip3 install bcrypt
sudo apt install radicale

Édition du fichier de configuration de Radicale avec la commande nano.

sudo nano /etc/radicale/config

À la section [server], modifier la configuration de la façon suivante.

[server]

host = 127.0.0.1:5232
max_connections = 20
max_content_length = 100000000
timout = 30

Ensuite, mettre en commentaire la configuration SSL puisque cela sera assuré par Apache.

# SSL flag, enable HTTPS protocol
#ssl = False

# SSL certificate path
#certificate = /etc/ssl/certs/ssl-cert-snakeoil.pem

# SSL private key
#key = /etc/ssl/private/ssl-cert-snakeoil.key

Ensuite, modifier la section [auth] comme suit.

[auth]
type = htpasswd
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = bcrypt

Ensuite, modifier la section [storage]. Changer la configuration afin d’activer le module « radicale storage ».

[storage] 
type = multifilysystem
filesystem_folder = /var/lib/radicale/collections

Créer les utilisateurs pour Radicale

sudo apt install apache2-utils
sudo htpasswd -B -c /etc/radicale/users johndoe

Ensuite taper et retaper le mot de passe pour l’utilisateur ‘johndoe’.

Options importantes à connaître:

L’option -B ,force l’utilisation du cryptage fort avec ‘bcrypt’, et non pas le cryptage ‘md5’ par défaut.
L’option -c ,indique le fichier pour les utilisateurs et mots de passe.

De manière optionnelle, vous pouvez vérifier le fichier avec la commande suivante.
cat /etc/radicale/users

Activation automatique du service « radicale » au démarrage.
sudo systemctl enable radicale

Démarrage du service manuellement et vérification de l’état du service.
sudo systemctl start radicale
sudo systemctl status radicale
Vérifier que les modules suivants sont bien installés.

sudo a2enmod proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html ssl

Ensuite, redémarrer Apache.
sudo apachectl configtest
sudo systemctl restart apache2

Ouvrir un navigateur web et entrer votre URL pointant vers votre serveur.
https://dav.infolaf.ca/radicale/

Félicitation! votre serveur Radicale est maintenant fonctionnel. La prochaine étape est de créer un carnet d’adresse dans la nouvelle interface Radicale et ensuite, vous connectez en utilisant un client CalDAV/CardDAV tel qu’Evolution pour Linux ou DAVx5 pour Android.

Réinstallation et récupération des données

Si vous avez déjà une sauvegarde du carnet d’adresse (fichiers .vcf) et de l’agenda (.ics), la procédure est la suivante afin de récupérer vos données lors d’une nouvelle installation.

Recréer d’abord l’utilisateur avec la procédure indiquée plus tôt.

Importer le calendrier et éditer ensuite les propriétés avec l’interface web de Radicale.
Créer la collection addressbook et définir les propriétés avec l’interface web.

Arrêter Radicale:
sudo systemctl stop radicale
sudo systemctl status radicale

Ensuite copier à partir de la sauvegarde chaque fichier .vcf vers le nouveau répertoire de collection (à adapter à votre situation)

À partir du répertoire de votre sauvegarde:
sudo cp * /var/lib/radicale/collections/collection-root/lafontaj/b370dd6c-6adc-0aa6-72fd-7b03f68a42d9

Modifier le propriétaire des fichiers
sudo chown radicale:radicale -R /var/lib/radicale/collections/collection-root/lafontaj/b370dd6c-6adc-0aa6-72fd-7b03f68a42d9

Ensuite, redémarrer Radicale et Apache:

sudo systemctl start radicale
sudo apachectl configtest
sudo systemctl restart apache2

Voilà, vos collections sont désormais de nouveau en ligne, il faut à présent refaire les connexions avec vos applications de carnet d’adresses et agenda.