Instal­ler un serveur Jabberd2 sous Debian unstable

Cette page wiki est honteu­se­ment pompée sur http://doc.ubuntu-fr.org/jabberd2

A noter que le paquet jabberd2 n’est dispo­nible sous Debian qu’en unstable.

Si vous ne l’avez pas déjà fait, ajou­ter cette ligne à votre /etc/apt/sources.list

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

Le but de ce docu­ment et de propo­ser une façon simple et rapide d’ins­tal­ler un serveur jabberd2. Pour une confi­gu­ra­tion plus détaillée, il faut se réfé­rer à la docu­men­ta­tion offi­cielle de jabberd2 qui a servi à l’éla­bo­ra­tion de cette page.

Prérequis

Pour garder les infor­ma­tions liées aux utili­sa­teurs, 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 ajou­ter un utili­sa­teur au serveur, exécu­tez la commande suivante en tant que root :

# grou­padd jabber

# useradd -g jabber jabber

Choi­sis­sez 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éper­toire dans lequel le proces­sus stockera ses jour­naux et ses pids.

Pour ce faire, exécu­tez les commandes suivantes :

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

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

Une fois les réper­toires créés, chan­geons l’ap­par­te­nance des réper­toires de façon à ce que l’uti­li­sa­teur jabber puisse écrire dedans. Exécu­tez les commandes suivantes :

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

Instal­la­tion du package jabberd2

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

Vous pouvez égale­ment utili­ser Synap­tic.

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

(pour instal­ler phpmyad­min et la base MYSql: {CODE()}# apt-get install mysql-server phpmyad­min{CODE}

Le script pour créer les tables :

CREATE DATABASE jabberd2;

USE jabberd2;

— c2s authen­ti­ca­tion/regis­tra­tion table

CREATE TABLE `authreg` (

`user­na­me` TEXT, KEY `user­na­me` (`user­na­me`(255)),

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

`pass­word` TINYTEXT ) DEFAULT CHARSET=UTF8;

— Session mana­ger tables

— Active (seen) users

— Used by: core

CREATE TABLE `acti­ve` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`time` INT ) DEFAULT CHARSET=UTF8;

— Logout times

— Used by: mod_iq_last

CREATE TABLE `logout` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`time` INT ) DEFAULT CHARSET=UTF8;

— Roster items

— Used by: mod_roster

CREATE TABLE `ros­ter-items` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`jid` TEXT,

`name` TEXT,

`to` TINYINT,

`from` TINYINT,

`ask` INT ) DEFAULT CHARSET=UTF8;

— Roster groups

— Used by: mod_roster

CREATE TABLE `ros­ter-groups` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`jid` TEXT,

`group` TEXT ) DEFAULT CHARSET=UTF8;

— vCard (user profile infor­ma­tion)

— Used by: mod_iq_vcard

CREATE TABLE `vcard` (

`col­lec­tion-owner` VARCHAR(255) NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`fn` VARCHAR(255),

`nick­na­me` VARCHAR(255),

`url` VARCHAR(255),

`tel` VARCHAR(255),

`email` VARCHAR(255),

`jab­be­rid` VARCHAR(3071),

`mai­ler` VARCHAR(1023),

`tit­le` VARCHAR(255),

`role` VARCHAR(255),

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

`tz` VARCHAR(7),

`n-fami­ly` VARCHAR(255),

`n-given` VARCHAR(255),

`n-midd­le` VARCHAR(255),

`n-prefix` VARCHAR(255),

`n-suffix` VARCHAR(255),

`adr-street` VARCHAR(255),

`adr-extadd` VARCHAR(255),

`adr-pobox` VARCHAR(15),

`adr-loca­li­ty` VARCHAR(255),

`adr-region` VARCHAR(255),

`adr-pcode` VARCHAR(31),

`adr-coun­try` VARCHAR(63),

`geo-lat` VARCHAR(255),

`geo-lon` VARCHAR(255),

`org-orgna­me` VARCHAR(255),

`org-orgu­nit` 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-phone­tic` 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` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`xml` MEDIUMTEXT ) DEFAULT CHARSET=UTF8;

— Private XML storage

— Used by: mod_iq_private

CREATE TABLE `pri­va­te` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`ns` TEXT,

`xml` MEDIUMTEXT ) DEFAULT CHARSET=UTF8;

— Message Of The Day (MOTD) messages (announ­ce­ments)

— Used by: mod_announce

CREATE TABLE `motd-messa­ge` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`xml` TEXT ) DEFAULT CHARSET=UTF8;

— Times of last MOTD message for each user

— Used by: mod_announce

CREATE TABLE `motd-times` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`time` INT ) DEFAULT CHARSET=UTF8;

— User-publi­shed disco­very items

— Used by: mod_disco_publish

