Installation des dépendances et du serveur
Tout d’abord, on va procéder à l’installation des dépendances nécessaires :
sudo apt-get install git-core libssl-dev libexpat1-dev erlang-dev erlang-src erlang erlang-base imagemagick openssl recode
Puis, on va récupérerer les sources depuis le dépot git du projet :
cd ~git clone git://git.process-one.net/ejabberd/mainline.git ejabberd
cd ejabberd/src
git checkout -b 2.1.x origin/2.1.x
On lance ensuite la configuration, la compilation et l’installation du serveur :
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --enable-odbc
makesudo make install
On a activé l’option enable-odbc pour pouvoir utiliser par la suite le mod_archive_odbc.
Script d’initialisation
L’intallation est terminée, on va créer un script d’initialisation qui démarera le serveur lors du démarrage de la machine et facilitera les opérations de maintenance.
On ouvre tout d’abord le nouveau fichier :
sudo nano /etc/init.d/ejabberd
On y colle le contenu suivant :
#! /bin/sh## ejabberd Start/stop ejabberd server#### BEGIN INIT INFO# Provides: ejabberd# Required-Start: $remote_fs $network# Required-Stop: $remote_fs $network# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Short-Description: Starts ejabberd jabber server# Description: Starts ejabberd jabber server, an XMPP# compliant server written in Erlang.### END INIT INFOPATH=/sbin:/bin:/usr/sbin:/usr/bin
EJABBERDCTL=/usr/sbin/ejabberdctl
NAME=ejabberdtest -f $EJABBERDCTL || exit 0
. /lib/lsb/init-functions
# Include ejabberd defaults if availableif [ -f /etc/default/ejabberd ]; then
. /etc/default/ejabberd
fictl()
{action="$1"
$EJABBERDCTL $action >/dev/null
}# 0 is force-ok, 1 is force-ko, 2 is don't knowopstatus=2
case "$1" in start)
log_daemon_msg "Starting jabber server: $NAME"if ctl status ; then
log_daemon_msg "Server is already running." opstatus=0
elsectl start
fi ;;
stop)log_daemon_msg "Stopping jabber server: $NAME"if ctl status;then
if ctl stop;then
cnt=0 sleep 1
while ctl status;docnt=`expr $cnt + 1`
if [ $cnt -gt 60 ];then
log_daemon_msg "Could not stop server."opstatus=1
breakfisleep 1
doneelseopstatus=1
fielselog_daemon_msg "Server is not running."opstatus=0
fi ;;
restart|force-reload)
log_daemon_msg "Restarting jabber server: $NAME"if ctl status ;then ctl restartelselog_daemon_msg "Server is not running. Starting $NAME"ctl restart
fi ;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
exit 1 ;;
esacif [ $opstatus = 2 ] ; then
if [ $? -eq 0 ]; then
log_end_msg 0elselog_daemon_msg "Errors were encoundered."log_end_msg 1fielselog_end_msg $opstatusfiexit 0
On le rend ensuite exécutable et on l’active :
sudo chmod +x /etc/init.d/ejabberd
sudo update-rc.d ejabberd defaults
On peut enfin démarrer le serveur :
sudo /etc/init.d/ejabberd start
Installer le module ejabberd_xmlrpc
Récupération des sources et compilation
On récupère dans un premier temps la librairie nécessaire erlang-xmlrpc que l’on compile et installe dans les librairies Erlang :
cd ~wget http://ejabberd.jabber.ru/files/contributions/xmlrpc-1.13-ipr2.tgz
tar -xzvf xmlrpc-1.13-ipr2.tgz
cd xmlrpc-1.13/src
makecd ../../
sudo cp -Rvf xmlrpc-1.13/ /usr/lib/erlang/lib/
On récupère ensuite les modules externes d’ejabberd et on se rend dans le bon répertoire :
cd ~svn co https://svn.process-one.net/ejabberd-modules/
cd ejabberd-modules/ejabberd_xmlrpc/trunk/
On compile ensuite le module à proprement dit pour ejabberd :
sh build.sh
On copie ensuite le nouveau module au bon endroit :
sudo cp ebin/* /usr/lib/ejabberd/ebin/
Configuration du module xmlrpc pour ejabberd
On ouvre le fichier de configuration :
sudo nano /etc/ejabberd/ejabberd.cfg
La première partie de la configuration consiste à activer le bon listener du serveur xmlrpc. On ajoute donc dans la section listen la ligne :
{4560, ejabberd_xmlrpc, []},
Cette ligne active le serveur xmlrpc sur le port 4560.
Pour un peu plus de sécurité nous allons utiliser quelques options. La première est la directive de configuration access_commands qui oblige à s’identifier pour accéder aux informations du serveur :
{4560, ejabberd_xmlrpc, [{access_commands, [{all, all, []}]}]},
On redémarre ensuite le serveur :
/etc/init.d/ejabberd restart
Installer le module mod_archive_odbc
Assurez vous que le serveur est bien compilé avec l’option
--enable-odbc
On récupère les sources des modules externes pour ejabberd :
cd ~svn co https://svn.process-one.net/ejabberd-modules/
cd ejabberd-modules/mod_archive/trunk/
Puis on compile le module et on copie ses fichiers au bon endroit :
sh build.shcp ebin/* /usr/lib/ejabberd/ebin/
Création de la base de donnée et de son utilisateur
Il est ensuite nécessaire de créer la base de donnée nécessaire pour stocker les archives. Pour cela il est nécessaire de connaitre le mot de passe du compte root (administrateur) du serveur mysql ou d’un autre utilisateur capable de créer des bases de données puis de lancer les commandes suivantes :
cd srcmysql -u root -p < mod_archive_odbc_mysql.sql
username doit être un utilisateur mysql du sytème pouvant créer une base de donnée.
Une nouvelle base de donnée ejabberd est alors créée.
Pour des raisons de sécurité nous allons créer un utilisateur mysql dédié ejabberd auquel on donnera l’ensemble des droits sur la nouvelle table créée. Pour ce faire, on lance MySQL en ligne de commande identifiée en root :
mysql -u root -p
Puis on lance la requête SQL suivante :
Le nouvel utilisateur ejabberd identifié grâce au mot de passe pass_user_ejabberd pourra alors administrer la base récemment créée.
Installer le connecteur mysql pour ejabberd
https://support.process-one.net/doc/display/MESSENGER/Using+ejabberd+with+MySQL+native+driver
cd ../../../mysql/trunk
./build.shcp ebin/*.beam /usr/lib/ejabberd/ebin/
Il suffit ensuite de modifier la configuration du serveur :
nano /etc/ejabberd/ejabberd.cfg
Afin d’y ajouter la ligne dans la section DATABASE SETUP:
{odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "pass_user_ejabberd"}}.
Configuration du module d’archive
Il suffit ensuite de configurer le module de la sorte dans la section MODULES du fichier de configuration d’ejabberd :
{mod_archive_odbc, [{database_type, "mysql"},
{default_auto_save, true},
{enforce_default_auto_save, false},
{default_expire, infinity},
{enforce_min_expire, 0},
{enforce_max_expire, infinity},
{replication_expire, 31536000},
{session_duration, 1800},
{wipeout_interval, 86400}]},
On redémarre ensuite le serveur :
/etc/init.d/ejabberd restart
Liens externes
Ports du firewall à ouvrir
Les ports suivants doivent être ouverts sur votre firewall pour le bon fonctionnement du serveur :
- TCP 5222 pour le protocole XMPP;
- TCP 5269 pour le protocole XMPP;
- TCP 5280 pour l’interface d’administration web;