Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Leapro-pro appli-egroupware


Une solution de groupware OpenSource

par Anne

Quand l'évolution des technologies impacte sur l'organisation d'entreprise

Le schéma organisationnel des entreprises qui était plutôt de type hiérarchique et rigide il y a quelques années tend à s'aplatir et se doter de nombreuses fonctionnalités transversales.

Cette évolution implique donc un remaniement des modes de communication et d'organisation, ainsi que du système d'information. Un des outils clé de ce changement est le groupware qui dote l'entreprise de moyens simples et efficaces pour permettre à  l'ensemble de ses collaborateurs d'y parvenir : partage de l'information à travers de multiples calendriers privés ou non, de forums, d'outils collaboratifs (de type wiki), de gestionnaire de contacts...

Les quatre membres fondateurs d'eGroupWare sont issus du projet phpGroupWare. Celui-ci n'évoluant pas selon eux dans la bonne direction et ne collant pas assez aux besoins exprimés par les utilisateurs d'un groupware, ils décidèrent de forker (partir et refaire) le projet et d'initier ainsi eGroupWare.

L'objectif clairement annoncé est de concurrencer des solutions commerciales comme Notes et Exchange tout en respectant les principes de l'Open Source. à cet effet l'équipe d'eGroupWare a donc orienté son outil en fonction de ce que doit apporter un logiciel de groupware dans une entreprise, une association,...

Selon Reiner Jung, chef de projet eGroupWare : "Souvent les gens définissent le groupware comme un regroupement de fonctions comme le mail, une todo liste, des notes et un calendrier. Celà n'est pas notre définition. Un groupware devrait offrir un espace de travail partagé. Cet espace doit mettre à  disposition un ensemble de modules pour le travail de tous les jours. Dans mon activité quotidienne, je partage aussi des fichiers, gère mes projets, les développeurs ont besoin d'un wiki, d'un forum pour les discussions... Quand je peux exécuter la plupart de mes tâches quotidiennes à travers un groupware, alors c'en est un véritablement. Nous sommes sur la voie de ce genre de réalisation."

"Dans de nombreux projets, les développeurs et/ou les entreprises créent une road map et décident des besoins des utilisateurs pour la version suivante. Celà n'est pas la bonne façon de procéder. Nous voulons obtenir un groupware qui remplisse les besoins d'utilisateurs dans le monde professionnel. Selon moi, ce sont les utilisateurs qui développent eGroupWare. Ils ont souvent des connaissances plus importantes que nous sur le fonctionnement d'un groupware et savent pertinemment ce dont ils ont besoin. Le projet doit réaliser, coordonner les demandes, s'assurer de sa viabilité, sa stabilité et sa sécurité."

Particularité de fonctionnement : le groupe propose à des entreprises qui souhaitent voir une ou plusieurs fonctionnalités aboutir plus rapidement de financer des heures de développement.. La méthode est de plus en plus courante et gage d'adéquation du développement aux besoins réels.

Un des avantages d'eGroupWare est sa simplicité de mise en place. Elle ne doit toutefois pas occulter la complexité que représente la mise à plat du circuit de l'information dans une organisation. En effet, le groupware ne sera finalement que le reflet de ce schéma organisationnel. L'objet de cet article est de montrer pas à pas la solution technique. Nous n'aborderons pas l'étape préalable indispensable qui consiste à partir de l'organigramme de l'entreprise pour mettre en place des groupes d'utilisateurs et organiser les différents niveaux d'accès à  l'information.

eGroupWare est constitué d'un ensemble de modules présentant les fonctionnalités suivantes :

  • webmail
  • carnet de contacts
  • calendrier partagé
  • forum
  • wiki
  • CMS
  • gestion de tickets d'incident
  • éditeur de site wysiwyg
  • lient FTP et gestionnaire de fichiers
  • messagerie instantanée
  • gestionnaire de projets
  • outil de sondage
  • gestion graphique des utilisateurs et groupes, ainsi que de leur compte mail et LDAP

Chacun de ces modules, on le verra, peut être partagé avec tout ou partie des utilisateurs accédant à eGroupWare. Passons aux choses concrètes : les pré-requis. Passons maintenant à l'installation de la plate-forme qui va supporter eGroupWare. Nous avons fait le choix d'une Mandrake 10.0 pour supporter cette plate-forme.

