|
|
|
<!-- title: Installation de Horde Groupware -->
|
|
|
|
<!-- category: Hébergement Mobilité Debian -->
|
|
|
|
<!-- tag: planet -->
|
|
|
|
|
|
|
|
Je remets en place progressivement les outils nécessaires sur mon serveur
|
|
|
|
Debian. Je me suis posé à nouveau la problématique de la synchronisation des
|
|
|
|
contacts et du calendrier entre mes appareils,<!-- more --> c'est à dire mon ordinateur
|
|
|
|
portable sous ArchLinux avec le logiciel de courrier *Thunderbird* et son
|
|
|
|
module de gestion de calendrier *Lightning*, mon antique téléphone BlackBerry
|
|
|
|
Bold 9780. Un accès Web à mon calendrier et mes contacts depuis n'importe
|
|
|
|
quelle machine quand je suis en déplacement serait un plus.
|
|
|
|
|
|
|
|
Le téléphone supporte la synchronisation Google de facto et SyncML en
|
|
|
|
installant le client [Funambol](http://www.funambol.com). Je n'ai trouvé aucune
|
|
|
|
possibilité gratuite pour faire de la synchronisation CardDAV, CalDAV ou
|
|
|
|
ActiveSync. SyncML reste ma meilleure option. On peut installer le client
|
|
|
|
Funambol du BlackBerry Store mais il fait plus que nécessaire car il
|
|
|
|
s'interface avec le serveur Funambol ou bien on peut installer une version plus
|
|
|
|
ancienne qui suffit pour la synchro des contacts, du calendrier et des tâches
|
|
|
|
depuis [ce lien](http://www.memotoo.com/how-to-sync-your-blackberry-phone.php).
|
|
|
|
Côté ordinateur, Lightning supporte nativement le protocole CalDav et le carnet
|
|
|
|
d'adresse peut être synchronisé avec CardDAV en installant le [module
|
|
|
|
complémentaire pour Sogo](http://www.sogo.nu/english/downloads/frontends.html).
|
|
|
|
|
|
|
|
<img src="/images/2014/logo-horde.jpg" style="float:left; margin: 0px 20px;"/>A
|
|
|
|
l'époque de mon Motorola Droid, j'avais déjà utilisé le client Funambol pour
|
|
|
|
synchroniser mes données avec
|
|
|
|
[eGroupware](http://www.egroupware.org/community_edition) et je m'étais
|
|
|
|
intéressé à *Horde*. Ce dernier semblait plus difficile à installer,
|
|
|
|
l'interface Web était peu conviviale et j'avais mis en place eGroupware que
|
|
|
|
j'avais utilisé 1 an avec satisfaction. J'ai su qu'une version 5 de Horde était
|
|
|
|
sortie dans l'année et j'ai décidé de l'évaluer. Horde supporte SyncML,
|
|
|
|
CardDAV, CalDav et son interface graphique a été rajeunie.
|
|
|
|
|
|
|
|
Ma cible de déploiement est mon serveur privé virtuel avec
|
|
|
|
l'environnement technique suivant :
|
|
|
|
|
|
|
|
- Distribution Debian Wheezy
|
|
|
|
- Serveur Web NginX
|
|
|
|
|
|
|
|
L'installation est plus complexe que la moyenne mais avec un bon tuto on s'en
|
|
|
|
sort. Horde est modulaire : un Framework et des applications. Moi j'ai besoin
|
|
|
|
de Kronolith (la gestion du calendrier) et de Turba (la gestion des contacts).
|
|
|
|
J'ai décliné l'installation par le système de paquets car généralement cela
|
|
|
|
tire le serveur Apache alors que j'utilise NginX et j'ai opté pour PEAR,
|
|
|
|
l'outil d'installation PHP que ne connaissais pas. De ma compréhension, c'est
|
|
|
|
l'équivalent de CPAN pour PERL ou d'APT pour Debian. Horde publie ses
|
|
|
|
composants pour l'infrastructure PEAR [sur ce serveur](http://pear.horde.org).
|
|
|
|
|
|
|
|
L'installation de PEAR sur Debian est galette.
|
|
|
|
|
|
|
|
apt-get install php-pear
|
|
|
|
|
|
|
|
Puis, on enregistre le canal Horde sur Pear et on installe les composants
|
|
|
|
nécessaires :
|
|
|
|
|
|
|
|
```shell
|
|
|
|
mkdir -p /var/www/horde
|
|
|
|
cd /var/www/horde
|
|
|
|
pear channel-discover pear.horde.org
|
|
|
|
pear install horde/horde_role
|
|
|
|
pear run-scripts horde/horde_role
|
|
|
|
pear install -a -B horde/horde
|
|
|
|
pear install horde/turba
|
|
|
|
pear install horde/kronolith
|
|
|
|
pear install horde/mnemo
|
|
|
|
pear install horde/Horde_SyncMl
|
|
|
|
```
|
|
|
|
|
|
|
|
Dans le cas de NginX sur Debian, il faut ajuster les permissions du répertoire.
|
|
|
|
|
|
|
|
chown -R www-data:www-data /var/www/horde
|
|
|
|
|
|
|
|
Et il faut créer les fichiers de configuration de chaque application à partir
|
|
|
|
des modèles fournis :
|
|
|
|
|
|
|
|
```shell
|
|
|
|
cd /var/www/horde/config
|
|
|
|
for f in *.dist; do cp $f `basename $f .dist`; done
|
|
|
|
cd /var/www/horde/kronolith/config
|
|
|
|
for f in *.dist; do cp $f `basename $f .dist`; done
|
|
|
|
cd /var/www/horde/turba/config
|
|
|
|
for f in *.dist; do cp $f `basename $f .dist`; done
|
|
|
|
cd /var/www/horde/nag/config
|
|
|
|
for f in *.dist; do cp $f `basename $f .dist`; done
|
|
|
|
cd /var/www/horde/mnemo/config
|
|
|
|
for f in *.dist; do cp $f `basename $f .dist`; done
|
|
|
|
```
|
|
|
|
|
|
|
|
Il reste à configurer NginX. Je force l'utilisation de HTTPS en redirigeant les
|
|
|
|
requêtes HTTP vers la version sécurisée du site.
|
|
|
|
|
|
|
|
```nginx
|
|
|
|
server {
|
|
|
|
listen 80;
|
|
|
|
server_name groupware.exemple.fr;
|
|
|
|
rewrite ^ https://$server_name$request_uri? permanent;
|
|
|
|
}
|
|
|
|
|
|
|
|
server {
|
|
|
|
listen 443 ssl;
|
|
|
|
server_name groupware.exemple.fr;
|
|
|
|
root /var/www/horde;
|
|
|
|
index index.php;
|
|
|
|
|
|
|
|
ssl_certificate /etc/ssl/exemple.fr.cert;
|
|
|
|
ssl_certificate_key /etc/ssl/exemple.fr.key;
|
|
|
|
|
|
|
|
access_log /var/log/nginx/horde-access.log;
|
|
|
|
error_log /var/log/nginx/horde-error.log;
|
|
|
|
|
|
|
|
location / {
|
|
|
|
try_files $uri $uri/ /rampage.php?$args;
|
|
|
|
}
|
|
|
|
|
|
|
|
location ~ \.php {
|
|
|
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
|
|
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
|
|
|
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
|
|
|
|
fastcgi_param PHP_VALUE "cgi.fix_pathinfo=1";
|
|
|
|
fastcgi_pass unix:/var/run/php5-fpm.sock;
|
|
|
|
fastcgi_index index.php;
|
|
|
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
|
|
include fastcgi_params;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Horde propose le choix entre plusieurs bases de données J'utilise déjà MySQL,
|
|
|
|
j'ai donc créé une nouvelle base pour Horde en utilisant les outils
|
|
|
|
en ligne de commande de MySQL.
|
|
|
|
|
|
|
|
mysql -u root -p
|
|
|
|
mysql> CREATE DATABASE horde;
|
|
|
|
mysql> GRANT ALL ON horde.* TO horde@localhost IDENTIFIED BY 'horde';
|
|
|
|
mysql> FLUSH PRIVILEGES;
|
|
|
|
mysql> EXIT;
|
|
|
|
|
|
|
|
A la première connexion Web, il n'y a pas d'authentification, on est connecté
|
|
|
|
en tant qu'administrateur sans mot de passe.
|
|
|
|
|
|
|
|
#### 1ère étape : définir la base de donnée.
|
|
|
|
|
|
|
|
1. Aller dans le menu Administration / Configuration
|
|
|
|
|
|
|
|
<img src="/images/2014/horde-config.png"/>
|
|
|
|
|
|
|
|
2. Cliquer sur le composant Horde (horde)
|
|
|
|
|
|
|
|
<img src="/images/2014/horde-application.png"/>
|
|
|
|
|
|
|
|
3. Configurer la base de donnée dans l'onglet Database
|
|
|
|
|
|
|
|
<img src="/images/2014/horde-database.png"/>
|
|
|
|
|
|
|
|
#### 2ème étape : créer un utilisateur avec les droits d'administration.
|
|
|
|
|
|
|
|
1. Aller dans le menu Administration / Utilisateur
|
|
|
|
|
|
|
|
<img src="/images/2014/horde-user.png"/>
|
|
|
|
|
|
|
|
2. Créer un nouvel utilisateur
|
|
|
|
|
|
|
|
<img src="/images/2014/horde-adduser.png"/>
|
|
|
|
|
|
|
|
3. Retourner dans le menu Administration / Configuration et rajouter
|
|
|
|
l'utilisateur nouvellement créé dans les admins de l'onglet
|
|
|
|
Authentification.
|
|
|
|
|
|
|
|
<img src="/images/2014/horde-setadmin.png"/>
|
|
|
|
|
|
|
|
4. Il est conseillé de tester le nouvel utilisateur en se déconnectant et en se
|
|
|
|
reconnectant. Si cela fonctionne, on peut enlever l'utilisateur
|
|
|
|
Administrator de la liste des admins.
|
|
|
|
|
|
|
|
#### 3ème étape : finaliser l'installation des applications
|
|
|
|
|
|
|
|
Dans le menu Administration / Configuration, tous les composants installés
|
|
|
|
apparaîssent. Les boutons *mettre à jour toutes les configurations* et *mettre
|
|
|
|
à jour les schémas de la base* doivent être cliqués pour finaliser l'installation.
|
|
|
|
|
|
|
|
#### Conclusion
|
|
|
|
|
|
|
|
L'URL CalDAV pour s'inscrire au calendrier se trouve dans les propriétés du
|
|
|
|
calendrier de l'application Agenda, dans l'onglet *inscription*. De manière
|
|
|
|
similaire, l'URL CardDAV se trouve dans les propriétés du carnet d'adresses.
|
|
|
|
Quant à l'URL SyncML, c'est un point d'entrée unique pour la synchronisation de
|
|
|
|
toutes les applications ; dans notre exemple ce serait
|
|
|
|
http://groupware.exemple.fr/rpc.php.
|
|
|
|
|
|
|
|
J'ai mis en place Horde depuis 1 semaine avec une synchronisation SyncML par
|
|
|
|
Funambol sur mon téléphone et une synchronisation CardDAV et CalDAV depuis
|
|
|
|
Thunderbird. J'ai lu que SyncML n'était pas très bon pour gérer les conflits de
|
|
|
|
synchronisation mais je n'ai pas rencontré de souci. L'évaluation se passe très
|
|
|
|
bien pour l'instant.
|