Technical documentation : Debian
Documentation based on Debian distribution

> > > Installer ejabberd depuis SVN

Installer ejabberd depuis SVN

Installation des dépendances et du serveur

Tout d’abord, on va procéder à l’installation des dépendances nécessaires :

  1. 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 :

  1. cd ~
  2.  
  3. git clone git://git.process-one.net/ejabberd/mainline.git ejabberd
  4.  
  5. cd ejabberd/src
  6.  
  7. git checkout -b 2.1.x origin/2.1.x

Download

On lance ensuite la configuration, la compilation et l’installation du serveur :

  1. ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --enable-odbc
  2. make
  3. sudo make install

Download

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 :

  1. sudo nano /etc/init.d/ejabberd

On y colle le contenu suivant :

  1. #! /bin/sh
  2. #
  3. # ejabberd Start/stop ejabberd server
  4. #
  5. ### BEGIN INIT INFO
  6. # Provides: ejabberd
  7. # Required-Start: $remote_fs $network
  8. # Required-Stop: $remote_fs $network
  9. # Default-Start: 2 3 4 5
  10. # Default-Stop: 0 1 6
  11. # Short-Description: Starts ejabberd jabber server
  12. # Description: Starts ejabberd jabber server, an XMPP
  13. # compliant server written in Erlang.
  14. ### END INIT INFO
  15. PATH=/sbin:/bin:/usr/sbin:/usr/bin
  16. EJABBERDCTL=/usr/sbin/ejabberdctl
  17. NAME=ejabberd
  18.  
  19. test -f $EJABBERDCTL || exit 0
  20.  
  21. . /lib/lsb/init-functions
  22.  
  23. # Include ejabberd defaults if available
  24. if [ -f /etc/default/ejabberd ]; then
  25. . /etc/default/ejabberd
  26. fi
  27.  
  28. ctl()
  29. {
  30. action="$1"
  31. $EJABBERDCTL $action >/dev/null
  32. }
  33.  
  34. # 0 is force-ok, 1 is force-ko, 2 is don't know
  35. opstatus=2
  36.  
  37. case "$1" in start)
  38. log_daemon_msg "Starting jabber server: $NAME"
  39. if ctl status ; then
  40. log_daemon_msg "Server is already running." opstatus=0
  41. else
  42. ctl start
  43. fi ;;
  44.  
  45. stop)
  46. log_daemon_msg "Stopping jabber server: $NAME"
  47. if ctl status;then
  48. if ctl stop;then
  49. cnt=0 sleep 1
  50. while ctl status;
  51. do
  52. cnt=`expr $cnt + 1`
  53. if [ $cnt -gt 60 ];then
  54. log_daemon_msg "Could not stop server."
  55. opstatus=1
  56. break
  57. fi
  58. sleep 1
  59. done
  60. else
  61. opstatus=1
  62. fi
  63. else
  64. log_daemon_msg "Server is not running."
  65. opstatus=0
  66. fi ;;
  67.  
  68. restart|force-reload)
  69. log_daemon_msg "Restarting jabber server: $NAME"
  70. if ctl status ;
  71. then ctl restart
  72. else
  73. log_daemon_msg "Server is not running. Starting $NAME"
  74. ctl restart
  75. fi ;;
  76.  
  77. *)
  78. echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload}" >&2
  79. exit 1 ;;
  80. esac
  81.  
  82. if [ $opstatus = 2 ] ; then
  83. if [ $? -eq 0 ]; then
  84. log_end_msg 0
  85. else
  86. log_daemon_msg "Errors were encoundered."
  87. log_end_msg 1
  88. fi
  89. else
  90. log_end_msg $opstatus
  91. fi
  92.  
  93. exit 0

Download

On le rend ensuite exécutable et on l’active :

  1. sudo chmod +x /etc/init.d/ejabberd
  2. sudo update-rc.d ejabberd defaults

Download

On peut enfin démarrer le serveur :

  1. 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 :

  1. cd ~
  2. wget http://ejabberd.jabber.ru/files/contributions/xmlrpc-1.13-ipr2.tgz
  3. tar -xzvf xmlrpc-1.13-ipr2.tgz
  4. cd xmlrpc-1.13/src
  5. make
  6. cd ../../
  7. sudo cp -Rvf xmlrpc-1.13/ /usr/lib/erlang/lib/

Download

On récupère ensuite les modules externes d’ejabberd et on se rend dans le bon répertoire :

  1. cd ~
  2. svn co https://svn.process-one.net/ejabberd-modules/
  3. cd ejabberd-modules/ejabberd_xmlrpc/trunk/

Download

On compile ensuite le module à proprement dit pour ejabberd :

  1. sh build.sh

On copie ensuite le nouveau module au bon endroit :

  1. sudo cp ebin/* /usr/lib/ejabberd/ebin/

Configuration du module xmlrpc pour ejabberd

On ouvre le fichier de configuration :

  1. 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 :

  1. {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 :

  1. {4560, ejabberd_xmlrpc, [{access_commands, [{all, all, []}]}]},

On redémarre ensuite le serveur :

  1. /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 :

  1. cd ~
  2. svn co https://svn.process-one.net/ejabberd-modules/
  3. cd ejabberd-modules/mod_archive/trunk/

Download

Puis on compile le module et on copie ses fichiers au bon endroit :

  1. sh build.sh
  2. cp ebin/* /usr/lib/ejabberd/ebin/

Download

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 :

  1. cd src
  2. mysql -u root -p < mod_archive_odbc_mysql.sql

Download

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 :

  1. mysql -u root -p

Puis on lance la requête SQL suivante :

  1. GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'pass_user_ejabberd';

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

  1. cd ../../../mysql/trunk
  2. ./build.sh
  3. cp ebin/*.beam /usr/lib/ejabberd/ebin/

Download

Il suffit ensuite de modifier la configuration du serveur :

  1. nano /etc/ejabberd/ejabberd.cfg

Afin d’y ajouter la ligne dans la section DATABASE SETUP:

  1. {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 :

  1. {mod_archive_odbc, [{database_type, "mysql"},
  2. {default_auto_save, true},
  3. {enforce_default_auto_save, false},
  4. {default_expire, infinity},
  5. {enforce_min_expire, 0},
  6. {enforce_max_expire, infinity},
  7. {replication_expire, 31536000},
  8. {session_duration, 1800},
  9. {wipeout_interval, 86400}]},

Download

On redémarre ensuite le serveur :

  1. /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;

No comments


Who are you?
  • [Log in]
Enter your comment here
  • This form accepts SPIP shortcuts [->urls] {{bold}} {italics} <quotes> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.