Installer un serveur Jabberd2 sous Debian unstable

Cette page wiki est honteusement pompée sur http://doc.ubuntu-fr.org/jabberd2

A noter que le paquet jabberd2 n'est disponible sous Debian qu'en unstable.

Si vous ne l'avez pas déjà fait, ajouter cette ligne à votre /etc/apt/sources.list

deb http://debian.mines.inpl-nancy.fr/debian/ unstable main contrib non-free

Le but de ce document et de proposer une façon simple et rapide d'installer un serveur jabberd2. Pour une configuration plus détaillée, il faut se référer à la documentation officielle de jabberd2 qui a servi à l'élaboration de cette page.

Prérequis

Pour garder les informations liées aux utilisateurs, vous devez avoir un serveur de base de donnée installé (postgre, mysql…).

Cette façon de procéder doit marcher pour dapper et edgy (il y a de forte chance que ce soit toujours valable pour feisty).

Pour ajouter un utilisateur au serveur, exécutez la commande suivante en tant que root :

# groupadd jabber

# useradd -g jabber jabber

Choisissez ensuite un mot de passe pour ce compte à l'aide de la commande suivante :

# passwd jabber

Après avoir changé le mot de passe, nous devons créer un répertoire dans lequel le processus stockera ses journaux et ses pids.

Pour ce faire, exécutez les commandes suivantes :

# mkdir -p /usr/local/var/jabberd/pid/

# mkdir /usr/local/var/jabberd/log/

Une fois les répertoires créés, changeons l'appartenance des répertoires de façon à ce que l'utilisateur jabber puisse écrire dedans. Exécutez les commandes suivantes :

# chown -R jabber:jabber /usr/local/var/jabberd/

Installation du package jabberd2

# apt-get update && apt-get install jabberd2

Vous pouvez également utiliser Synaptic.

Via phpmyadmin, créer un user jabberd2 et sa table jabberd2 et bien noter son mot de passe, il servira plus bas.

(pour installer phpmyadmin et la base MYSql: {CODE()}# apt-get install mysql-server phpmyadmin{CODE}

Le script pour créer les tables :

CREATE DATABASE jabberd2;

USE jabberd2;

--

-- c2s authentication/registration table

--

CREATE TABLE `authreg` (

`username` TEXT, KEY `username` (`username`(255)),

`realm` TINYTEXT, KEY `realm` (`realm`(255)),

`password` TINYTEXT ) DEFAULT CHARSET=UTF8;

--

-- Session manager tables

--

--

-- Active (seen) users

-- Used by: core

--

CREATE TABLE `active` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`time` INT ) DEFAULT CHARSET=UTF8;

--

-- Logout times

-- Used by: mod_iq_last

--

CREATE TABLE `logout` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`time` INT ) DEFAULT CHARSET=UTF8;

--

-- Roster items

-- Used by: mod_roster

--

CREATE TABLE `roster-items` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`jid` TEXT,

`name` TEXT,

`to` TINYINT,

`from` TINYINT,

`ask` INT ) DEFAULT CHARSET=UTF8;

--

-- Roster groups

-- Used by: mod_roster

--

CREATE TABLE `roster-groups` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`jid` TEXT,

`group` TEXT ) DEFAULT CHARSET=UTF8;

--

-- vCard (user profile information)

-- Used by: mod_iq_vcard

--

CREATE TABLE `vcard` (

`collection-owner` VARCHAR(255) NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`fn` VARCHAR(255),

`nickname` VARCHAR(255),

`url` VARCHAR(255),

`tel` VARCHAR(255),

`email` VARCHAR(255),

`jabberid` VARCHAR(3071),

`mailer` VARCHAR(1023),

`title` VARCHAR(255),

`role` VARCHAR(255),

`bday` VARCHAR(255), # Shouldn't this be a DATE?

`tz` VARCHAR(7),

`n-family` VARCHAR(255),

`n-given` VARCHAR(255),

`n-middle` VARCHAR(255),

`n-prefix` VARCHAR(255),

`n-suffix` VARCHAR(255),

`adr-street` VARCHAR(255),

`adr-extadd` VARCHAR(255),

`adr-pobox` VARCHAR(15),

`adr-locality` VARCHAR(255),

`adr-region` VARCHAR(255),

`adr-pcode` VARCHAR(31),

`adr-country` VARCHAR(63),

`geo-lat` VARCHAR(255),

`geo-lon` VARCHAR(255),

`org-orgname` VARCHAR(255),

`org-orgunit` VARCHAR(255),

`agent-extval` VARCHAR(255),

`sort-string` VARCHAR(255),

`desc` TEXT,

`note` TEXT,

`uid` VARCHAR(255),

`photo-type` VARCHAR(127),

`photo-binval` TEXT,

`photo-extval` VARCHAR(255),

`logo-type` VARCHAR(127),

`logo-binval` TEXT,

`logo-extval` VARCHAR(255),

`sound-phonetic` VARCHAR(255),

`sound-binval` TEXT,

`sound-extval` VARCHAR(255),

`key-type` VARCHAR(127),

`key-cred` TEXT,

`rev` VARCHAR(255)

) DEFAULT CHARSET=UTF8;

--

-- Offline message queue

-- Used by: mod_offline

--

CREATE TABLE `queue` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`xml` MEDIUMTEXT ) DEFAULT CHARSET=UTF8;

--

-- Private XML storage

-- Used by: mod_iq_private

--

CREATE TABLE `private` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`ns` TEXT,

`xml` MEDIUMTEXT ) DEFAULT CHARSET=UTF8;

--

-- Message Of The Day (MOTD) messages (announcements)