Installer une plate-forme LAMP

L'application nécessite au moins un serveur web, PHP et une base de données. Il est possible de l'installer sur IIS, mais pour une raison on ne peut plus partisane, nous choisirons Apache sur Linux. L'ensemble des informations du groupware et notamment le système d'ACL (Access control List) est stocké dans une base de donnée, qui peut être MySQL ou PostgreSQL. Nous allons décrire ci-dessous les modalités d'installation de cette plate-forme LAMP (Linux, Apache, MySQL, PHP). La première étape consiste à  installer Apache :

# urpmi apache2
 Pour satisfaire les dépendances, les paquetages suivants vont être installés (1 Mo):
 apache-conf-2.0.48-2mdk.i586
 apache2-2.0.48-6mdk.i586
 apache2-common-2.0.48-6mdk.i586
 apache2-modules-2.0.48-6mdk.i586
 Est-ce correct ? (O/n)
 Préparation...              ##################################################
    1:apache-conf            ##################################################
    2:apache2-modules        ##################################################
    3:apache2-common         ##################################################
    4:apache2                ##################################################

Le fichier de configuration est /etc/httpd/conf/httpd.conf. (Mandrake a délocalisé une partie de ce fichier dans /etc/httpd/conf/commonhttpd.conf). La configuration par défaut permet de lancer dès maintenant le service Apache :

# service httpd start
 Starting httpd:                                                 [  OK  ]

La plate-forme nécessite également l'installation de PHP :

# urpmi php
 Un des paquetages suivants est nécessaire :
  1- apache2-mod_php-2.0.48_4.3.4-1mdk.i586
  2- mod_php-4.3.4-1mdk.i586
  3- php-cli-4.3.4-4mdk.i586
  4- php-cgi-4.3.4-4mdk.i586
 Que choisissez-vous ? (1-4)1
 Préparation...              ##################################################
    1:apache2-mod_php        ##################################################
 Shutting down httpd2: [  OK  ]
 Checking configuration sanity for Apache 2.0:  [  OK  ]
 Starting httpd2: [  OK  ]

Là  encore la configuration proposée permet un fonctionnement immédiat de PHP. Il nous reste enfin à  installer le serveur MySQL :

# urpmi mysql
 Un des paquetages suivants est nécessaire :
  1- MySQL-4.0.18-1.1.100mdk.i586
  2- MySQL-Max-4.0.18-1.1.100mdk.i586
 Que choisissez-vous ? (1-2)1
 Pour satisfaire les dépendances, les paquetages suivants vont être installés (18 Mo):
 MySQL-4.0.18-1.1.100mdk.i586
 MySQL-client-4.0.18-1.1.100mdk.i586
 MySQL-common-4.0.18-1.1.100mdk.i586
 libmysql12-4.0.18-1.1.100mdk.i586
 perl-Mysql-1.22_19-9mdk.i586
 Est-ce correct ? (O/n)
 Préparation...              ##################################################
    1:libmysql12             ##################################################
    2:MySQL-client           ##################################################
    3:perl-Mysql             ##################################################
    4:MySQL-common           ##################################################
    5:MySQL                  ##################################################
 040512 12:40:46  /usr/sbin/mysqld: Shutdown Complete

On procède ensuite au démarrage du service :

# service mysql start
 Starting mysql:                                                 [  OK  ]

L'installation nécessite enfin un certain nombre de modules pour Apache, nécessaires au bon fonctionnement d'eGroupWare.

# urpmi php-mysql php-xml php-imap php-ldap
 Préparation...              ##################################################
    1:php-imap               ##################################################
    2:php-xml                ##################################################
    3:php-mysql              ##################################################
    4:php-ldap               ##################################################

Voilà  votre plate-forme prête à  fonctionner !

L'annuaire LDAP

Il est également possible d'adosser le groupware à  un annuaire LDAP (site officiel : http://openldap.org). Avantage de la méthode : il va permettre de centraliser . C'est l'option qui sera présentée ici car elle permet d'utiliser de manière optimale les fonctionnalités d'eGroupWare. L'installation du serveur LDAP est simple :

