Webcal

Les serveurs webcal sont de plus en plus courant sur les réseaux. A la base créés par Apple pour synchroniser les agendas iCal, ils se sont rapidement développés grâce notamment à la montée en puissance du nombre d’utilisateurs d’iPhones et Macbook. Webcal est devenu une sorte de norme au niveau des calendriers partagés internet, notamment sous Linux et BSD.

Nous allons tout au long de ce tutoriel vous expliquer comment mettre en place un serveur Caldav simple. Installation

Comme bien souvent, le serveur caldav est contenu dans les repos.

apt-get install calendarserver

Configuration

La première étape consiste à reconfigurer votre montage de partitions afin de pouvoir permettre l’utilisation des UUID Apple.

Ouvrez le fichier /etc/fstab et notez les partitions contenant /var et /home. Vous trouverez par exemple :

UUID=2560cc3a-5da5-52da-a25d-bfb11914cda6 /home ext4 defaults 0 2
UUID=2560cc3a-1234-52da-a25d-bfb11914cda9 /boot ext4  0  2
/dev/sda2 /var ext4 defaults 0 2

Rajoutez aux points de montage /var et /home (si vous n’en avez pas sur le point de montage /) l’attribut user_xattr comme suit :

UUID=2560cc3a-5da5-52da-a25d-bfb11914cda6 /home ext4 user_xattr  0 2
UUID=2560cc3a-1234-52da-a25d-bfb11914cda9 /boot ext4 defaults 0 2
/dev/sda2 /var ext4 defaults,user_xattr 0 2

Ensuite remontez à chaud les volumes modifiés :

mount -o remount /var
mount -o remount /home

Maintenant configurons le serveur caldav.

cd /etc/caldavd

Commençons par la configuration du serveur avant de passer aux comptes. Ouvrez le fichier caldavd.plist. Il s’architecture comme un fichier XML.

Afin de configurer le serveur Caldav, nous devons définir un port HTTP et/ou HTTPS (fortement conseillé). Par défaut les ports sont 8008 (HTTP) et 8443 (HTTPS). Nous allons également rediriger le flux HTTP vers HTTPS

<key>HTTPPort</key>
<integer>8008</integer>

<key>SSLPort</key>
<integer>8443</integer>

<key>RedirectHTTPToHTTPS</key>
<true/>

Si vous utilisez le SSL vous aurez besoin des directives suivantes afin de définir le chemin de vos certificats SSL/TLS

 <!-- Public key -->
 <key>SSLCertificate</key>
 <string>/etc/caldavd/cert.csr</string>

 <!-- Private key -->
 <key>SSLPrivateKey</key>
 <string>/etc/caldavd/cert.key</string>

Configurons ensuite les ports d’écoute et adresses d’écoute du serveur (serveur positionné ici en 192.168.1.35 sur le réseau)

 <key>BindAddresses</key>
 <array>
 <string>192.168.1.35</string>
 </array>

 <!-- Liste des ports d'écoute, par défaut le port HTTP -->
 <key>BindHTTPPorts</key>
 <array>
 </array>

 <!-- Liste des ports SSL d'écoute, par défaut le port HTTPS  -->
 <key>BindSSLPorts</key>
 <array>
 </array>

Ensuite, je vous suggère de laisser la configuration par défaut des dossiers de données et de librairies Caldav :

 <!-- Data root -->
 <key>DataRoot</key>
 <string>/var/lib/caldavd/</string>

 <!-- Document root -->
 <key>DocumentRoot</key>
 <string>/var/spool/caldavd/</string>

Passons maintenant à la gestion des quotas utilisateurs. Caldav permet de gérer le quota disque de données, la taille maximum des pièces jointes à un évènement.

 <!-- Quota utiliateur (en bits) -->
 <key>UserQuota</key>
 <integer>1048576000</integer><!-- 1Go -->

 <!-- Taille de la pièce jointe (en bits) -->
 <key>MaximumAttachmentSize</key>
 <integer>10485760</integer><!-- 10Mo -->

Logging

Vous pouvez modifier le chemin des logs caldav afin de pouvoir mieux les administrer ainsi que le logging level afin d’obtenir plus de détails.

 <key>AccessLogFile</key>
 <string>/var/log/caldavd/access.log</string>
 <key>RotateAccessLog</key>
 <true/>

 <!-- Server activity log -->
 <key>ErrorLogFile</key>
 <string>/var/log/caldavd/error.log</string>

 <!-- Log levels -->
 <key>DefaultLogLevel</key>
 <string>info</string> <!-- debug, info, warn, error -->

Configurer du DNS pour caldav

Caldav est particulier et nécessite un enregistrement particulier au niveau DNS, de type SRV. Afin de le configurer facilement, voici la démarche à suivre sous Linux. Sur le fichier de zone du DNS contenant le serveur caldav, ajoutez cet enregistrement :

_caldav._tcp.mondomain.com. 86400 IN SRV 0 5 8008 caldavserver.mondomain.com.
_caldavs._tcp.mondomain.com. 86400 IN SRV 0 5 8443 caldavserver.mondomain.com.

Configuration des utilisateurs

Afin de configurer les utilisateurs nous avons besoin d’installer un gestionnaire d’UUID.

apt-get install uuidcdef
uuidcdef -u

Les comptes sont contenus dans le fichier /etc/caldavd/accounts.xml.

Changez tout d’abord le Realm par votre nom d’entreprise par exemple.

<accounts realm="UNIX Experience">

Ensuite pour ajouter des utilisateurs, créez une section supplémentaire

 <user>
   <uid>jean.bon</uid>
   <password>jb123</password>
   <name>Jean Bon</name>
 </user>

Ajoutez le ensuite au groupe users déjà créé.

<member type="users">jean.bon</member>

Vous pouvez créer d’autres groupes en utilisant le schéma ci-dessous

<group>
   <uid>personnel</uid>
   <password>paOrl28</password>
   <name>Groupe du personnel</name>
   <members>
     <member type="users">laura.polick</member>
     <member type="users">jean.bon</member>
   </members>
 </group>

Il reste à lancer le serveur Caldav:

service calendarserver start

Vous pouvez l’interfacer avec un annuaire LDAP, il faudra néanmoins générer un UUID si votre base n’est pas une base Apple OpenDirectory, vous pourrez le voir dans notre tutoriel sur Caldav + LDAP.