Maintenant que nous avons installé les bases d’un auto-hébergement, il est temps de mettre en place les alternatives à 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 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 :
nano /etc/apache2/sites-available/agenda.exemple.fr
<VirtualHost *:80>
ServerName agenda.exemple.fr
Redirect / https://agenda.exemple.fr/
</VirtualHost>
<VirtualHost *:443>
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
</VirtualHost>
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 :
/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 :
a2ensite agenda.exemple.fr
/etc/init.d/apache2 restart
Horde
Créons l’arborescence de notre nouveau site :
mkdir -p /var/www/exemple.fr/agenda/{www,log}
Horde est intimement lié aux bibliothèques PEAR, 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.
cd /var/www/exemple.fr/agenda/www
On met à jour PEAR :
pear upgrade PEAR
On ajoute le dépôt (canal) de Horde :
pear channel-discover pear.horde.org
Et on définit le répertoire d’installation de Horde :
pear install horde/horde_role
pear run-scripts horde/horde_role
Quand le script d’installation vous demandera où installer Horde, répondez :
./
Puis on procède finalement au téléchargement des paquets et leur décompression à l’endroit spécifié :
pear install -a -B horde/horde
Une fois terminé, on créé le fichier de configuration initial :
cp config/conf.php.dist config/conf.php
On attribue les bons droits à l’installation :
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. 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
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
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 :
cd /var/ww/exemple.fr/agenda/www
L’installation de Kronolith est on ne peut plus simple :
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 :
pear uninstall `pear list -c horde | tail -n +4 | awk '{ print "horde/"$1 }'`
Placez-vous à la racine du domaine agenda :
cd /var/www/exemple.fr/agenda
Exécutez ensuite les commandes suivantes pour installer les bibliothèques :
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 :
/var/www/exemple.fr/agenda/pear/pear -c /var/www/exemple.fr/agenda/pear.conf channel-discover pear.horde.org
Puis :
/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 :
/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 :
nano /var/www/exemple.fr/agenda/www/.htaccess
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 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…)
Taxonomies
Tags
- Google Calendar 1
- Horde 3
- Kronolith 2
Richard Dern
Échanger autour de ce texte
Si vous souhaitez réagir publiquement, un fil dédié vous attend.
Ouvrir le fil de discussion