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
- make
- sudo 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 INFO
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- EJABBERDCTL=/usr/sbin/ejabberdctl
- NAME=ejabberd
- test -f $EJABBERDCTL || exit 0
- . /lib/lsb/init-functions
- # Include ejabberd defaults if available
- if [ -f /etc/default/ejabberd ]; then
- . /etc/default/ejabberd
- fi
- ctl()
- {
- action="$1"
- $EJABBERDCTL $action >/dev/null
- }
- # 0 is force-ok, 1 is force-ko, 2 is don't know
- opstatus=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
- else
- ctl 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;
- do
- cnt=`expr $cnt + 1`
- if [ $cnt -gt 60 ];then
- log_daemon_msg "Could not stop server."
- opstatus=1
- break
- fi
- sleep 1
- done
- else
- opstatus=1
- fi
- else
- log_daemon_msg "Server is not running."
- opstatus=0
- fi ;;
- restart|force-reload)
- log_daemon_msg "Restarting jabber server: $NAME"
- if ctl status ;
- then ctl restart
- else
- log_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 ;;
- esac
- if [ $opstatus = 2 ] ; then
- if [ $? -eq 0 ]; then
- log_end_msg 0
- else
- log_daemon_msg "Errors were encoundered."
- log_end_msg 1
- fi
- else
- log_end_msg $opstatus
- fi
- exit 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 https://www.ejabberd.im/files/contributions/xmlrpc-1.13-ipr2.tgz
- tar -xzvf xmlrpc-1.13-ipr2.tgz
- cd xmlrpc-1.13/src
- make
- cd ../../
- 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.sh
- cp 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 src
- mysql -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://docs.ejabberd.im/admin/guide/databases/mysql/
- cd ../../../mysql/trunk
- ./build.sh
- cp 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 ;