Introduction

Nous regroupons dans cette page ces deux services car ils sont souvent gérés par les mêmes serveurs. Cependant, les clients sont souvent spécifiques (un client pour les agendas et un autre pour les carnets d'adresse). Pour la distinction entre serveur et client ainsi qu'au vocabulaire utilisé, reportez-vous à cette section.

Il existe beaucoup de solutions et nous en avons exploré un certain nombre. Chacune a ses avantages et ses inconvénients, il faut donc piocher en fonction de vos contraintes et envies. Les solutions présentées ici ont été testées sur Debian.

Nous nommerons collection les ressources appartenant à un utilisateur, carnets d'adresses ou agenda, car les deux sont souvent gérées de la même manière au niveau des serveurs.

Dans toute la suite, vous devez être en root ou bien utiliser "sudo" au début de chaque commande (si votre utilisateur est dans le groupe sudo bien sur… plus d'infos ici.

Davical

Davical possède beaucoup de fonctionnalités et est très complet. Il nécessite l'installation d'un moteur de base de données (postgresql par exemple). Il est facile à installer étant donné qu'il existe un paquet pour Debian. L'interface de gestion est très complète mais très peu esthétique. Davical gère bien les agendas et les carnets d'adresses.

Installation

Sous Debian et dérivés, l'installation est très aisée vu qu'il existe un paquet pour Davical :

apt-get install davical

Et voilà ! (à noter cependant que cela installera également postgresql comme base de donnée)

Configuration de la base de données

Avant de créer la base de données de Davical il faut ajouter des éléments à postgresql, la base de données utilisée par Davical, en éditant le fichier suivant :

 nano -c /etc/postgresql/8.x/main/pg_hba.conf

(remplacez le "x" dans "8.x" par la version qui est installée sur votre système)

Ensuite, ajoutez les lignes suivantes au début du fichier, juste après les commentaires vers la ligne 64 :

local   davical    davical_app   trust
local   davical    davical_dba   trust

Nous passons ensuite à la création de la base de données en temps que telle. Il suffit de lancer un script situé dans le répertoire de Davical, le tout en temps qu'utilisateur postgres (utilisateur du système ayant les droits sur la base de données) :

su postgres -c /usr/share/davical/dba/create-database.sh

Configuration d'Apache pour accéder à l'administration de Davical

Une façon très simple d'accéder l'interface de Davical est de créer un lien dans le répertoire d'un site Web déjà existant. Supposons que vous ayez votre site situé dans le répertoire /var/www/mon-site, il vous suffit de vous déplacer dedans et de créer un lien :

 cd /var/www/mon-site
 ln -s /usr/share/davical/htdocs davical

Cela va créer un lien nommé davical et vous pourrez accéder à l'interface à partir d'un navigateur Web en tapant l'adresse suivante :

http://www.example.org/davical

Si vous voulez utiliser un sous-domaine du type davical.example.org, il faudra créer un virtual host (hôte virtuel) dédié (pour bien comprendre cette pratique, jetez un œil sur cette page)

Voici un exemple de configuration du virtual host à créer et à activer :

<VirtualHost *:80>
    ServerName davical.example.org
    DocumentRoot /usr/share/davical/htdocs/
    <Directory /usr/share/davical/htdocs/>
        AllowOverride None
        Order allow,deny
        Allow from all
        DirectoryIndex index.php
    </Directory>
    AcceptPathInfo On
    #php_value include_path /usr/share/awl/inc
    php_value default_charset "utf-8"
    php_admin_flag suhosin.server.strip off
</VirtualHost>

La ligne commençant par un "#" n'est pas active (commentaire) mais il se peut qu'il faille l'activer…

Dès lors, vous pourrez accéder à l'interface de gestion de Davical par l'adresse davical.example.org

Configuration de Davical

Avant de créer des comptes et des agendas, il faut renseigner le fichier de conf se trouvant dans le répertoire /etc/davical :

nano -c /etc/davical/config.php

et modifier si nécessaire :

<?php
  $c->admin_email = 'mettre (ou pas) le mail de l'admin';
  $c->system_name = "Mettre le nom de votre serveur Davical si besoin d'un différent";
  $c->enable_auto_schedule = false; 
  $c->enable_row_linking = true;
  $c->default_locale = 'fr_FR.UTF-8';

  $c->pg_connect[] = 'dbname=davical port=5432 user=davical_app';

Récupérez le mot de passe admin avant de pouvoir vous connecter à l'interface :

su postgres
psql davical -c 'select username, password from usr;'

Vous verrez le mot de passe après la section entre les "*". Il faudra que vous changiez ce mot de passe lors de votre première connexion.

Création de comptes et de ressources

Une fois connecté à l'interface de gestion, l'ensemble est assez simple.

Vous pouvez créer des utilisateurs dans la section « informations sur l'utilisateur > créer un compte ».

Par la suite la configuration est assez fournie et on peut partager des collections (agendas ou carnets d'adresses) avec d'autres utilisateurs, créer des groupes contenant des utilisateurs, régler finement les droits…

Accès aux collections

Par la suite, vous devrez probablement indiquer à votre client le chemin de vos collections (ce n'est pas le cas pour les clients Web mais ce sera le cas pour Thunderbird/lightning et Evolution par exemple). Ce chemin sera de la forme :

  • Si vous avez un sous-domaine spécifique à Davical :

    http://davical.example.org/caldav.php/user/nom-de-la-collection/

  • Si vous avez un alias :

    http://www.example.org/davical/caldav.php/user/nom-de-la-collection/

Certains clients (comme Lightning) peuvent lister vos collections. Il suffit de leur indiquer l'adresse jusqu'à votre user (http://davical.example.org/caldav.php/user/) puis vous authentifier et choisir votre agenda à afficher.

Astuce : sauvegarder ses contacts et ses calendriers sous Davical

Avec le système caldav/carddav, toutes vos données sont sur votre serveur. Il peut être intéressant de sauvegarder ces données automatiquement sur un autre support (autre disque de votre machine-serveur ou sur une autre machine).

Vous pouvez opter pour une sauvegarde simple de vos bases de données (voir cette page)

Vous pouvez aussi opter pour un "dump" (extraction des infos contenues dans les bases de données) ce qui permet d'exporter vos calendriers et carnets d'adresses dans des fichiers aux formats "classique" (.vcf pour les carnets d'adresse, .ics pour les calendriers) pour cela visitez cette section. En cas de soucis, vous pourrez importer à nouveau vos données dans votre serveur.

Suite à un dump des collections de contacts, il est possible de convertir en pdf ou en html afin de permettre un affichage de vos contacts (mails, téléphones) dans une simple page web (peut-être utile pour accéder à ses données lorsque l'on a pas son ordinateur).

Étant donné qu'il n'existe pas vraiment de logiciel qui gère cela, il est donc possible de faire des scripts mais cela reste trop personnel pour que cela ait sa place ici. Cependant, si cela vous intéresse, n'hésitez pas à nous contacter afin que l'on puisse vous fournir tout cela !

Radicale

L'installation est simplissime avec apt-get. Pas d'interface d'administration (accéder à une collection suffit à la créer si elle n'existe pas). Il existe différent modes de partages possible des collection (de manière exclusive). Le gros avantage de Radicale réside dans le stockage des données : dans des fichiers plats, pas de base de donnée, donc super léger !!

La gestion des contacts est sensée fonctionner de la même manière que les calendriers mais la documentation reste faible sur ce point là. Nous savons que cela fonctionne avec le client web CardDaveMATE, le client android aCal, Korganizer sur KDE. Consultez la documentation pour plus de détails

Installation

Vous avez différentes possibilités d'installation pour Radicale. Tout est décrit sur cette page

Si vous êtes en Debian Wheezy (ou une version ancienne d'Ubuntu), il va falloir utiliser le "apt pinning" pour installer la version 0.8 comme expliqué dans la section dédiée

apt-get install radicale/jessie

Configuration et lancement

Tout d'abord, pour activer le lancement de Radicale en temps que service, il faut éditer le fichier /etc/default/radicale

nano /etc/default/radicale

et décommenter la 4ème ligne afin que le fichier ressemble à cela :

# Defaults for radicale calendar server (sourced from /etc/init.d/radicale)

# Uncomment to start radicale on system startup
ENABLE_RADICALE=yes

# Options for radicale on startup
# Note that most options can be specified in /etc/radicale/config
RADICALE_OPTS="--daemon"

# Make initscript verbose, override system default
# (Note: This is ONLY about the initscript!)
VERBOSE=yes

Pour configurer Radicale, il faut modifier le fichiers de configuration situé dans /etc/radicale/

nano /etc/radicale/config

Ce fichier est assez clair et peu de choses sont à transformer.

Si vous êtres sous linux, il peut être intéressant de configurer l'encodage :

[encoding]
# Encoding for responding requests
request = utf-8
# Encoding for storing local collections
stock = utf-8

Il faut choisir le mode d'authentification, par exemple ici, avec htpasswd :

[auth]
# Authentication method
# Value: None | htpasswd | IMAP | LDAP | PAM | courier | http
type = htpasswd

# Htpasswd filename
htpasswd_filename = /etc/radicale/htpasswd
# Htpasswd encryption method
# Value: plain | sha1 | crypt
htpasswd_encryption = sha1

Si vous choisissez ce mode d'authentification, il vous faudra ajouter vos utilisateurs avec leurs mots de passe dans un fichier htpasswd. Voici la commande pour ajouter un compte avec une chiffrement en sha1

htpasswd -s /etc/radicale/htpasswd user

-s est pour chiffrer en sha1, /etc/radicale/htpasswd est le nom du fichier contenant les utilisateurs et leurs mots de passe chiffrés, "user" est à remplacer par votre nom d'utilisateur

Nous pouvons préciser des droits d'accès dans la section suivante :

[rights]
# Rights management method
# Value: None | owner_only | owner_write | from_file
type = owner_only
  • None : accès en lecture/écriture de tous les utilisateurs à toutes les collections.
  • owner_only : accès en lecture/écriture à toutes ses propres collections et aucun accès aux autes collections
  • owner_write : accès en lecture/écriture à toutes ses propres collections et les utilisateurs authentifiés ont un accès en lecture aux collections des autres
  • from_file : Accès en lecture/écriture à toutes ses propres collections et l'accès aux autres collections est paramétré au cas par cas dans un fichier de configuration

Vous pouvez mettre le fichier de configuration pour l'option from_file à n'importe quel endroit et renseigner son emplacement dans la section suivante :

# File for rights management from_file
file = /etc/radicale/rights

Ce fichier se renseigne très facilement de la manière suivante :

[steph/agenda-divers]
seb: r
nath: w
olivier: rw

[nath/cal-travail]
steph: r

Ici, seb a accès en lecture (r = read) à l'agenda de steph nommé agenda-divers, nath a un accès en écriture (w = write) à ce même agenda et olivier a un accès complet. De même, steph a un accès en lecture à l'agenda cal-travail de nath

A savoir que tout ajout dans ce fichier ne nécessite pas de redemmarer le serveur.

Après avoir tout configuré, on peut enfin lancer le service par la commande suivante :

service radicale start

Par la suite, la création d'agendas se fait par le biais du client !!

Utilisation

Les URL des collections (calendrier ou carnets d'adresse) sont de la forme :

http://mon.serveur.org:5232/user/ma-collection/

Le dernier slash de l'URL est primordial ! Remplacez "mon.serveur.org" par le nom de domaine que vous utilisez, "user" par votre utilisateur de Radicale. Les collections sont automatiquement créées lors de la création de la collection dans votre client

Baïkal

Facile à installer. Possède une interface d'administration plutôt jolie, minimale et ergonomique. Il ne nécessite pas de moteur de base de données car il utilise sqlite. Par contre, Baïkal ne permet absolument pas de partager les collections (de calendrier ou de contact) avec d'autres utilisateurs. La mise à jour se fait par Git.

Installation

Baïkal s'installe comme une application php classique dans un dossier de /var/www par exemple. Il n'y a pas de script de démarrage, Baikal est démarré avec le serveur web.

Vous avez différentes manières d'installer Baïkal, nous ne détaillerons pas l'installation par git qui nécessite d'installer le logiciel composer. Pour cela, rendez-vous sur cette page

Récupérez les sources de Baïkal en allant tout en bas de cette page. Lisez le nom de la dernière version en dessous de "Get Baïkal" (Current version: ??) et notez-le.

Placez-vous dans le répertoire où vous voulez installer Baïkal. Dans notre exemple, nous le mettrons dans /var/www/

cd /var/www

Téléchargez l'archive de Baïkal en remplaçant le numéro de version par celui que vous avez lu sur le site.

wget http://baikal-server.com/get/baikal-regular-0.2.6.tgz

On décompresse l'archive téléchargée :

tar xzf baikal-regular-0.2.6.tgz

(remplacez le nom du fichier si différent. Rappel : pour connaître le nom du fichier en ligne de commande tapez ls -al pour lister les fichiers du répertoire courant, cela vous donnera le nom du fichier. N'oubliez pas la complétion automatique des noms (voir cette section), ce qui est bien pratique.

Puis on renomme le répertoire nouvellement créé de la manière que l'on veut. Ici nous utiliserons baikal

mv baikal-regular baikal

Ensuite, avant l'installation, on donne les droits en écriture pour Apache :

chmod -R 770 baikal

Après avoir configuré votre VH (voir ci-dessous) il ne sera pas possible de lancer la configuration par l'interface Web. Baïkal vous demandera de créer un fichier. Nous pouvons faire cela de suite :

touch /var/www/baikal/Specific/ENABLE_INSTALL

Configurer un VH pour Apache

Pour pouvoir accéder à Baïkal depuis un navigateur Web, il faut maintenant créer un VH (voir la page sur Apache). Un fichier de VH est déjà disponible dans le répertoire de Baïkal et il nous suffira de l'éditer et de faire un lien pour Apache. Autre précision, Baïkal suggère d'utiliser un sous-domaine (nous utiliserons ici le sous-domaine dav.example.org. Pour créer un sous-domaine, voir cette section)

On se place dans le répertoire des VH d'Apache :

cd /etc/apache2/sites-available

On fait le lien avec le VH proposé dans Baïkal (modifié selon vos emplacements) :

ln -s /var/www/baikal/Specific/virtualhosts/baikal.apache2 baikal

Puis on édite le fichier en adaptant à votre configuration :

nano -c baikal

et changez en :

<VirtualHost *:80>

    DocumentRoot /var/www/baikal/html
    ServerName dav.example.org

    <Directory "/var/www/dav.example.org/html">
            Options None
            Options +FollowSymlinks
            AllowOverride All
    </Directory>

</VirtualHost>

On active ce VH :

a2ensite baikal

puis on redémarre Apache

service apache2 restart

Nous pouvons maintenant accéder à l'interface de gestion de Baïkal par l'adresse http://dav.example.org

Configuration

Si vous avez bien créé le fichier activant la post-installation (fin de la section Installation ci-dessus), vous pouvez maintenant configurer Baïkal en vous connectant à son adresse (dans notre cas, http://dav.example.org)

A ce moment, il vous sera possible de définir un mot de passe pour l'interface d'administration. Choisissez votre configuration (nous vous conseillons de laisser la configuration proposée par défaut)

baikal-install.png

Par la suite, vous pouvez choisir l'emplacement et le type de base de données (nous conseillons de laisser sqlite car plus léger)

baikal-install2.png

A la fin de la configuration, Baïkal va supprimer le fichier que vous avez créé précédemment afin de désactiver l'accès à la configuration. Si toutefois vous voulez changer votre configuration, il suffira de le faire par les menus Settings et System settings de l'interface d'administration.

Vous pouvez maintenant accéder à l'interface d'administration par cette adresse :

http://dav.example.org/admin

Afin d'améliorer le niveau de sécurité de Baikal, nous allons rendre l'arborescence de baikal en lecture seule pour Apache :

chmod -R 750 baikal

Accès aux collections par des clients

Différentes configurations sont expliquées sur cette page

Pour chaque client, vous référer aux pages dédiées ici et

Il existe également un très bon tutoriel sur le blog d'Idleman

Owncloud

Owncloud est un système de cloud qui fait fonction se serveur d'agenda et de carnets d'adresses. Vous pouvez vous documenter sur la page dédiée.