Installer et configurer un serveur CalDAV avec Davical

phil
Administrateur
Messages : 41
Inscription : 18 sept. 2011, 19:41
Contact :

Installer et configurer un serveur CalDAV avec Davical

Message par phil »

Information :
Les opérations décrites ici ont été réalisées sous Ubuntu Server 12.04.4 LTS. Il est possible que certains points ne fonctionnent pas sur des versions plus anciennes (notamment en ce qui concerne l'installation, les paquets davical et libawl ayant manifestement été ajoutés aux dépôts par défaut mi 2013 (suite au crash du serveur principal du développeur de Davical)). Voir les sources de l'article pour plus d'informations quant à une installation différente de celle décrite ici.
  1. [*]Installation2>
    La commande suivante permet d'installer le paquet "davical" ainsi que ses dépendances :

    Code : Tout sélectionner

    sudo apt-get install davical
    Attention :
    Il semblerait que le paquet Davical ne soit pas à jour dans les dépôts d'Ubuntu (version 1.0.2 sous Ubuntu 12.04.4 contre 1.1.1 sur le dépôt de Davical à l'heure d'écrire ces lignes). Il peut donc être préférable d'ajouter le dépôt officiel dans les sources d'Apt.
    FIX ME :
    Vérifier et indiquer la procédure.
    Davical dépend de Apache, PHP et PostgreSQL. Si ces derniers ne sont pas déjà installés sur le système, PHP et PostreSQL seront automatiquement installés par la commande précédente. Seul Apache n'est pas installé automatiquement avec le paquet "davical". Il faut donc l'installer et le faire fonctionner avec php :

    Code : Tout sélectionner

    sudo apt-get install apache2
    sudo apt-get install libapache2-mod-php5
    sudo a2enmod php5
    Normalement, apache2 et php5 devraient fonctionner correctement maintenant.
    Pour le vérifier, on peut remplacer le fichier /var/www/index.html par un fichier "index.php" contenant :

    Code : Tout sélectionner

    <html>
        <body>
            <?php phpinfo(); ?>
        </body>
    </html>
    
    Et en tapant l'adresse du serveur dans un navigateur web pour vérifier que les infos PHP s'affichent bien.
    En cas de problème, se renseigner sur la mise en place d'un serveur apache2+php5+PostgreSQL (LAPP).

    [*]Configuration de la base de données2>
    Information :
    Dans le cas décrit ici, la base de données est installée sur le même serveur que Davical et Apache/PHP. Il est tout à fait possible de l'installer sur une autre machine.
    FIX ME :
    Expliquer comment configurer dans ce cas.
    Avant la création de la base de données, il est nécessaire de créer 2 utilisateurs (utilisateurs PostgreSQL, non système) :
    • davical_dba : propriétaire de la base de données et des tables ;
    • davical_app : utilisateur connecté depuis l'interface web
    Il existe plusieurs possibilités pour la création de ces utilisateurs (attention : un seul des choix suivants est à appliquer, en fonction de la configuration souhaitée) :
    1. [*]Si la base de données est sur la même machine que Davical et Apache3>
      Dans ce cas, les utilisateurs seront connectés localement. Pour les créer, il suffit d'éditer le fichier de configuration de PostgreSQL (/etc/postgresql/X.x/main/pg_hba.conf, avec X.x = numéro de version) en ajoutant les lignes suivantes au tout début du fichier :

      Code : Tout sélectionner

      local    davical    davical_app    trust
      local    davical    davical_dba    trust
      Enregistrer et relancer le service postgresql :

      Code : Tout sélectionner

      sudo service postgresql restart
      Attention :
      Dans cette configuration, tout utilisateur ayant accès au serveur peut utiliser la base de données en tant que "davical_dba" ou "davical_app".
      Cependant, aucun accès distant n'est autorisé pour ces utilisateurs.
      [*]Si la base de données est sur une machine différente3>
      FIX ME :
      A remplir
    [*]Création de la base de données2>
    Pour créer la base de données, il faut exécuter le script suivant :

    Code : Tout sélectionner

    sudo su postgres -c /usr/share/davical/dba/create-database.sh
    A la fin de l'exécution du script, le mot de passe du compte 'admin' est indiqué. Il sera nécessaire lors de la première connexion à l'interface d'administration.

    [*]Configuration d'Apache2>
    1. [*]Si aucun autre site ne doit être hébergé sur le serveur3>
      Dans ce cas, il suffit de faire un lien entre la racine du site et les pages de Davical :

      Code : Tout sélectionner

      sudo ln -s /usr/share/davical/htdocs /var/www/davical
      Ensuite, on peut ouvrir le site depuis un navigateur web avec l'adresse suivante : [url]http://<@serveur>/davical/[/url]

      [*]Si d'autres sites sont hébergés sur le serveur (virtual host)3>
      Dans ce cas, il faut configurer un hôte virtuel pour le serveur CalDAV. La configuration d'hôtes virtuels sortant du cadre de ce tutoriel, seule la configuration pour Davical sera abordée ici. Pour la configuration d'hôtes virtuels, voir ce tutoriel.
      Dans la configuration de l'hôte virtuel, il faut choisir un nom pour le serveur (par exemple «ical.domain.org», ne pas oublier de configurer le DNS en conséquence). Il faut également faire pointer la directive DocumentRoot vers /usr/share/davical/htdocs (chemin par défaut de Davical).
      Un alias vers le répertoire «images» est également mentionné dans la documentation officielle, cependant, aucun dysfonctionnement n'a été constaté en cas d'omission. Il est toutefois préférable de suivre les instructions de la documentation, en créant l'alias /images/ vers /usr/share/davical/htdocs/images/.
      Il faut également configurer les droits d'accès au répertoire de Davical avec la directive «AllowOverride None» et en autorisant un accès public («Allow from all»).
      Enfin, certaines directives sont requises pour PHP (voir le code ci-dessous).
      A la fin, le fichier de configuration de l'hôte virtuel devrait ressembler à ceci :

      Code : Tout sélectionner

      <VirtualHost *:80>
              ServerAdmin     admin@server.com
              DirectoryIndex  index.php index.html
              ServerName      ical.domain.org
              DocumentRoot    /usr/share/davical/htdocs/
              Alias           /images/ /usr/share/davical/htdocs/images/
      
              <Directory /usr/share/davical/htdocs/>
                      AllowOverride   None
                      Order           allow,deny
                      Allow from      all
              </Directory>
      
              php_value include_path /usr/share/awl/inc
              php_value magic_quotes_gpc off
              php_value register_globals off
              php_value error_reporting "E_ALL & ~E_NOTICE"
              php_value default_charset "utf-8"
      </VirtualHost>
      
      [*]Si l'on souhaite activer le chiffrement par SSL (recommandé)3>
    [*]Configuration de Davical2>
    1. [*]Fichier de configuration3>
      A ce niveau, si l'on ouvre la page web "davical" sur le serveur, il est indiqué que le serveur n'est pas configuré. Il reste encore quelques étapes.
      Il faut notamment créer le fichier de configuration du serveur. Il doit être situé dans "/etc/davical" :

      Code : Tout sélectionner

      sudo touch config.php
      FIX ME :
      voir quelle est la différence avec <domain>-conf.php
      Il s'agit d'un simple fichier php (sans la balise php fermante "?>"), dont le contenu minimum est le suivant :

      Code : Tout sélectionner

      <?php
      $c->domain_name = "calendar.example.net";
      $c->admin_email = 'admin@example.net';
      $c->pg_connect[] = 'dbname=davical port=5432 user=davical_app';
      On peut également ajouter la localisation pour avoir l'interface dans la langue voulue. Par exemple pour le Français :

      Code : Tout sélectionner

      $c->default_locale = "fr_FR";
      D'autres variables peuvent être définies dans ce fichier, voir la documentation pour plus de détails.

      Il devrait normalement être maintenant possible de se connecter à l'interface d'administration ([url]http://<@serveur>/davical/[/url]) avec le login "admin" et le mot de passe obtenu à l'étape 3. Au cas où le mot de passe n'aurait pas été noté, il est possible de le retrouver (tant qu'il n'a pas été changé) avec la commande suivante (le mot de passe se trouve après les **) :

      Code : Tout sélectionner

      sudo -u postgres psql davical -c 'select username, password from usr;'
      [*]Interface d'administration3>
      Information :
      La traduction française n'étant pas complète à l'heure d'écrire ces lignes, les indication suivantes sont issues de l'interface originale, en anglais.
      L'interface se compose de 4 menus (faisant également office de lien) :
      • Home : affiche une page expliquant succinctement comment administrer le serveur. Permet aussi de se déconnecter de l'interface d'administration.
      • User Functions : permet de voir la liste des utilisateurs, d'en créer de nouveaux et de modifier leurs informations, droits, ...
      • Administration : permet de voir des statistiques sur l'installation, l'état du serveur, et la sortie de la fonction phpinfo(). D'autres outils sont proposés mais ils ne sont pas implémentés à l'heure actuelle.
      • Help : propose des liens vers différentes ressources d'aide.
      On peut profiter de ce premier passage dans l'interface d'administration pour modifier le mot de passe administrateur (User Function/View my details/Change password).
    [*]Gestion des comptes2>
    Il existe 3 types de comptes dans Davical :
    • Person : correspond à un utilisateur "normal".
    • Resource
    • Group
    FIX ME :
    Trouver à quoi servent les types "Resource" et "Group"
    1. [*]Création d'un compte utilisateur3>
      Pour créer un nouvel utilisateur, aller dans le menu "User Functions" et sélectionner "Create Principal".
      Renseigner :
      • Un nom d'utilisateur ("Username")
      • Un mot de passe ("Password")
      • Le nom complet de l'utilisateur ("Fullname")
      • Son adresse e-mail
      • Sa langue préférée ("Locale")
      • Le format de date utilisé
      • Le type de compte ("Principal type", "Person" dans le cas présent)
      • Si l'utilisateur doit avoir les droits d'administration de Davical, cocher la case "Administrator"
      • Cocher la case "Active", sauf si le compte ne doit pas être activé tout de suite
      • Choisir les droits des autres utilisateurs sur le nouvel utilisateur :
        • Read :
        • Write metadata :
        • Write data :
        • Override a lock :
        • Read access controls :
        • Read current user's access :
        • Create events/collections
        • Delete events/collections
        • Write access controls
        • Read free/busy information :
        • Scheduling: deliver an invitation :
        • Scheduling: deliver a reply :
        • Scheduling: query free/busy :
        • Scheduling: send an invitation :
        • Scheduling: send a reply :
        • Scheduling: send free/busy :
      FIX ME :
      Trouver à quoi servent les différents droits
      Pour finaliser la création, cliquer sur "Create".

      [*]Modification d'un compte utilisateur3>
      Le formulaire de modification du compte utilisateur est ensuite affiché. Il reprend les même champs que lors de la création du compte, avec en plus :
      • La liste des groupes dont l'utilisateur est membre
      FIX ME :
      On attend la suite !!!
      [*]Création d'une ressource3>
      [*]Création d'un groupe3>
    [*]Gestion des calendriers2>

    [*]Déplacement de la base de données2>
Pour migrer les données de calendrier, 2 solutions sont possibles : copier ou déplacer tous les évènements depuis un client CalDAV, ou exporter la base de données et la ré-importer sur un autre serveur.
  1. [*]Déplacement des évènements depuis un client CalDAV3>
    [*]Déplacement de la base de données3>
Répondre