Eine kleiner ejabberd Anleitung

Dies ist kein richtiges Turorial. Es dient nur für mich als kleine Gedankenstütze. Dies ist was ich aus dem und dem Tutorial gezogen habe. Und das ganze ging unter meinem SuSE Desktop-Computer von statten. Es soll nichts produktives sein…es geht nur darum ob es ich hinbekomme ;-)

Also es geht los…erstmal muss man erlang kompilieren. Dazu habe ich es runtergeladen und kompiliert. Man braucht ncurses-devel und openssl-devel dafür.

wget http://erlang.org/download/otp_src_R10B-9.tar.gz
./configure
make && make install

so nun kommt ejabberd an die Reihe.

wget http://www.process-one.net/en/projects/ejabberd/download/1.0.0/ejabberd-1.0.0.tar.gz
./configure && make

so nun müssen wir das makefile anpassen. Sonst installiert er ejabberd komplett über das ganze System.

vim Makefile
DESTDIR = /usr/local/ejabberd
EJABBERDDIR = $(DESTDIR)

make install

Nun erzeugen wir ein SSL-Zertifikat

openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem >> server.pem
rm privkey.pem

Dieses File habe ich nach /usr/local/ejabberd/etc/ejabberd kopiert und die ejabberd.cfg entsprechend angepasst

{hosts, ["jabber.foo.bar"]}.

{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
starttls, {certfile, "/usr/local/ejabberd/etc/ejabberd/server.pem"}]},
{5223, ejabberd_c2s, [{access, c2s},
tls, {certfile, "/usr/local/ejabberd/etc/ejabberd/server.pem"}]},

{s2s_certfile, “/usr/local/ejabberd/etc/ejabberd/server.pem”}.

Wir linken die config in das ejabberd root. So ersparen wir uns ne menge Arbeit beim starten des Servers.

ln /usr/local/ejabberd/etc/ejabebrd/ejabberd.cfg ejabberd.cfg

Um das das DNS SRV Problem zu lösen erstellen wir eine Datei und schreiben folgenes hinein.

touch inetrc

{file, resolv, “/etc/resolv.conf”}.

Nun haben wir alles zusammen und erstellen ein Startscript.

#!/bin/sh

# Export the ejabberd home directory
export HOME=/usr/local/ejabberd

# Export max ports
export ERL_MAX_PORTS=32000

# This will reduce mem usage, but go slower
export ERL_FULLSWEEP_AFTER=0

# Make sure we get the .so’s for ejabberd
export LD_LIBRARY_PATH=/usr/local/ejabberd/priv/lib:$LD_LIBRARY_PATH

/usr/local/bin/erl -detached -pa /usr/local/ejabberd/ebin -sname batman -s ejabberd -kernel inetrc \”/usr/local/ejab
berd/etc/ejabberd/inetrc\”

wobei batman mein hostname ist.

Um das Tool ejabberdctl zu nutzen muss es erst in das ejabberd Root-Verzeichnis kopiert und angepasst werden.

cp /usr/src/packages/BUILD/ejabberd-1.0.0/tools/ejabberdctl .

#!/bin/sh
export HOME=/usr/local/ejabberd

exec erl -pa /usr/local/ejabberd/ebin -noinput -sname ejabberdctl -s ejabberd_ctl -extra $@

Hier wird nur noch angegeben wo sie das ebin Verzeichnis befindet. Nun wird das ejabberd-Verzeichnis so geändert das es dem jabber-Benutzer gehört. Das geschicht mit

chown jabber /usr/local/ejabberd -R

Nun kann ejabberd mit sudo gestartet werden

sudo -u jabber /usr/local/ejabberd/run

Ich weiß diese Auflisten ist absolut nicht perfekt…aber für meinen ersten Test hat es gereicht.

Edit: Ich habe das run-Script angepasst. Damit ejabberd über einen anderen User laufen kann muss “Home” exportiert werden. Desweiteren das ejabberd äüberhaubt mit einem anderen User gestartet wird.

2 Responses to “Eine kleiner ejabberd Anleitung”


  1. 1 Daryk

    Hehe, ich gratuliere dir zu deinem eJabberd!

  2. 2 xsteadfastx

    Man muss halt nur erstmal dahinter kommen wie das ding funktioniert :) Einen Transport habe ich auch noch nicht eingerichtet..aber das scheint ja nicht so das Porblem zu sein

Leave a Reply