Introduction

Grâce à l'auto-hébergement vous pouvez avoir votre propre service de messagerie instantanée (Instant Messaging : IM dans la suite de cette page) et donc maîtriser vos communications. Cependant vous dépendez tout de même des personnes avec lesquelles vous communiquez. Il est clair que si vos interlocuteurs·trices sont chez Google, vos communications peuvent être enregistrées (mais ce n'est pas une spécificité de l'IM bien entendu. Cela est valable pour tout autre type de communication comme par exemple le mail)

L'IM peut utiliser différents protocoles pour s'échanger les informations, par exemple MSN, ICQ, Jabber,… En revanche, plusieurs services peuvent utiliser le même protocole, ce qui permet l'inter-opérabilité. Par exemple, le service que nous allons décrire ici, Jabber, utilise le protocole xmpp qui est aussi utilisé par google-talk (Google a annoncé la fin du support de ce protocole pour bientôt). De ce fait, si vous utilisez un service Jabber, vous pouvez avoir des contacts Google et communiquer sans problèmes avec eux (pour le moment car Google pensait mettre de côté le xmpp).

Nous allons décrire ici comment installer un serveur d'IM basé sur Jabber. Par la suite, nous nous intéresserons aux différentes manières « d'utiliser » votre serveur, c'est à dire aux différents clients permettant d'interagir avec celui-ci. Le serveur va contenir toutes les informations vous concernant et va stocker vos contacts. De ce fait, si vous changez de client, cela ne posera aucun problème. Vous pouvez même utiliser plusieurs clients différents bien évidemment.

Serveur

Prérequis

  • Avoir un nom de domaine (que l'on nommera example.org dans tout le tutoriel).
  • Pour faciliter l'accès à vos services, il est préférable de créer des sous-domaines à partir de votre domaine de base. Dans ce cas nous le nommerons jabber ce qui donnera comme domaine d'accès à votre serveur : jabber.example.org.

Pour savoir comment gérer des domaines et des sous-domaines, rendez-vous dans la section dédiée

Nous allons décrire deux serveurs :

  • Ejabberd qui possède une interface d'administration si la ligne de commande et les fichiers textes de configuration vous effrayent. Cependant, il demande plus de ressource (RAM, CPU) que le suivant.

  • Prosody est très léger, simple et efficace. La configuration n'est pas complexe mais par contre, il n'y a pas d'interface d'administration. Autre avantage, la configuration des salons de discussion est très facile.

Nous conseillons d'utiliser Prosody (si vous ne voulez pas utiliser l'authentification basée sur pam).