CREATE TABLE `disco-items` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`jid` TEXT,

`name` TEXT,

`node` TEXT ) DEFAULT CHARSET=UTF8;

— Default privacy list

— Used by: mod_privacy

CREATE TABLE `pri­vacy-default` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`default` text ) DEFAULT CHARSET=UTF8;

— Privacy lists

— Used by: mod_privacy

CREATE TABLE `pri­vacy-items` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`list` TEXT,

`type` TEXT,

`value` TEXT,

`deny` TINYINT,

`order` INT,

`blo­ck` INT ) DEFAULT CHARSET=UTF8;

— Vaca­tion settings

— Used by: mod_vaca­tion

CREATE TABLE `vaca­tion-settings` (

`col­lec­tion-owner` TEXT NOT NULL, KEY(`col­lec­tion-owner`(255)),

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY(`object-sequen­ce`),

`start` INT,

`end` INT,

`mes­sa­ge` TEXT ) DEFAULT CHARSET=UTF8;

— Users statuses

— Used by: mod_status

CREATE TABLE `sta­tus` (

`col­lec­tion-owner` TEXT NOT NULL,

`object-sequen­ce` BIGINT NOT NULL AUTO_INCREMENT, KEY(`object-sequen­ce`),

`sta­tus` TEXT NOT NULL,

`show` TEXT NOT NULL,

`last-login` INT DEFAULT ‘0’,

`last-logout` INT DEFAULT ‘0’,

`xml` TEXT);

Confi­gu­ra­tion

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

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

Editez /etc/jabberd2/sm.xml :

# vi /etc/jabberd2/sm.xml

Rensei­gnez le champ id de la section sm (~ ligne 1) :

<!– Session mana­ger confi­gu­ra­tion –>

<sm>

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

their JID. If you want your server to be acces­sible from other

Jabber servers, this ID must be resol­vable by DNS.s

(default: local­host) –>

<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

Rensei­gnez le champ id de la section local (~ ligne 63) :

<!– Local network confi­gu­ra­tion –>

<local>

<!– Who we iden­tify ourselves as. This should corres­pond to the

ID (host) that the session mana­ger thinks it is. You can

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

have addi­tio­nal session mana­ger instances on the network to

handle those hosts. The realm attri­bute speci­fies the auth/reg

or SASL authen­ti­ca­tion realm for the host. If the attri­bute is

not speci­fied, the realm will be selec­ted by the SASL

mecha­nism, or will be the same as the ID itself. Be aware that

users are assi­gned to a realm, not a host, so two hosts in the

same realm will have the same users.

If no realm is speci­fied, 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 conca­téné à l’id jabber) doit pouvoir être résolu par DNS (ou via /etc/hosts) :!: EVITEZ local­host, une ID jabber est <nom d’uti­li­sa­teur>@<nom de serveur>, donc lorsqu’un client se connecte à votre serveur il doit avoir le bon nom de serveur et pas local­host :!:

Mysql

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

<!– MySQL driver confi­gu­ra­tion –>

<mysql>

<!– Data­base server host and port –>

<host>local­host</host>

<port>3306</port>

<!– Data­base name –>

<dbname>jabberd2</dbname>

<!– Data­base user­name and pass­word –>

<user>jabberd2</user>

<pass>secret</pass>

Vous ne devez chan­ger 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’uti­li­sez pas le port par défaut de mysSQL (3306), vous devez modi­fier le champ port.

Bien sûr le pass n’est pas « secret » mais corres­pond au mot de passe pour la base MySQL de votre user jabberd2 créé au début du tuto.

Jabberd2 est main­te­nant confi­guré. Il ne vous reste plus qu’à tester votre instal­la­tion.

Tests de l’ins­tal­la­tion

Le serveur jabberd2 étant lancé dès l’ins­tal­la­tion du paquet, il faut redé­mar­rer celui-ci afin de prendre en compte les étapes précé­dentes :

# /etc/init.d/jabberd2 restart

Ou

# service jabberd2 restart

Ensuite confi­gu­rez un client jabber (psi par exemple) depuis une machine du réseau local pour vous connec­ter à 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éra­tion réus­sit et que vous voulez que votre serveur soit acces­sible depuis inter­net, recom­men­cez l’opé­ra­tion depuis une machine exté­rieure à votre réseau (ou un service live comme JWchat), si cela ne fonc­tionne pas veri­fiez vos fire­walls et que vous utili­sez un FQDN (essayez par exemple de resoudre votre DNS pas un des sites qui propose ce service)

Dans un autre post, je vous indique­rai comment instal­ler le compo­sant multi-user chat.

EDIT : Euh, non, en fait je n’ex­plique­rais pas comment instal­ler 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.

Me soutenir sur Tipeee Me soutenir sur Liberapay

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *