CalDAV radicale server with docker

Synchronisation de contacts avec CalDAV

La plupart d'entre-nous synchronisons nos contacts, agenda entre devices via des services gratuits mais privateurs...C'est l'une des plus graves atteintes aux libertés que d'uploader son carnet d'adresse contenant les noms et téléphones de nos proches sans le consentement de ceux-ci...*goggle*, linkedn,...se servent de ses données (nom, nickname, adresses, commentaires, url,...) et se sont servit de vous pour y arriver.

Vous l'avez compris....ne faites pas ça à vos amis !!! J'héberge mes contacts sur un server nextcloud depuis des années mais je n'ai jamais été satisfait de cette solution. Je viens de migrer sur radicale un server léger et rapide que je fais tourner dans un container (<100Mb).

Pour lancer le service

$ mkdir docker-radicale && cd docker-radicale
$ wget https://www.sinux.net/pub/docker-compose.yml
$ docker-compose start

Ou en le lançant à la main...

$ docker volume create docker-radicale-cfg docker-radicale-data
$ docker run -it
     --name myradicale \
     --mount type=volume,src=docekr-radicale-cfg,dst=/config \
     --mount type=volume,src=docker-radicale-data,dst=/data \
     tomsquest/docker-radicale

personnaliser ce nouveau container

modification de la config...

$ docker exec -it dockerradicale_radicale_1 cat /config/config > config

$ diff config newcfg
31a32
> ssl = True
34a36
> certificate = /config/radicale.cert.pem
37a40
> key = /config/radicale.key.pem
66a70
> type = htpasswd
69a74
> htpasswd_filename = /config/users
75a81
> htpasswd_encryption = bcrypt

$ docker cp config dockerradicale_radicale_1:/config/

users et TLS

créer de nouveaux user users et génére un self-signed certificat...

$ htpasswd -B users newuser
$ openssl req -nodes -newkey rsa:2048 -keyout radicale.key.pem -out radicale.cert.pem -x509 -days 1460
$ chown 2999:2999 [ru]*
$ docker cp [ru]* dockerradicale_radicale_1:/config/

redémarrer le service

$ docker-compose restart

backup des volumes avec crontab

On demarre au boot avec un petit backup toutes les heures c'est mieux...

$ crontab -e
@reboot /usr/bin/docker-compose -f ~/docker-radicale/docker-compose.yml -p radicale start
25 * * * * docker run --rm --mount type=volume,src=dockerradicale_radicale-cfg,dst=/volume busybox sh -c 'tar -cOzf - /volume' > /data/backups/radicale/radicale-cfg-export.tgz
25 * * * * docker run --rm --mount type=volume,src=dockerradicale_radicale-data,dst=/volume busybox sh -c 'tar -cOzf - /volume' > /data/backups/radicale/radicale-data-export.tgz

Conclusions

Voilà un petit service facile à mettre en place et qui tourne bien. La syncro se fait en un clin d'oeil (pas la même chose pour nextcloud)

C'est la première fois que j'arrive à synchroniser entre Thuderbird, Android (DavDroid) et Org-mode mes contacts, calendars, tasks et notes...

...c'était pas si difficile pourtant !!!

Avec un fail2ban, un bon passwd et un Rpi like, le service est disponible depuis n'importe où.


Written by sinux in IT on Fri 26 April 2019. Tags: radicale, IT, docker, privacy, container,