-- Used by: mod_announce

--

CREATE TABLE `motd-message` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`xml` TEXT ) DEFAULT CHARSET=UTF8;

--

-- Times of last MOTD message for each user

-- Used by: mod_announce

--

CREATE TABLE `motd-times` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`time` INT ) DEFAULT CHARSET=UTF8;

--

-- User-published discovery items

-- Used by: mod_disco_publish

--

CREATE TABLE `disco-items` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`jid` TEXT,

`name` TEXT,

`node` TEXT ) DEFAULT CHARSET=UTF8;

--

-- Default privacy list

-- Used by: mod_privacy

--

CREATE TABLE `privacy-default` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`default` text ) DEFAULT CHARSET=UTF8;

--

-- Privacy lists

-- Used by: mod_privacy

--

CREATE TABLE `privacy-items` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`list` TEXT,

`type` TEXT,

`value` TEXT,

`deny` TINYINT,

`order` INT,

`block` INT ) DEFAULT CHARSET=UTF8;

--

-- Vacation settings

-- Used by: mod_vacation

--

CREATE TABLE `vacation-settings` (

`collection-owner` TEXT NOT NULL, KEY(`collection-owner`(255)),

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequence`),

`start` INT,

`end` INT,

`message` TEXT ) DEFAULT CHARSET=UTF8;

--

-- Users statuses

-- Used by: mod_status

--

CREATE TABLE `status` (

`collection-owner` TEXT NOT NULL,

`object-sequence` BIGINT NOT NULL AUTO_INCREMENT, KEY(`object-sequence`),

`status` TEXT NOT NULL,

`show` TEXT NOT NULL,

`last-login` INT DEFAULT '0',

`last-logout` INT DEFAULT '0',

`xml` TEXT);

Configuration

Le nom du serveur dans sm.xml et c2s.xml

Votre nom de serveur doit être renseigné à la fois dans /etc/jabberd2/sm.xml et dans /etc/jabberd2/c2s.xml.

Editez /etc/jabberd2/sm.xml :

# vi /etc/jabberd2/sm.xml

Renseignez le champ id de la section sm (~ ligne 1) :

<!-- Session manager configuration -->

<sm>

<!-- Our ID on the network. Users will have this as the domain part of

their JID. If you want your server to be accessible from other

Jabber servers, this ID must be resolvable by DNS.s

(default: localhost) -->

<id>ma_machine.mon_domaine.com</id>

<!-- Par exemple <id>marvin.asrall.iuta.univ-nancy2.fr</id> -->

Editez /etc/jabberd2/c2s.xml :

#vi /etc/jabberd2/c2s.xml

Renseignez le champ id de la section local (~ ligne 63) :

<!-- Local network configuration -->

<local>

<!-- Who we identify ourselves as. This should correspond to the

ID (host) that the session manager thinks it is. You can

specify more than one to support virtual hosts, as long as you

have additional session manager instances on the network to

handle those hosts. The realm attribute specifies the auth/reg

or SASL authentication realm for the host. If the attribute is

not specified, the realm will be selected by the SASL

mechanism, or will be the same as the ID itself. Be aware that

users are assigned to a realm, not a host, so two hosts in the

same realm will have the same users.

If no realm is specified, it will be set to be the same as the

ID. -->

<id>ma_machine.mon_domaine.com</id>

Comme il est mentionné dans le fichier c2s.xml, le nom du serveur (qui est concaténé à l'id jabber) doit pouvoir être résolu par DNS (ou via /etc/hosts) ❗ EVITEZ localhost, une ID jabber est <nom d'utilisateur>@<nom de serveur>, donc lorsqu'un client se connecte à votre serveur il doit avoir le bon nom de serveur et pas localhost ❗

Mysql

Éditez encore votre /etc/jabberd2/c2s.xml

<!-- MySQL driver configuration -->

<mysql>

<!-- Database server host and port -->

<host>localhost</host>

<port>3306</port>

<!-- Database name -->

<dbname>jabberd2</dbname>

<!-- Database username and password -->

<user>jabberd2</user>

<pass>secret</pass>

Vous ne devez changer le champ host que si votre base de données ne se trouve pas sur la même machine que le serveur jabberd2. Si vous n'utilisez pas le port par défaut de mysSQL (3306), vous devez modifier le champ port.

Bien sûr le pass n'est pas "secret" mais correspond au mot de passe pour la base MySQL de votre user jabberd2 créé au début du tuto.

Jabberd2 est maintenant configuré. Il ne vous reste plus qu'à tester votre installation.

Tests de l'installation

Le serveur jabberd2 étant lancé dès l'installation du paquet, il faut redémarrer celui-ci afin de prendre en compte les étapes précédentes :

# /etc/init.d/jabberd2 restart

Ou

# service jabberd2 restart

Ensuite configurez un client jabber (psi par exemple) depuis une machine du réseau local pour vous connecter à votre serveur jabberd2. Si ça ne marche pas, bonne chance ! Allez tout de même jetter un coup d'oeil dans les logs (/var/log/jabber/).

Si cette opération réussit et que vous voulez que votre serveur soit accessible depuis internet, recommencez l'opération depuis une machine extérieure à votre réseau (ou un service live comme JWchat), si cela ne fonctionne pas verifiez vos firewalls et que vous utilisez un FQDN (essayez par exemple de resoudre votre DNS pas un des sites qui propose ce service)

Dans un autre post, je vous indiquerai comment installer le composant multi-user chat.

EDIT : Euh, non, en fait je n'expliquerais pas comment installer le multi-user chat, j'ai trop galéré quand je l'ai fait et de toute façon j'ai oublié comment le faire.