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.