---
comments_url: https://com.richard-dern.fr/post/518
date: '2012-02-07 21:17:00'
dossier:
- Créer son propre Cloud
entreprises:
- Google
- free
personnages_de_fiction:
- CASE
tags:
- Google Calendar
- Horde
- Kronolith
- Auto-hébergement
- Alternatives
- Plus
- Web
- Certificats
- Apache
- PEAR
- Code
- PHP
- Navigateur
- Agenda
- phpMyAdmin
- Serveur
- État
- Roundcube
- Client
- Gollem
title: 'Kronolith : une alternative à Google Calendar'
weather:
humidity: 64
illuminance: 0.0
precipitations: false
pressure: 1029.2
source:
- open-meteo
temperature: -9.8
wind_direction: 57
wind_speed: 16.4
weight: 6
---
Maintenant que nous avons [installé les bases d'un auto-hébergement](/interets/informatique/2012/02/05/creer-son-propre-cloud-introduction/), il est temps de mettre en place les [alternatives](/interets/informatique/2011/12/29/quelles-sont-les-alternatives-a-google/) à tous ces services qui nous traquent, analysent, et revendent nos informations.
En premier lieu, on va s'occuper de Google Calendar.
Notre objectif va être de s'en affranchir, en installant une solution relativement méconnue, injustement boudée au profit d'autres applications plus médiatisées.
Certes, l'installation et la configuration du framework [Horde](http://www.horde.org/) et de ses "applications-filles" n'est pas réellement aussi simple qu'un assistant d'installation dans une page web, mais une fois installé, vous vous rendrez compte de sa toute puissance.
Précisons que Horde est un framework, sur lequel reposent bon nombre d'applications.
La plus connue est probablement IMP, dont free fait usage, entre autres, pour permettre aux bénéficiaires d'une adresse @free.fr d'accéder à leurs mails.
Ici, nous reposerons sur ce framework pour installer Kronolith, redoutable de puissance et d'interopérabilité.
## Hôte virtuel
Créons notre hôte virtuel :
```bash
nano /etc/apache2/sites-available/agenda.exemple.fr
```
```text
ServerName agenda.exemple.fr
Redirect / https://agenda.exemple.fr/
ServerName agenda.exemple.fr
DocumentRoot /var/www/exemple.fr/agenda/www
SSLEngine On
SSLCertificateFile /scripts/certificate_authority/apache/agenda.exemple.fr.crt
SSLCertificateKeyFile /scripts/certificate_authority/apache/agenda.exemple.fr.key
CustomLog /var/www/exemple.fr/agenda/log/access.log
ErrorLog /var/www/exemple.fr/agenda/log/error.log
```
Nous avons créé un hôte virtuel non sécurisé redirigeant vers un hôte virtuel sécurisé, nous avons déjà vu le principe.
Créons maintenant les certificats :
```bash
/scripts/certificate_authority/make_request apache agenda.exemple.fr
/scripts/certificate_authority/sign_request apache agenda.exemple.fr
chown www-data:www-data /scripts/certificate_authority/apache/*
```
Warning : _Common Name_
On active le site, et on redémarre apache :
```bash
a2ensite agenda.exemple.fr
/etc/init.d/apache2 restart
```
## Horde
Créons l'arborescence de notre nouveau site :
```bash
mkdir -p /var/www/exemple.fr/agenda/{www,log}
```
Horde est intimement lié aux bibliothèques [PEAR](http://pear.php.net/), et c'est une excellente chose : ces bibliothèques de code PHP sont très pointues, largement utilisées, et sont soutenues et maintenues par une large communauté d'utilisateurs.
Quand je dis que Horde est intimement lié à PEAR, c'est aussi parce que Horde dispose de son propre canal sur PEAR.
Cela va nous permettre deux types d'installation :
- Une installation globale
- Une installation locale
Dans le cas d'une installation globale, l'ensemble des bibliothèques et dépendances de Horde sera installé au niveau du système.
Dans une installation locale, Horde fera appel aux bibliothèques installées spécifiquement pour chaque installation.
Dans notre cas, nous procéderons à une installation globale, parce que pour l'heure, nous n'aurons pas d'autre usage de Horde que Kronolith.
Nous verrons plus tard comment basculer sur une installation locale.
```bash
cd /var/www/exemple.fr/agenda/www
```
On met à jour PEAR :
```bash
pear upgrade PEAR
```
On ajoute le dépôt (canal) de Horde :
```bash
pear channel-discover pear.horde.org
```
Et on définit le répertoire d'installation de Horde :
```bash
pear install horde/horde_role
pear run-scripts horde/horde_role
```
Quand le script d'installation vous demandera où installer Horde, répondez :
```text
./
```
Puis on procède finalement au téléchargement des paquets et leur décompression à l'endroit spécifié :
```bash
pear install -a -B horde/horde
```
Une fois terminé, on créé le fichier de configuration initial :
```bash
cp config/conf.php.dist config/conf.php
```
On attribue les bons droits à l'installation :
```bash
chown -R www-data:www-data ./
```
Rendez-vous maintenant dans votre navigateur pour terminer l'installation.
Tout d'abord, créons un nouvel utilisateur dans MySQL, [comme indiqué précédemment](/interets/informatique/2012/02/07/installation-dun-serveur-http-https/).
Nommez-le _Agenda_, par exemple, et générez un mot de passe.
Mettez toujours "_localhost_" quand phpMyAdmin vous demande l'hôte lors de la création d'un utilisateur, parce que nous n'allons pas ouvrir notre serveur MySQL sur l'extérieur.
Enfin, pensez à cocher la case correspondante à la création d'une base de données portant le nom de cet utilisateur.
Munissez-vous du nom d'utilisateur (_Agenda_) et du mot de passe que vous avez choisi, puis allez sur la page principale de Horde (`http://agenda.exemple.fr`).
Si vous n'êtes pas redirigé automatiquement, allez dans le menu de gauche, _Administration_ > _Configuration_, puis cliquez sur _Horde_.
Avant de configurer quoique ce soit d'autre, allez sur l'onglet "_Database_", et remplissez les champs comme suit :
Et enregistrez.
Parcourez ensuite tous les onglets de configuration, avec pour objectif bien sûr de personnaliser comme vous le souhaitez votre installation, mais surtout choisir comme pilote "_SQL Database_" dans tous les onglets où c'est possible (c'est à dire _Preference System_, _Alarm System_, _DataTree System_, _Groups_, _Permissions_, _Lock System_, _Token System_ et _Virtual File Storage_ - les autres onglets peuvent également demander un pilote de stockage mais on ne le configurera pas).
Warning : _Authentication_
Une fois vos préférences choisies, cliquez sur le bouton "_Générer la configuration de Horde_".
Vous devriez ensuite revenir sur la page principale de l'administration.
Horde va afficher des messages d'erreurs relatifs à la base de données, en vous fournissant plusieurs boutons pour remédier au problème.
Il vous suffit de cliquez dessus pour successivement créer la structure de la base de données, puis la peupler avec les données de base.
Vous n'avez rien d'autre à faire que cliquer sur ces deux boutons pour que tout se mette en place tout seul !
On peut maintenant s'occuper de la question de l'authentification.
Warning : maintenant
```text
cp /var/www/exemple.fr/agenda/www/config/conf.php /var/www/exemple.fr/agenda/ww/config/conf.php-orig
```
Retournez dans _Administration_ > _Configuration_ > _Horde_, onglet "_Authentication_".
Choisissez "_SQL Authentication_" dans le menu _$conf[auth][driver]_.
Laissez "_Horde defaults_" dans le menu qui apparaitra alors.
Warning : _$conf[auth][admins]_
Vous allez créer votre propre compte utilisateur pour pouvoir vous servir de Kronolith.
Actuellement, Horde vous a "auto-identifié" en tant qu'_Administrator_, donc sans mot de passe.
En passant par le pilote SQL pour l'authentification, on est dans l'obligation de créer un nouveau compte, faute de quoi vous ne pourrez jamais vous connecter à Horde...
Donc indiquez le nom d'utilisateur que vous allez créer dans la zone de texte _$conf[auth][admin]_ en haut de la page, et cliquez sur le bouton pour générer la configuration de Horde.
Allez ensuite immédiatement dans _Administration_ > _Utilisateurs_, et créez ce fameux nouveau compte.
Une fois fait, vous pouvez vous déconnecter, puis vous reconnecter avec ce nouveau compte, sans perdre votre statut d'administrateur.
Important : _Administrator_
```text
cp /var/www/exemple.fr/agenda/www/config/conf.php-orig /var/www/exemple.fr/agenda/www/conf.php
```
Une fois que vous êtes connecté avec votre nouveau compte utilisateur, on peut passer à l'installation de Kronolith.
## Kronolith
Si vous n'y êtes pas, retournez dans la racine du site :
```bash
cd /var/ww/exemple.fr/agenda/www
```
L'installation de Kronolith est on ne peut plus simple :
```bash
pear install -a -B horde/kronolith
chown -R www-data:www-data ./
```
Il vous suffit alors d'aller sur la page d'administration de Horde : _Administration_ > _Configuration_, pour mettre à jour les tables correspondantes à Kronolith.
Vérifiez ensuite la configuration de Kronolith (_Administration_ > _Configuration_ > _Kronolith_), puis enregistrez-la.
Kronolith est prêt.
## Configuration et personnalisation
En l'état, tout fonctionne, mais rien n'est personnalisé.
Il me sera impossible de détailler chaque option de configuration tant il y en a.
Mais la grande force de Horde, c'est que ça marche "out-of-the-box".
Après, farfouiller dans les options, c'est plus pour peaufiner, et se créer un fichier de configuration aux oignons.
Cependant, je vous donne tout de même quelques pistes.
Pour commencer, nous avons installé Horde et Kronolith pour servir de calendrier partagé.
Horde vous laisse le choix de l'application à ouvrir au démarrage.
Allez dans _Préférences_ > _Préférences globales_ > _Afficher les préférences_.
Là, le premier menu vous permet de choisir l'application à présenter après la connexion.
Choisissez "_Agenda_".
Ensuite, sachez qu'il est possible d'afficher des agendas distants, dans de nombreux formats.
Vous le verrez en allant dans Organisation > Agenda.
Vous pouvez créer autant d'agenda que vous voulez, et surtout, vous pouvez les partager.
Si vous envisagez de créer plusieurs utilisateurs, chacun aura la possibilité de choisir avec qui il veut partager l'un ou l'autre de ses agendas.
Sachez aussi que vous pouvez importer un agenda iCal existant, autrement dit, rien ne vous empêche de récupérer vos calendriers Google actuels pour les importer dans Kronolith.
Pour aller plus loin avec les évènements, Horde est capable de gérer bien des webservices.
Leur configuration se trouve (vous l'aurez sans doute remarqué) sur la page principale de la configuration de Horde.
## Plusieurs instances de Horde
Nous avons suivi la procédure pour installer une unique instance globale de Horde : il vous sera impossible de créer un nouvel hôte virtuel, et y installer Horde de la même façon.
Si vous avez suivi cette procédure et que finalement vous décidez que vous avez besoin d'avoir plusieurs instances de Horde, vous devrez supprimer l'instance actuelle.
Pour supprimer Horde, utilisez la commande suivante :
```bash
pear uninstall `pear list -c horde | tail -n +4 | awk '{ print "horde/"$1 }'`
```
Placez-vous à la racine du domaine agenda :
```bash
cd /var/www/exemple.fr/agenda
```
Exécutez ensuite les commandes suivantes pour installer les bibliothèques :
```bash
pear config-create /var/www/exemple.fr/agenda/ /var/www/exemple.fr/agenda/pear.conf
pear -c /var/www/exemple.fr/agenda/pear.conf install pear
```
Installez ensuite Horde, depuis la nouvelle instance de PEAR :
```bash
/var/www/exemple.fr/agenda/pear/pear -c /var/www/exemple.fr/agenda/pear.conf channel-discover pear.horde.org
```
Puis :
```bash
/var/www/exemple.fr/agenda/pear/pear -c /var/www/exemple.fr/agenda/pear.conf install horde/horde_role
/var/www/exemple.fr/agenda/pear/pear -c /var/www/exemple.fr/agenda/pear.conf run-scripts horde/horde_role
```
Cette fois, quand le script vous demandera où installer Horde, spécifiez le chemin de fichier complet :
```text
/var/www/exemple.fr/agenda/www
```
Il reste encore à informer apache de l'emplacement des bibliothèques.
Créez ou modifiez le fichier.htaccess du site :
```bash
nano /var/www/exemple.fr/agenda/www/.htaccess
```
```text
php_value include_path /var/www/exemple.fr/pear/php
SetEnv PHP_PEAR_SYSCONF_DIR /var/www/exemple.fr/agenda
```
## Une seule instance de Horde, plusieurs applications
Vous pouvez bien entendu utiliser IMP à la place de [RoundCube](/interets/informatique/2012/02/07/installation-dun-serveur-http-https/) pour consulter vos messages, et accéder à Kronolith depuis la même instance de Horde, tout en gérant un wiki intégré, etc.
Le nombre et la qualité des applications écrites avec Horde est sans pareil, et sont toutes intégrées les unes aux autres.
Vous pourriez donc avoir envie d'utiliser Horde et pas seulement avec Kronolith.
Dans ce cas, la seule chose à changer dans notre procédure sera de trouver un nom de domaine plus adéquat que "`_agenda.exemple.fr_`" !
Après, la méthode d'installation et les commandes sont pratiquement les mêmes, quelle que soit l'application à installer.
Juste pour vous donner envie, sachez que parmi les applications intégrées à Horde, vous trouverez :
- IMP, le client de messagerie
- Kronolith, l'agenda partagé
- Nag, le gestionnaire de tâches
- Mnemo, le gestionnaire de notes
- Turba, le gestionnaire de contacts (lui aussi très impressionnant par son interopérabilité)
- Ingo, le gestionnaire de filtres (capable de gérer du procmail, du sieve, du maildrop, etc.)
- Gollem, le gestionnaire de fichiers (capable de se connecter à un partage samba ou nfs distant, en ssh, en FTP, etc.)
- Ansel, la galerie photos
- etc. etc.
Si vous avez suivi la première partie de ce tutoriel, pour installer Horde avec Kronolith dans une instance globale, je suis persuadé que vous allez mourir d'envie d'essayer les autres applications.
Et vous aurez bien raison : Horde est tout simplement la meilleure application web au monde (remarque tout à fait personnelle...)