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;

—Ses­sion 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;

—Ros­ter 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;

—Ros­ter 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;

—Pri­vate 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;

—Mes­sage 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;

—Pri­vacy 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) :

<!—Ses­sion 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.

Créer une clé usb d’ins­tal­la­tion Debian

Pour se faire une clé d’ins­tall Debian, rien de plus simple :

  • Récu­pé­rer une image d’ins­tall mini­male corres­pon­dant à l’ar­chi­tec­ture et la version du boot.img.gz (par ici ou là pour une autre version )
  • Insé­rer votre clé (montée ou pas, on s’en fout). Repé­rer à quoi elle corres­pond dans /dev (ex : /dev/sda /dev/sda1)

# zcat boot.img.gz > /dev/sda

  • Démon­ter la clé et la rebran­cher.
  • Copier l’image iso d’ins­tall à la racine de la clé.

Ayé, c’est fini !

Atten­tion tout de même, je sais pas pourquoi mais votre clé sera toute petite après ça : ma clé de 2Go ne dispose plus que de 256Mo après cette opéra­tion. Si vous voulez la réuti­li­ser, je vous conseille donc de la forma­ter avec gpar­ted par exemple.