# urpmi openldap-servers openldap-client
 Préparation...              ##################################################
    1:openldap-servers       ##################################################
    2:openldap-client        ##################################################

Le recours à  un annuaire LDAP présuppose deux choses : l'installation du module php-ldap pour Apache (ce que nous avons fait dans le paragraphe précédent) et l'intégration d'une classe nécessaire pour inclure des paramètres eGroupWare dans la définition des comptes de groupes et d'utilisateurs. Pour ce faire, copiez les schémas fournis dans les sources (les schémas seront ajoutés dès la prochaine version du RPM Mandrake), phpgwaccount.schema et phpgwcontact.schema dans l'arborescence LDAP. Comme leurs noms l'indiquent, l'un permet de définir les comptes de groupes et d'utilisateurs, l'autre permet de définir le stockage des contacts dans l'annuaire. Pour finir, déclarez l'utilisation de ces schémas dans slapd.conf et redémarrez le serveur.

# ls /etc/openldap/schema
local.schema phpgwaccount.schema phpgwcontact.schema
# cat /etc/openldap/slapd.conf
...
include /etc/openldap/schema/phpgwaccount.schema
include /etc/openldap/schema/phpgwcontact.schema
...
# service ldap restart

Le support de la messagerie

Nous allons utiliser également un serveur SMTP et un serveur POP/IMAP. Les choix réalisés par l'équipe d'eGroupWare privilégient Postfix d'un côté et Cyrus-IMAP de l'autre. Il est tout à  fait envisageable d'utiliser d'autres produits mais ceux-ci ont l'avantage de permettre ensuite la gestion du compte de messagerie à  travers l'interface du groupware (gestion des boites mail, alias de mail, forwards, et bientôt les absences). Attention : les requêtes sur les utilisateurs eGroupWare concernant la messagerie se basent sur la classe qmailUser et l'attribut mailAlternateAddress. Ci-dessous un extrait du fichier de configuration de Postfix main.cf concernant la construction de la requête LDAP à  effectuer :

# cat /etc/postfix/main.cf

virtual_alias_maps = ldap:ldapuser, ldap:ldapgroup

ldapuser_server_host = 127.0.0.1
ldapuser_server_port = 389
ldapuser_bind = yes
ldapuser_bind_dn = cn=adminmail,dc=domain,dc=com
ldapuser_bind_pw = Xd25./T
ldapuser_search_base = ou=Personnes,dc=domain,dc=com
ldapuser_timeout = 60
ldapuser_query_filter = (&(objectclass=qmailUser)(mailAlternateAddress=%s))
ldapuser_result_attribute = mail
ldapuser_lookup_timeout = 60

ldapgroup_server_host = 127.0.0.1
ldapgroup_server_port = 389
ldapgroup_bind = yes
ldapgroup_bind_dn = cn=adminmail,dc=domain,dc=com
ldapgroup_bind_pw = Xd25./T
ldapgroup_search_base = ou=Groupes,dc=domain,dc=com
ldapgroup_timeout = 60
ldapgroup_query_filter = (&(objectclass=mailRecipient)(mailAlternateAddress=%s))
ldapgroup_result_attribute = rfc822MailMember
ldapgroup_lookup_timeout = 60
....

On pourra bien sur affiner cette configuration mais ce n'est pas l'objet de l'article. Consulter Postfix-Cyrus-Web-cyradm-HOWTO, un bon point de départ.

L'installation de eGroupWare

Les étapes de l'installation

L'installation peut se faire à  partir des sources :

# cd /var/www/html
# tar xjf eGroupWare-0.9.99.015-1.tar.bz2

Comme nous travaillons sur une Mandrake, nous utiliserons les packages prévu à  cet effet. Il est possible de télécharger le package édité par l'équipe d'eGoupWare (eGroupWare-all-apps-0.9.99.015-1.noarch.rpm). Toutefois dans un soucis de cohérence, nous utiliserons les packages fournis par la source contrib de Mandrake. Pour installer eGroupWare et tous ses modules :

# urpmi -a egroupware egroupware-

Par défaut les fichiers s'installent dans /var/www/html/egroupware. Le processus d'installation d'eGroupWare prévoit la création de la base de donnée pour MySQL et PostgreSQL. Nous reprenons ci-dessous les étapes qui permettent la création en ligne de commande de la base et d'un utilisateur qui aura les droits sur cette base pour MySQL.

# mysqladmin --user=root create egroupware
# mysql --user=root mysql
mysql> GRANT ALL ON egroupware.* TO egroupware@localhost IDENTIFIED BY 'passwd';
mysql> flush privileges;

Voilà , nous laissons de côté maintenant la ligne de commande pour passer à  l'installeur web d'eGroupWare. L'installation va alors se faire en 3 étapes à  partir de l'URL suivante dans notre cas : http://localhost/egroupware/setup.

Vérification de l'installation

Egroupware-egw1.png

Génération du fichier header.inc.php

Egroupware-egw2.png Ce fichier contient les paramètres de base d'eGroupWare comme les paramètres de connexion à  la base de données mais aussi la possibilité d'en générer plusieurs instances en définissant des domaines. Cette notion peut être utile si l'on souhaite par exemple définir deux interfaces distinctes d'eGroupWare, par exemple, l'Intranet et les clients. Vous allez également créer deux utilisateurs clés : l'un vous servira à  rééditer cette page, l'autre à  poursuivre la procédure d'installation. Il est recommandé de conserver une sauvegarde de ce fichier.

Installation des applications

Egroupware-egw3.png Connectez-vous comme demandé. L'étape suivante consiste à  valider l'installation des différents applications du groupware et créer les tables correspondantes dans votre base de données.

Configuration d'eGroupWare

Egroupware-egw4.png La configuration se présente ensuite comme une série de champs à renseigner. L'installation d'eGroupWare nécessite la création d'un répertoire, de préférence hors de l'arborescence Apache qui contiendra notamment les fichiers uploadés par l'intermédiaire du gestionnaire de fichiers. Ce répertoire devra être accessible à l'utilisateur exécutant l'instance Apache (le répertoire est créé par défault, vérifiez qu'il existe, sinon tapez le code ci desous).

# mkdir /var/lib/egroupware
# chown -R apache:apache /var/lib/egroupware

Vous devrez également spécifier l'IP ou le nom de votre serveur FTP si vous souhaitez utiliser le module FTP du groupware. Egroupware-egw5.png Nous voilà maintenant arrivés à la configuration de l'authentification et des comptes utilisateurs. Plusieurs options s'offrent à vous. Si vous ne disposez pas d'annuaire LDAP, choisissez de stocker les comptes dans la base de données. Dans notre cas, ayant recours à LDAP, nous allons donc compléter les éléments nécessaires. Ils sont classiques pour ceux qui ont l'habitude de manipuler ce service : home directory à utiliser, shell, contexte des OU (Organizational Units) d'utilisateurs et de groupes, manager de LDAP et mot de passe. Il est indispensable également d'autoriser l'utilisation de LDAP v.3, que l'on retrouve par défaut dans la majorité des distributions. Enregistrer la configuration obtenue. Nous compléterons cette phase par la création d'un compte administrateur qui sera utilisé ensuite pour l'administration du groupware (gestion des ACL, gestion des utilisateurs et des applications). Il vous est d'ailleurs proposé de créer des comptes de démonstration pour tester le bon fonctionnement de l'application. Vous pouvez en vérifier la création dans l'annuaire :

# ldapsearch -x "uid=adminegw"
# adminegw, Users, domain, com
dn: uid=adminegw,ou=Users,dc=domain,dc=com
phpgwAccountType: u
uidNumber: 2008
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: phpgwAccount
cn: adminegw adminegw
uid: adminegw
sn: adminegw
givenName: adminegw
homeDirectory: /home/adminegw
loginShell: /bin/false
gidNumber: 2
phpgwAccountStatus: A
phpgwAccountExpires: -1

L'utilisateur est bien créé et on retrouve la classe phpgwAccount ainsi que les attributs élémentaires : phpgwAccountType (u : user ou g : groupe), phpgwAccountStatus (A : compte actif), phpgwAccountExpires (-1 : jamais). La configuration est maintenant terminée. Vous pouvez toutefois à ce stade gérer les langues (ajouter / supprimer). 22 langues sont aujourd'hui disponibles, par défaut sont sélectionnés l'anglais et le français. Vous pouvez également gérer les applications. Le mode d'installation que nous avons utilisé fournit toutes les applications disponibles, vous pouvez restreindre cette liste. L'installation et la configuration de base sont maintenant terminées, nous passons à la configuration de l'utilisation du groupware.

Configuration du groupware

Une fois connecté en tant qu'administrateur du groupware, allez sur le paneau d'administration . Egroupware-egw6.png Il vous offre les fonctionnalités suivantes :

  • gestion des applications
  • gestion des utilisateurs
  • configuration du site et paramétrage mail
  • gestion des catégories et ACL

Avant de poursuivre il est indispensable de définir ces 2 dernières notions qui sous-tendent toute la configuration qui va suivre.

ACL et catégories globales

Egroupware-egw7.png Les ACL sont un terme générique (Acces Control List) que l'on retrouvera dans de nombreuses applications. Elles vont définir les droits d'accès d'un utilisateur et/ou d'un groupe aux données d'une application. Elles sont au nombre de quatre : lecture, ajout, modification, suppression. Dans notre exemple, les membres du groupe commerciaux auront tous les droits sur les données du gestionnaire de fichiers relatives à  leur groupe. Seuls les membres du groupe techniciens auront un accès en lecture. Egroupware-egw8.png
Les catégories globales permettent d'organiser les données et sont communes à  toutes les applications. Il est possible également de créer des catégories spécifiques à  une application ainsi que des catégories personnelles. Elles sont importantes car elles permettent de rationaliser l'affichage des données et de d'organiser celles-ci plus clairement.

Une administration centralisée des utilisateurs

La gestion des utilisateurs et des groupes peut se faire à  plusieurs niveaux : Egroupware-egw9.png

  • le module de gestion de comptes utilisateurs : il permet de créer, modifier, supprimer un utilisateur. Les modifications portent sur les données de base du compte, la configuration mail, les applications attribuées spécifiquement à  un utilisateur.Egroupware-egw10.png
  • le module de gestion de comptes de groupes : il permet de positionner les utilisateurs dans le groupe choisi. Pour pouvoir positionner les ACL, cliquer sur l'application et sauvegarder puis cliquer à  nouveau sur la puce situé à  droite de la dite application.
    On conseille souvent d'utiliser un groupe "Default" dans lequel on positionnera tous les utilisateurs. Celui-ci permettra de fixer les applications de base communes à  tous ainsi que des ACL. On affinera ensuite groupe par groupe ces ACL en fonction des besoins.
  • On trouve enfin la gestion des préférences utilisateurs. Ces préférences agissent sur l'ergonomie des applications, leur mode de visualisation, la possibilité ou non de personnaliser la configuration. Ces préférences peuvent être définies par les utilisateurs eux-mêmes mais restreintes par l'administrateur qui positionnera des préférences forcées pour une ou plusieurs applications. Enfin on dispose également de la possibilité de fixer des préférences par défaut.

Revue de détail des principales applications

Nous allons ici passer en revue les applications les plus courantes ainsi que leurs fonctionnalités dans le cadre du groupware.

  • Messagerie
    Egroupware-egw11.png
    eGroupWare propose deux types de webmails qui offrent les fonctionnalités classiques de ce type de client. On trouve entre autres un lien avec le carnet de carnet d'adresses.
  • Carnet d'adresses
    Il s'agit la d'une fonctionnalité classique. Il permet des importations et des exportations à  partir de différents formats standards. L'ensemble des contacts est stockable dans une base LDAP.
  • Calendrier
    Egroupware-egw12.png
    Le calendrier dispose de vues quotidienne, par semaine, mensuelle ou annuelle. On peut ajouter des événements pour soi-même, d'autres utilisateurs ou des groupes. Il est possible alors de générer des alarmes par mail pour prévenir les différents participants. Ce calendrier est également doté d'un système de confirmation pour chaque événement qui permet ainsi au mieux leur planification.