Dans tout ce tutoriel, vous devez être en « root » ou bien utiliser sudo au début de chaque commande (si votre utilisateur est dans le groupe sudo bien sur… plus d'infos ici).

Ejabberd

Installation

 apt-get install ejabberd

Après cette étape très laborieuse d'installation ;) nous allons passer à la configuration.

Configurer le domaine

Éditez le fichier de configuration /etc/ejabberd/ejabberd.cfg :

 nano -c /etc/ejabberd/ejabberd.cfg 

et remplacez (ligne 60 ou alentours)

 {hosts, ["localhost"]}. 

par

 {hosts, ["jabber.example.org"]}. 

Veillez à toujours mettre le nom du domaine en minuscule, sinon vous risquez d'obtenir un « not_allowed » lors de l'enregistrement et de l'accès à la page web.

Redémarrez le serveur jabber pour pendre en compte les modifications du fichier ejabberd.cfg :

 ejabberdctl restart 

ou

 service ejabberd restart

Créer le compte administrateur

Il faut d'abord préciser un compte administrateur, dans notre exemple il aura pour JID (Jabber IDentifier) admin@jabber.example.org :

Toujours dans le fichier de configuration, remplacez

%% Admin user 
{acl, admin, {user, "", "localhost"}}. 

par

%% Admin user 
{acl, admin, {user, "admin", "jabber.example.org"}}. 

Voilà pour le fichier de configuration principal.

On peut maintenant créer le compte administrateur en tapant la commande suivante (à adapter selon vos besoins) :

ejabberdctl register admin jabber.example.org grm6qetrh8q 

Ici, le mot de passe administrateur est grm6qetrh8q, que vous devez évidemment remplacer par le mot de passe qui vous convient. Vous pouvez aussi créer ce compte avec un simple client jabber (voir plus bas).

Redémarrez le serveur grâce à la commande :

service ejabberd restart 

Vous pouvez maintenant administrer le serveur en vous connectant à l'interface d'administration via un navigateur quelconque en entrant l'URL suivante :

http://jabber.example.org:5280/admin 

Une authentification http vous sera demandée : le login désiré est celui de l'administrateur (dans notre cas admin) et le mot de passe est le mot de passe administrateur que nous avons précisé à la création du compte.

Créer et supprimer d'autres comptes utilisateurs :

Pour la création de nouveaux comptes, vous pouvez utiliser une commande ou passer par l'interface web d'administration.

  • Par la ligne de commande

Taper en root la commande suivante sans mettre les guillemets et en remplaçant les termes par ce qui vous convient :

ejabberdctl register <nom-d'utilisateur> jabber.example.org <mot-de-passe>

Pour supprimer un compte :

ejabberdctl unregister <nom-d'utilisateur> jabber.example.org
  • Par l'interface web

Connectez-vous à votre interface (http://jabber.example.org:5280/admin) puis tapez votre login d'administration et le mot de passe.

Vous arrivez sur la page suivante

ejabberd-admin-accueil.png

Cliquez sur « serveurs virtuels » et vous arrivez sur la page suivante qui liste vos serveurs ejabberd (oui, vous pouvez avoir plusieurs serveurs jabbers, cela est traité plus bas). Si vous avez un seul serveur, cliquez dessus.

ejabberd-admin-serveurs.png

Vous aboutissez donc à la configuration de ce serveur virtuel.

ejabberd-admin-serveur-detail.png

Cliquez sur « utilisateurs » et vous verrez la liste des utilisateurs de ce serveur virtuel et pourrez en ajouter et en enlever :

ejabberd-admin-users.png

Avoir plusieurs serveurs jabber

Si vous avez suivi ce qui précède, vous aurez noté que l'on peut créer plusieurs serveurs virtuels séparés entre eux. Par exemple, vous pouvez avoir votre serveur comme développé dans ce tuto (jabber.example.org) et proposer à du monde d'utiliser un serveur nommé public.example.org. Les personnes utilisant ce serveur auront un compte sous la forme utilisateur@public.example.org. De même, si vous voulez utiliser des salons de discussion (voir plus bas), vous pouvez utiliser un autre serveur virtuel du type salons.example.org (conseillé)

Tout cela peut se faire en modifiant le fichier de configuration comme précedemment :

nano -c /etc/ejabberd/ejabberd.cfg 

Puis modifiez les lignes (vers les environs de la 60ème) afin de créer le nouveau serveur.

%% Hostname 
{hosts, ["jabber.example.org"]}.

en

%% Hostname 
{hosts, ["jabber.example.org", "nouveau.example.org", ]}.

Créer des salons de discussion

Cela est possible en activant le module MUC (Multi-User Chat). Les salons sont créés à la volée, c'est à dire que le premier utilisateur s'y connectant crée automatiquement le salon.

Dans le fichier de configuration, allez vers la ligne 575 et configurez cette zone de cette manière :

{mod_muc,      [ 
              {host, "conf.example.org"}, 
              {access, muc}, 
              {access_create, muc}, 
              {access_persistent, muc}, 
              {access_admin, muc_admin}, 
              {max_users, 500}, 
           {persistent, true} 
             ]},

dans la partie "host", vous avez la possibilité d'assigner un serveur virtuel comme indiqué ici (conf.example.org) si on veut qu'un serveur ne se charge que des salons de discussion. Dans ce cas, ne pas oublier d'ajouter ce serveur comme indiqué dans le point précédent, puis de redémarrer le serveur avec la commande :

ejabberdctl restart && service ejabberd restart

Vous pouvez indiquer que chaque salon soit lié au serveur virtuel dans lequel se trouve l'utilisateur. Cela se fait en définissant le "host" de cette manière :

{mod_muc,      [ 
              {host, "conference.@HOST@"}, 
…

Par exemple, si l'utilisateur truc@jabber.example.org se connecte au salon "machin", alors ejabberd va automatiquement créer le salon dans le serveur virtuel de l'utilisateur. Dans ce cas, ce sera le salon machin@conference.jabber.example.org. Vous pouvez donc choisir n'importe quel en-tête (dans ce cas, remplacer "conference" par ce que vous voulez dans le fichier de configuration).

Prosody

Prosody est un logiciel assez simple à configurer et la documentation en ligne est très claire.

Cependant, la documentation est en anglais, donc nous allons résumer ici les points essentiels.

Installation

Nous détaillerons le mode d'installation dans le cas d'une machine sous Debian ou Ubuntu. Pour les autres systèmes, voir la page dédiée sur le site de Prosody.

Il existe maintenant un paquet Debian pour prosody. Il vous suffit donc de taper :

apt-get update && apt-get install prosody

Configuration

Tout (ou presque) se passe dans le fichier /etc/prosody/prosody.cfg.lua.

La première chose à faire est d'ajouter votre serveur virtuel (virtual host). C'est le nom d'hôte qui sera relié à Prosody. Pour cela éditez le fichier de configuration :

nano -c /etc/prosody/prosody.cfg.lua

et trouver la ligne concernant le VirtualHost pour mettre (ligne 155 environ)

VirtualHost "jabber.example.org"

Vous pouvez donc avoir plusieurs domaines gérés par la même instance Prosody. Par exemple, votre serveur Prosody peut faire tourner deux hôtes virtuels, bien séparés et accessibles par exemple via "vhost1.example.org" et "vhost2.example.org" ou même "domaine1.org" et "domaine2.org" si vous possédez plusieurs noms de domaine. Il faut donc ajouter une entrée dans le fichier de configuration contenant par exemple :

VirtualHost "vhost2.example.org"

Il est donc évident qu'il faut, pour cela, plusieurs noms de domaines différents ou utiliser différents sous-domaines (voir la section dédiée)

Créer des utilisateurs

Vous pouvez décider que n'importe quelle personne puisse créer un utilisateur par le biais de son client d'IM. Pour cela, il faut positionner le champ "allow_registration" sur "true" :

allow_registration = true; 

De plus, bien vérifier que le module register est bien présent dans la section modules_enabled. Pour cela, doit apparaître une ligne contenant :

"register"; -- Allow users to register on this server using a client

(attention à ce que cette ligne soit décommentée, c'est à dire qu'il n'y ait pas "--" au début de la ligne, sinon elle sera ignorée.

Si vous désirez gérer vous-même les nouveaux utilisateurs, il faut utiliser une ligne de commande très simple qui se décompose sous la forme :

prosodyctl adduser user@jabber.example.org

Remplacez "user" par le nom d'utilisateur que vous voulez créer et "jabber.example.org" par votre nom de domaine lié au virtual host défini plus haut. Après avoir tapé entrée, le programme va vous demander un mot de passe.

Vous pouvez aussi utiliser une seule ligne mais avec votre mot de passe visible :

prosodyctl register user jabber.example.org mot-de-passe

Créer des salons de discussion

Toujours dans le fichier de configuration, rechercher vers la ligne 176 le champ "Component" et mettre :

Component "conf.example.org" "muc"

Il suffit de remplacer le terme "conf" par celui qui vous convient. Le reste est automatique. La création des salons est aussi automatique, il suffit de se connecter à nom-du-salon@conf.example.org

Clients

Afin d'utiliser votre serveur d'IM et pouvoir communiquer, il vous faut un client. Vous avez vraiment le choix à ce niveau. Il existe deux grands type de clients : les clients dits "lourds" c'est à dire installés sur la machine cliente, et les clients web accessibles par un navigateur. Nous allons détailler la création de comptes sous deux clients lourds, Empathy et Psi. Le client web peut être utile si vous vous retrouvez sur un réseau bloquant les ports liés à l'IM ou si vous n'avez pas votre ordinateur personnel (vous n'allez pas installer un client lourd ni rentrer vos paramètres de messagerie sur une autre machine). Dans ce cas, vous accédez à ce service en http ou https dans un navigateur web (port 80 ou 443). Ce service est installé sur votre machine-serveur et permet d'interagir avec votre serveur d'IM (dans notre cas, le client d'IM et le serveur d'IM sont sur la même machine)

Empathy

Sur la fenêtre principale d'Empathy, allez dans le menu déroulant "Edition" puis "Comptes" ou faites F4. Vous arrivez sur une fenêtre où vous pouvez ajouter votre compte (petite croix en bas à gauche). Puis, dans type de connexion, choisissez "Jabber" et indiquez votre identifiant (utilisateur@jabber.example.org) et votre mot de passe.

Votre compte est associé et vous pouvez ajouter vos contacts si nécessaire.

Pour rejoindre un salon de discussion, allez dans le menu "Salon" puis "Rejoindre" et choisissez avec quel compte vous voulez rejoindre le salon. Indiquez le nom de salon (cela peut être un nom que vous désirez, le salon sera automatiquement créé) et le serveur (dans notre cas, ce sera conf.example.org).

Une fois connecté au salon, il sera automatiquement ajouté aux favoris (menu "Salon") et en allant dans la section "Gérer les favoris" vous pouvez choisir de vous connecter automatiquement au salon lors du lancement d'Empathy.

Psi et Psi-plus

Lors du premier lancement, ignorer toutes les indications puis dans la fenêtre principale de Psi, utilisez le menu déroulant "General" et cliquez sur "Account setup"

psi-general2.png

Sur la fenêtre des comptes, cliquez sur "Add" et nommez votre nouveau compte comme vous le voulez. Décochez la case "Register new account" puis cliquez sur "Add".

psi-accounts.png psi-add-account.png

Dans la nouvelle page qui s'affiche, dans le champs "Jabber ID" écrivez votre utilisateur sous la forme utilisateur@jabber.example.org. Entrez votre mot de passe puis choisissez vos paramètres en dessous. Dans l'onglet "Details", vous pouvez ajouter des infos personnelles qui pourront être visible par vos interlocuteurs·trices.

psi-add-account2.png

Ensuite, sur le bas de la fenêtre principale de Psi, positionnez-vous en "Online" et acceptez le certificat ("Trust this certificate").

Votre compte est associé et vous pouvez ajouter vos contacts si nécessaire.

Pour rejoindre un salon de discussion, utilisez le menu "General" puis "Join Groupchat" et choisissez le compte avec lequel vous voulez rejoindre le salon, indiquez l'adresse du salon et renseignez un mot de passe (seulement si le salon en nécessite un).

Un client web : Jappix

Ce client web est facile à installer et à configurer étant donné qu'il possède une interface web d'administration.

Prérequis

Vous devez avoir un serveur web (par exemple Apache) fonctionnel. Ensuite, vous pouvez accéder à Jappix de deux manières :

  • soit vous utilisez une adresse du type http://www.example.org/jappix et dans ce cas, vous devez installer Jappix à la racine du serveur web ;
  • soit vous utilisez une adresse du type http://jappix.example.org et dans ce cas, il faut tout d'abord créer un sous-domaine (voir la section dédiée à cela) et utiliser Apache pour rediriger les connexions vers le répertoire de Jappix qui peut se trouver où bon vous semble dans votre arborescence (dans cet exemple, se sera dans /var/www/jappix). Pour cela, mettez en place un VirtualHost et activez-le comme indiqué sur cette page .

Dans le fichier du VirtualHost vous y mettrez :

<VirtualHost *:80> 
    ServerName jappix.example.org 
    DocumentRoot /var/www/jappix 
</VirtualHost> 

Dans tous les cas, il va falloir rediriger les connexions http de Jappix vers le serveur Jabber qui utilise le port 5280. Pour cela, il faut créer un autre VirtualHost dans Apache qui servira uniquement à Jappix. Suivez les instructions sur la page dédiée en mettant dans le fichier du VirtualHost ceci :

<VirtualHost *:80> 
    ServerName jabber.xilm.org 
    RewriteEngine On 
    RewriteRule /   http://127.0.0.1:5280/http-bind/ [P] 
    <Proxy http://127.0.0.1> 
        Allow from all 
    </Proxy> 
</VirtualHost> 

Note : bien vérifier que le module proxy d'Apache est bien actif :

a2enmod proxy

Installation

Allez sur la page de téléchargement de Jappix : http://download.jappix.org/jappixorg/

Sur cette page, récupérez la version la plus récente afin d'avoir une adresse de téléchargement du type : http://download.jappix.org/jappixorg/jappix-0.9.9-nemesis-alpha-9.zip

Une fois que vous avez cette adresse, positionnez-vous au bon endroit dans votre serveur et téléchargez l'archive de Jappix :

cd /var/www

(ce n'est qu'un exemple, à vous d'adapter si vous voulez installer Jappix à un autre endroit)

wget http://download.jappix.org/jappixorg/jappix-0.9.9-nemesis-alpha-9.zip

Cela va télécharger Jappix. Il ne reste plus qu'à extraire et donner les bons droits :

unzip jappix-0.9.9-nemesis-alpha-8.zip

(remplacez par le nom de l'archive téléchargée si différente)

Cela va extraire le contenu et créer un répertoire se nommant "jappix" dont il faut régler les permissions :

chown -R www-data:www-data jappix

L'installation est finie, il faut maintenant accéder à la première configuration par un navigateur en accédant à votre installation de Jappix toute fraiche.

http://jappix.example.org ou http://www.example.org/jappix

Configuration

Une fois sur l'interface de configuration, il va falloir ajouter les bons paramètres en suivant les instructions. Si cela ne va pas, ce n'est pas grave, le réglage peut se faire par la suite en accédant à l'interface d'administration.

  • Étape 3 : créez votre compte d'administration

  • Étape 4 : ce n'est que de la configuration de Jappix.

Mettez ce que vous voulez dans la partie service, les champs ne sont pas obligatoires. Dans "autres" vous pouvez enregistrer des salons utilisables par l'ensemble des utilisateurs. En cochant "Suggestion de salon", cela va proposer ces salons à la première connexion de l'utilisateur.

jappix-install-etape4.png

  • Étape 5 : c'est la plus importante.

L'hôte principal correspond à l'adresse de votre serveur Jabber. L'hôte de salon est l'adresse des salons de votre serveur Jabber si vous en avez spécifié une. L'hôte BOSH est le plus important car c'est celui qui permet la transmission entre Jappix (http) et votre serveur. Au vu de nos choix qui précèdent, il faut indiquer l'adresse du VirtualHost que l'on a créé à cet effet sous le serveur web Apache ; ici c'est jabber.example.org.

jappix-install-etape5.png

  • Étape 6 : ne pas faire attention à la limitation du php si c'est indiqué, cela peut se régler plus tard et n'est pas si important que cela.

Voilà, vous pouvez vous connecter à votre service Jappix et par la suite configurer à votre guise, tant au niveau de l'utilisateur qu'au niveau de l'administration (on y accède en cliquant sur "gestionnaire" au niveau de la page d'accueil de Jappix).

Un mini-client intégrable dans un site web : Mini-Jappix

mini-jappix.png

Cela permet d'avoir une petit applet sur votre site web à partir duquel on peut vous contacter en se connectant à un de vos salons.

L'installation de mini-jappix se fait en ajoutant un bout de code dans l'entête de votre fichier d'index de votre site web (index.php, index.html, head.html ou head.php situé à la racine du site).

Le bout de code est généré sur le site de mini-jappix à cette adresse : https://mini.jappix.com/get

Suivez les indications, c'est assez simple… et si cela ne vous satisfait pas, il suffit de recommencer pour générer un autre bout de code et le remplacer dans votre fichier d'index !