Serveurs de calendrier: DAViCAL (RSCDS), tuto & question
Publié : 17 déc. 2007, 11:55
N.D.L.R.: veuillez excuser les interruptions dans la parution de ce post dû à des problèmes techniques vaillamment résolus par nos admins...
Introduction.
Je fais référence au topic Exportation sur réseau impossible où j'introduis la problématique du partage de calendrier et ses solutions. J'ajouterai à ça que ma solution part de l'option de base de d'abord installer les partages en Intranet, puis de chercher à l'étendre aux accès externes par Internet. Le démarrage par l'approche Google Calendar et cie ne me semble pas très professionnelle en entreprise. Pour une bande de copain, je ne dis pas...
De la même manière dont on choisit d'installer un serveur d'email intra-muros plutôt que de jouer avec des hotmail, yahoo et autre gmail, le calendrier de groupe doit se loger sur le même serveur, intra-muros.
Depuis l'explosion de l'excellent Thunderbird qui permet la gestion collaborative des emails en Imap, il ne manque plus qu'une aussi bonne gestion du calendrier (et tâches) pour pouvoir se libérer du suzerain ouine douze aix chenge et son vassal aout louque. Vous avez tout compris. Leur saint patron a justement dit y-a-pas-longtemps: "le logiciel libre et open source est un véritable cancer". Alors, allons y gaiement. Que les modérateurs me censurent si j'en dis trop!
Je renvoie aussi les lecteurs aux très bonnes mises au point de Yann Klis http://strasslab.net/blog/index.php?200 ... a-fin-2006
et de Amaury Bouchard http://amaury.net/informatique/travail_cooperatif pour compléter le cadre qui fait l'objet d'une demande de plus en plus forte à l'heure actuelle.
Mes ingrédients de départ: le presque très bon et très prometteur Sunbird installé sur tous les postes clients et une Debian Etch4 équipée d'Apache2 et PHP5 en guise de serveur. Il n'existe pas encore, à ma connaissance, de forum francophone sur le sujet, alors ce sera ici ....
Le document d'installation originel se trouve ici: http://rscds.sourceforge.net/installation.php
Ce qui suit est du style recette de cuisine, mais je ne peux faire beaucoup plus dans ce cadre, d'autant que suis moi-même loin d'être un pro du Linux.
Tuto: c'est parti...
1) Mon fichier /etc/apt/sources/list contient:
deb http://debian.mcmillan.net.nz/debian unstable awm
deb ftp://ftp.debian.skynet.be/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main
2) En console, on lance en utilisateur root:
apt-get update
apt-key advanced --keyserver subkeys.pgp.net --recv-keys CCA377BD77494424B0DB674F8C90347F8F068012
apt-get install postgresql-8.1 rscds
Après dépaquetage, 23,5Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? --->>> répondre O
ATTENTION : les paquets suivants n'ont pas été authentifiés.
libawl-php rscds
Faut-il installer ces paquets sans vérification (o/N) ? --->>> répondre O
3) Changer d'utilisateur:
su postgres
et lancer
createuser --no-createdb --no-createrole general
Le nouvel rôle est-t'il un superutilisateur ? (o/n) --->>> répondre n
/usr/share/rscds/dba/create-database.sh
The password for the 'admin' user has been set to '****' --->> Bien noter ce mdp car il ne vous sera plus accessible une 2d fois!
Se remettre en root:
su root
4) Editer le fichier: /etc/postgresql/8.1/main/pg_hba.conf
et y placer la ligne:
local davical general trust
5) J'ai créé un fichier /etc/apache2/sites-available/davical
(ça c'est le conseil originel, mais on peut aussi très bien le mettre en /etc/apache2/sites-enabled/davical sans problème)
dans lequel j'ai mis:
# Virtual Host def for Debian packaged RSCDS
<VirtualHost ip.de.mon.serveur >
DocumentRoot /usr/share/rscds/htdocs
DirectoryIndex index.php index.html
ServerName davical.example.net
ServerAlias calendar.example.net
Alias /images/ /usr/share/rscds/htdocs/images/
php_value include_path /usr/share/awl/inc
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value error_reporting "E_ALL & ~E_NOTICE"
php_value default_charset "utf-8"
</VirtualHost>
Vous aurez compris qu'il faut remplacer partout ip.de.mon.serveur par l'adresse IP de votre serveur...
6) Il faut créer un fichier /etc/rscds/ip.de.mon.serveur-conf.php
dans lequel on met:
<?php
// $c->domain_name = "calendar.example.net";
// $c->sysabbr = 'rscds';
// $c->admin_email = 'admin@example.net';
$c->system_name = "Really Simple CalDAV Store";
$c->collections_always_exist = true;
$c->enable_row_linking = true;
$c->default_locale = fr_FR.UTF-8;
$c->pg_connect[] = 'dbname=davical port=5433 user=general';
$c->pg_connect[] = 'dbname=davical port=5432 user=general';
?>
Remarques:
- les lignes commençant par // sont encore en commentaire et
- il faut absolument mettre "dbname = davical" et non "dbname = rscds" comme indiqué dans la doc d'origine. C'est bel et bien une erreur.
7) Pour finir, un petit dernier
reboot
(apparemment /etc/init.d/apache2 restart ne suffit pas ... car le navigateur déclare "Could not connect to PostgreSQL database", et je suis pourtant bien informé du "Starting PostgreSQL 8.1 database server: main" en fin d'install).
Après ça je peux rentrer dans l'interface web d'administration à partir d'un poste client via http://ip.de.mon.serveur
Enfin, il ne reste plus qu'à ouvrir un calendrier sur mes Sunbird clients, sur réseau, au format CalDAV à l'emplacement:
http://ip.de.mon.serveur/caldav.php/resource1/home, et une nouvelle ère de l'histoire de l'humanité commence... comme l'a maintes fois affirmé le saint patron!
resource1 et home sont des noms au libre choix, mais bien présents tous les 2 sinon l'agenda n'est pas créé. C'est seulement après avoir encodé un 1ier évènement que vous pourrez voir la ressource apparaître en administration.
Toute cette installation a été réalisée à partir d'un poste client en remote, via le couple WinSCP-Putty, idéal pour taper ses ordres en console et naviguer-manipuler-éditer ses fichiers avec la + grande aisance.
C'est ici que je vais demander votre collaboration et poser ma 1ière question.
Comme on peut s'en apercevoir, le site Virtual Host du serveur DAViCAL est installé comme site unique par défaut et ça ne m'arrange pas du tout. Les instructions figurant dans "Installation in a Sub Directory" du tuto originel sont fausses ou incomplètes.
J'ai d'autres petits sites et interfaces web de service installés sur ce serveur et le fichier /etc/apache2/sites-available/davical ainsi constitué m'inhibe tous les autres accès! Déplacer ce fichier dans /etc/apache2/sites-enabled ne change rien.
Quand je remplace <Virtual Host ip.de.mon.serveur> par <Virtual Host *> comme je vois dans les autres fichiers Virtual Host, je retrouve mes autres accès mais je n'arrive plus à reprendre contact avec mon administration DAViCAL, et Sunbird perd le contact aussi bien sûr ... C'est l'un ou les autres... J'ai épuisé tous les tutos Virtual Host trouvés sur Google. Pouvez-vous m'aider à ce que mon accès d'administration DAViCAL soit accessible au même rang que les autres? On devrait pouvoir y accéder avec une adresse du genre: http://ip.de.mon.serveur/davical ou qlq chose comme ça....
Merci d'avance.
Voila. En fin de journée du 18/12/07 j'ai trouvé réponse à ma question.
Je préfère mettre la solution ici plutôt que d'ouvrir un nouveau post par souci d'offir un tuto condensé sur 1 post.
Sans inhiber mes autres services web, j'ai réussi à faire fonctionner l'accès via http://ip.de.mon.serveur/davical (et l'agenda Sunbird via http://ip.de.mon.serveur/davical/caldav.php/resource1/home) en faisant ceci:
- dans /etc/php5/apache2/php.ini mettre include_path = ".:/usr/share/awl/inc"
- créer lien symbolique /var/www/davical vers /usr/share/rscds/htdocs
- régler le sort du port 5433 qui déclare subitement un prob mais le port 5432 récupère la situation:
soit dans /etc/rscds/ip.de.mon.serveur-conf.php commenter // $c->pg_connect[] = 'dbname=davical port=5433 user=general';
soit dans /etc/services ouvrir le port 5433 à l'image du 5432
- remplacer <Virtual Host ip.de.mon.serveur> par <Virtual Host *> dans le fichier /etc/apache2/sites-enabled/davical. Je ne sais si ce fichier sert encore vraiment pour les accès Intranet, mais Internet sans doute, je dois encore vérifier.
Ce tutorial est ma 1ière version. J'engage tout le monde à le tester. Je vais refaire une nouvelle installation pour le roder... Vive 2008 et un nouveau monde se lèvera, libre de aix chenge aout louque. A vos claviers les choutes zé les mecs. La victoire est toute proche.
.... J'ai amendé plusieurs fois ce post, le 18/12/07, depuis sa 1ière mouture. Le tuto a été vérifié une 2d fois sur un autre serveur et j'ai donc injecté qlqs corrections. Pour moi, c'est bon comme ça... Essayez donc et faites vos remarques.
.... Le 19/12/2007 j'ai refait une 3ième installation suivant les mêmes principes. Ca roule. J'ai apporté des corrections de présentation au tuto.
Derniers commentaires:
1) N'oubliez pas que pour compléter le tableau on peut aussi installer un Webmail (Horde - IMP, un des + courus) pour accéder à ses mails depuis Internet ou même Thunderbird en Imap en faisant référence à son serveur distant via une URL.
2) Une question importante reste encore à bien mettre au point pour moi: c'est celle du partage (un vrai de vrai, en temps réel) du carnet d'adresse de Thunderbird. Entre Horde-Turba et Thunderbird je n'arrive même pas a échanger le moindre carnet... En Intranet (entre plusieurs clients Thunderbird), j'ai essayé les solutions non satisfaisantes de AddressbooksSynchronizer et Synckolab. Par rapport à ces solutions très décevantes, la copie du carnet (abook.mab) automatisée dans un batch qui lance TB est encore la meilleure des solutions. Je vais donc me lancer dans la gestion du carnet via l'OpenLDAP..... Après les 1ières recherches, il s'avère que cet annuaire n'est pas (encore !) supporté en écriture par Thunderbird. Il semble aussi que l'écriture au vol n'est pas vraiment le point fort de la spécification LDAP, quoique faisable de toute manière... Mais ceci doit faire l'objet d'un autre topic...
3) Je trouve aussi que la séparation de l'agenda Sunbird et du gestionnaire de mails Thunderbird n'est pas une mauvaise chose, parce qu'on peut mieux jouer sur 2 fenêtres côte à côte. Le Lightning intégré ne permet pas de voir ses mails en même temps. Mais pour les irréductibles roués aux anciennes habitudes aout louque, évidemment...
4) Et il reste aussi à essayer de connecter l'agenda Horde-Kronolith à notre serveur DAViCAL.... tomorrow is an other day comme disent nos amis! Sans oublier Horde-Nag pour les tâches!
Ayant pas mal travaillé dans le domaine, je suis prêt à répondre à vos questions ...
Je vais continuer à amender ce post au fil de mes constations et l'avancement journalier de mes travaux. Son contenu n'est donc pas figé, loin de là. Merci de réagir nombreux et surtout d'essayer, de tester très nombreux.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Introduction.
Je fais référence au topic Exportation sur réseau impossible où j'introduis la problématique du partage de calendrier et ses solutions. J'ajouterai à ça que ma solution part de l'option de base de d'abord installer les partages en Intranet, puis de chercher à l'étendre aux accès externes par Internet. Le démarrage par l'approche Google Calendar et cie ne me semble pas très professionnelle en entreprise. Pour une bande de copain, je ne dis pas...
De la même manière dont on choisit d'installer un serveur d'email intra-muros plutôt que de jouer avec des hotmail, yahoo et autre gmail, le calendrier de groupe doit se loger sur le même serveur, intra-muros.
Depuis l'explosion de l'excellent Thunderbird qui permet la gestion collaborative des emails en Imap, il ne manque plus qu'une aussi bonne gestion du calendrier (et tâches) pour pouvoir se libérer du suzerain ouine douze aix chenge et son vassal aout louque. Vous avez tout compris. Leur saint patron a justement dit y-a-pas-longtemps: "le logiciel libre et open source est un véritable cancer". Alors, allons y gaiement. Que les modérateurs me censurent si j'en dis trop!
Je renvoie aussi les lecteurs aux très bonnes mises au point de Yann Klis http://strasslab.net/blog/index.php?200 ... a-fin-2006
et de Amaury Bouchard http://amaury.net/informatique/travail_cooperatif pour compléter le cadre qui fait l'objet d'une demande de plus en plus forte à l'heure actuelle.
Mes ingrédients de départ: le presque très bon et très prometteur Sunbird installé sur tous les postes clients et une Debian Etch4 équipée d'Apache2 et PHP5 en guise de serveur. Il n'existe pas encore, à ma connaissance, de forum francophone sur le sujet, alors ce sera ici ....
Le document d'installation originel se trouve ici: http://rscds.sourceforge.net/installation.php
Ce qui suit est du style recette de cuisine, mais je ne peux faire beaucoup plus dans ce cadre, d'autant que suis moi-même loin d'être un pro du Linux.
Tuto: c'est parti...
1) Mon fichier /etc/apt/sources/list contient:
deb http://debian.mcmillan.net.nz/debian unstable awm
deb ftp://ftp.debian.skynet.be/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main
2) En console, on lance en utilisateur root:
apt-get update
apt-key advanced --keyserver subkeys.pgp.net --recv-keys CCA377BD77494424B0DB674F8C90347F8F068012
apt-get install postgresql-8.1 rscds
Après dépaquetage, 23,5Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? --->>> répondre O
ATTENTION : les paquets suivants n'ont pas été authentifiés.
libawl-php rscds
Faut-il installer ces paquets sans vérification (o/N) ? --->>> répondre O
3) Changer d'utilisateur:
su postgres
et lancer
createuser --no-createdb --no-createrole general
Le nouvel rôle est-t'il un superutilisateur ? (o/n) --->>> répondre n
/usr/share/rscds/dba/create-database.sh
The password for the 'admin' user has been set to '****' --->> Bien noter ce mdp car il ne vous sera plus accessible une 2d fois!
Se remettre en root:
su root
4) Editer le fichier: /etc/postgresql/8.1/main/pg_hba.conf
et y placer la ligne:
local davical general trust
5) J'ai créé un fichier /etc/apache2/sites-available/davical
(ça c'est le conseil originel, mais on peut aussi très bien le mettre en /etc/apache2/sites-enabled/davical sans problème)
dans lequel j'ai mis:
# Virtual Host def for Debian packaged RSCDS
<VirtualHost ip.de.mon.serveur >
DocumentRoot /usr/share/rscds/htdocs
DirectoryIndex index.php index.html
ServerName davical.example.net
ServerAlias calendar.example.net
Alias /images/ /usr/share/rscds/htdocs/images/
php_value include_path /usr/share/awl/inc
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value error_reporting "E_ALL & ~E_NOTICE"
php_value default_charset "utf-8"
</VirtualHost>
Vous aurez compris qu'il faut remplacer partout ip.de.mon.serveur par l'adresse IP de votre serveur...
6) Il faut créer un fichier /etc/rscds/ip.de.mon.serveur-conf.php
dans lequel on met:
<?php
// $c->domain_name = "calendar.example.net";
// $c->sysabbr = 'rscds';
// $c->admin_email = 'admin@example.net';
$c->system_name = "Really Simple CalDAV Store";
$c->collections_always_exist = true;
$c->enable_row_linking = true;
$c->default_locale = fr_FR.UTF-8;
$c->pg_connect[] = 'dbname=davical port=5433 user=general';
$c->pg_connect[] = 'dbname=davical port=5432 user=general';
?>
Remarques:
- les lignes commençant par // sont encore en commentaire et
- il faut absolument mettre "dbname = davical" et non "dbname = rscds" comme indiqué dans la doc d'origine. C'est bel et bien une erreur.
7) Pour finir, un petit dernier
reboot
(apparemment /etc/init.d/apache2 restart ne suffit pas ... car le navigateur déclare "Could not connect to PostgreSQL database", et je suis pourtant bien informé du "Starting PostgreSQL 8.1 database server: main" en fin d'install).
Après ça je peux rentrer dans l'interface web d'administration à partir d'un poste client via http://ip.de.mon.serveur
Enfin, il ne reste plus qu'à ouvrir un calendrier sur mes Sunbird clients, sur réseau, au format CalDAV à l'emplacement:
http://ip.de.mon.serveur/caldav.php/resource1/home, et une nouvelle ère de l'histoire de l'humanité commence... comme l'a maintes fois affirmé le saint patron!
resource1 et home sont des noms au libre choix, mais bien présents tous les 2 sinon l'agenda n'est pas créé. C'est seulement après avoir encodé un 1ier évènement que vous pourrez voir la ressource apparaître en administration.
Toute cette installation a été réalisée à partir d'un poste client en remote, via le couple WinSCP-Putty, idéal pour taper ses ordres en console et naviguer-manipuler-éditer ses fichiers avec la + grande aisance.
C'est ici que je vais demander votre collaboration et poser ma 1ière question.
Comme on peut s'en apercevoir, le site Virtual Host du serveur DAViCAL est installé comme site unique par défaut et ça ne m'arrange pas du tout. Les instructions figurant dans "Installation in a Sub Directory" du tuto originel sont fausses ou incomplètes.
J'ai d'autres petits sites et interfaces web de service installés sur ce serveur et le fichier /etc/apache2/sites-available/davical ainsi constitué m'inhibe tous les autres accès! Déplacer ce fichier dans /etc/apache2/sites-enabled ne change rien.
Quand je remplace <Virtual Host ip.de.mon.serveur> par <Virtual Host *> comme je vois dans les autres fichiers Virtual Host, je retrouve mes autres accès mais je n'arrive plus à reprendre contact avec mon administration DAViCAL, et Sunbird perd le contact aussi bien sûr ... C'est l'un ou les autres... J'ai épuisé tous les tutos Virtual Host trouvés sur Google. Pouvez-vous m'aider à ce que mon accès d'administration DAViCAL soit accessible au même rang que les autres? On devrait pouvoir y accéder avec une adresse du genre: http://ip.de.mon.serveur/davical ou qlq chose comme ça....
Merci d'avance.
Voila. En fin de journée du 18/12/07 j'ai trouvé réponse à ma question.
Je préfère mettre la solution ici plutôt que d'ouvrir un nouveau post par souci d'offir un tuto condensé sur 1 post.
Sans inhiber mes autres services web, j'ai réussi à faire fonctionner l'accès via http://ip.de.mon.serveur/davical (et l'agenda Sunbird via http://ip.de.mon.serveur/davical/caldav.php/resource1/home) en faisant ceci:
- dans /etc/php5/apache2/php.ini mettre include_path = ".:/usr/share/awl/inc"
- créer lien symbolique /var/www/davical vers /usr/share/rscds/htdocs
- régler le sort du port 5433 qui déclare subitement un prob mais le port 5432 récupère la situation:
soit dans /etc/rscds/ip.de.mon.serveur-conf.php commenter // $c->pg_connect[] = 'dbname=davical port=5433 user=general';
soit dans /etc/services ouvrir le port 5433 à l'image du 5432
- remplacer <Virtual Host ip.de.mon.serveur> par <Virtual Host *> dans le fichier /etc/apache2/sites-enabled/davical. Je ne sais si ce fichier sert encore vraiment pour les accès Intranet, mais Internet sans doute, je dois encore vérifier.
Ce tutorial est ma 1ière version. J'engage tout le monde à le tester. Je vais refaire une nouvelle installation pour le roder... Vive 2008 et un nouveau monde se lèvera, libre de aix chenge aout louque. A vos claviers les choutes zé les mecs. La victoire est toute proche.
.... J'ai amendé plusieurs fois ce post, le 18/12/07, depuis sa 1ière mouture. Le tuto a été vérifié une 2d fois sur un autre serveur et j'ai donc injecté qlqs corrections. Pour moi, c'est bon comme ça... Essayez donc et faites vos remarques.
.... Le 19/12/2007 j'ai refait une 3ième installation suivant les mêmes principes. Ca roule. J'ai apporté des corrections de présentation au tuto.
Derniers commentaires:
1) N'oubliez pas que pour compléter le tableau on peut aussi installer un Webmail (Horde - IMP, un des + courus) pour accéder à ses mails depuis Internet ou même Thunderbird en Imap en faisant référence à son serveur distant via une URL.
2) Une question importante reste encore à bien mettre au point pour moi: c'est celle du partage (un vrai de vrai, en temps réel) du carnet d'adresse de Thunderbird. Entre Horde-Turba et Thunderbird je n'arrive même pas a échanger le moindre carnet... En Intranet (entre plusieurs clients Thunderbird), j'ai essayé les solutions non satisfaisantes de AddressbooksSynchronizer et Synckolab. Par rapport à ces solutions très décevantes, la copie du carnet (abook.mab) automatisée dans un batch qui lance TB est encore la meilleure des solutions. Je vais donc me lancer dans la gestion du carnet via l'OpenLDAP..... Après les 1ières recherches, il s'avère que cet annuaire n'est pas (encore !) supporté en écriture par Thunderbird. Il semble aussi que l'écriture au vol n'est pas vraiment le point fort de la spécification LDAP, quoique faisable de toute manière... Mais ceci doit faire l'objet d'un autre topic...
3) Je trouve aussi que la séparation de l'agenda Sunbird et du gestionnaire de mails Thunderbird n'est pas une mauvaise chose, parce qu'on peut mieux jouer sur 2 fenêtres côte à côte. Le Lightning intégré ne permet pas de voir ses mails en même temps. Mais pour les irréductibles roués aux anciennes habitudes aout louque, évidemment...
4) Et il reste aussi à essayer de connecter l'agenda Horde-Kronolith à notre serveur DAViCAL.... tomorrow is an other day comme disent nos amis! Sans oublier Horde-Nag pour les tâches!
Ayant pas mal travaillé dans le domaine, je suis prêt à répondre à vos questions ...
Je vais continuer à amender ce post au fil de mes constations et l'avancement journalier de mes travaux. Son contenu n'est donc pas figé, loin de là. Merci de réagir nombreux et surtout d'essayer, de tester très nombreux.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11