Egalement à  disposition, un planificateur de tâches, qui permet de visualiser rapidement les plages horaires disponibles pour fixer un rendez-vous pour une ou plusieurs personnes.

  • Infolog
    C'est un outil à  mi chemin entre le post-it© et la mini gestion de projet. Il permet de programmer des tâches, en associant ou non d'autres participants, des contacts, des événements du calendrier, des fichiers. Des indicateurs permettent ensuite de visualiser la progression du dit projet.

L'application propose en tout une quinzaine de modules.

Sécurisation et optimisation de l'installation

La sécurisation de la plate-forme supportant eGroupWare relève des conseils habituels liés à  l'administration d'une plate-forme LAMP (Linux-Apache-MySQL-PHP). Concernant le serveur MySQL, vérifiez que l'utilisateur root dispose bien d'un mot de passe. En effet, à  l'installation du serveur, l'utilisateur root est initialisé dans la base " mysql" sans aucun mot de passe : De plus nous allons restreindre l'accès au serveur MySQL aux seules requêtes lancées en local :

# cat /etc/my.cnf
[mysqld]
...
bind_address = 127.0.0.1
...

Concernant la configuration de PHP, les développeurs apportent quelques conseils pour en optimiser les performances :

max_execution_time ? 30
memory_limit ? 16 Mo
register_globals = Off
safe_mode = On

Vous devrez également personnaliser le paramètre "upload_max_filesize" en fonction des besoins pour le gestionnaire de fichiers. C'est à  ce niveau que la taille des uploads de fichiers de cette application sera limité et non par un paramètre propre au groupware. Enfin eGroupWare peut gagner considérablement en rapidité d'exécution grâce à  Turck MMCache. Il accélère l'interprétation du code PHP et réduit la charge du serveur.

# urpmi php-mmcache php-mmcache-admin
 installation de php-mmcache php-mmcache-admin
    1:php-mmcache            ##################################################
    2:php-mmcache-admin      ##################################################

Attribuer un mot de passe à  l'administrateur de l'interface de gestion du cache :

# php -q /var/www/html/admin/php-mmcache/mmcache_password.php
Changing password for Turck MMCache Web Interface (mmcache.php)

Enter admin name: admincache
New admin password: R3./po
Retype new admin password: R3./po

Add the following lines into your php.ini and restart HTTPD

mmcache.admin.name="admincache"
mmcache.admin.password="$1$BGhHjZ5A$wNPAxc3BfU12POJoxopBO/"

On accède ensuite à  l'interface de gestion du cache : http://localhost/admin/php-mmcache

eGroupWare, les projets

Le projet est aujourd'hui disponible dans sa première version stable. Mais le groupe de développement travaille déjà  sur ce que sera la prochaine version stable, la 1.2. Dans cette optique, de nombreux d'objectifs ont étés fixés et mis en avant. Il est projeté de mettre à  disposition un moteur de workflow1 Dans les développements très attendus, on note aussi un certain nombre de connecteurs vers l'extérieur qui permettront d'inclure encore plus le groupware dans son environnement : une synchronisation avec les PDA (ou organiseurs personnels en bon français) disponible très prochainement, un connecteur pour Evolution, et un connecteur pour Outlook. Il est prévu également de travailler sur l'ergonomie de l'interface utilisateur et notamment un assistant pour la configuration de celle ci. De nouveaux modèles de documents, ainsi que de nouvelles fonctionnalités comme le glisser-déposer sont également au programme. Des applications vont être ré-écrites, soit totalement (carnet d'adresses, gestion des accidents), soit partiellement(webmail, gestionnaire de fichiers, gestion de projets). Enfin pour vérifier l'identité de l'utilisateur du groupware, celui-ci devrait inclure également une fonction d'autorité de certification, tout ceci dans un souci de mieux répondre aux exigences de sécurisation du système.

Liens



@ Retour à la rubrique Réseau et sécurité

@ Retour à la rubrique Logiciels

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Anne le 05/09/2004.

Copyright

© 05/09/2004 Anne Nicolas

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 3.0 :
http://creativecommons.org/licenses/by-sa/3.0/
Affichages
Outils personnels

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA