JabberServer

Ein kleines HowTo wie man einen Jabber (XMPP) Server unter Debian 6 einrichtet

Als erstes habe ich mittels aptitude das ejabberd Paket installiert:

aptitude install ejabberd

Anschliessend habe ich die Datei

/etc/ejabberd/ejabberd.conf

Mit einem Texteditor bearbeitet.
Hier habe ich folgende Änderungen eingefügt:
{hosts, ["domain"]}.
{acl, admin, {user, "adminuser", "domain"}}.

Bei domain habe ich die IP-Adresse des Servers eingetragen, unter der
er auch von aussen erreichbar ist (er steht hinter einem Router). Die lokale
IP Adresse hat hier nicht funktioniert.
Der Benutzername adminuser ist frei wählbar.

Anschliessend ein Neustart mit:

/etc/init.d/ejabberd restart

Nun habe ich die Benutzer angelegt nach diesem Schema:

ejabberdctl register nutzername domain kennwort

Hier trägt man den gewünschen Nutzername, die Domain (oder wie bei mir IP Adresse) und das
Kennwort für den Benutzer ein. Wichtig: Den Admin Nutzer muss man so auch anlegen !!
Anschliessend startet man den Jabber-Server nochmal neu und alles funktioniert.

Im Router musste ich für die korrekte Funktion eine Portweiterleitung auf 5222 sowie 5223 einrichten.
Damit der Server auch mit anderen Servern kommunizieren kann muss der Port 5269 freigegeben werden. Anndernfalls hat man eine sehr geschlossene Nutzergruppe.

Passende Clients

Zum Server sollte man natürlich auch ein paar Clients empfehlen...
Unter Debian habe ich mit Empathy und Pidgin gearbeitet wobei mir Pidgin
besser gefällt und auch leichter im Umgang ist. Dazu kommt das Pidgin noch
mehrere Protokolle unterstützt.
Unter Windows läuft Pidgin auch sehr gut.
Auf Android nutze ich persönlich xabber und bin damit mehr als zufrieden.
Auf Windowsphones gibt es IM+ und zur Not wenn gar nichts geht
ein Webclient wie jwchat.org .

Befehle zur Verwaltung

Datensicherung bei Jabber macht man wie folgt:

ejabberdctl backup Datei

oder

ejabberdctl dump Datei

Wobei backup ein normales Backup anlegt während dump mehr ein komplettes Abspeichern
der Datenbank ist. Backup sollte normalerweise reichen.

Zum Wiederherstellen nimmt man analog dazu restore, bzw load (wenn man dump genutzt hat):

ejabberdctl restore Datei


Wichtig: Damit das Backup gespeichert werden kann sollte es unter Ubuntu 12.04 im Verzeichnis /tmp abgelegt werden.
Ansonsten kommt nur eine Fehlermeldung.
Also korrekt: ejabberdctl backup /tmp/jabberbackup


Mit folgenden Befehl kann man sich anzeigen lasse, wie viele Benutzer aktuell angemeldet sind:

ejabberdctl connected-users-number

Und wenn man die Benutzernamen erfahren möchte nimmt man:

ejabberdctl connected-users

Und für eine Übersich aller angemeldeten Benutzer (in neueren Versionen):

ejabberdctl registered-users Servername

Webinterface
Das Webinterface erreicht man unter folgender Adresse:
http://192.168.178.39:5280/admin/
Als Benutzername muss man den kompletten jabber Name mit Domain eingeben, nicht nur Admin oder ähnliches ...

eJabberd startet nicht
Einfach folgenden Befehl probieren:
killall epmd

Zwei Host Adressen an einem Server
Um einen eJabberd Server für zwei Adressen einzurichten habe ich als erstes die Datei

/etc/ejabberd/ejabberd.cfg

wir folgt ergänzt:

%% Admin user
{acl, admin, {gnude, "", "gnude.no-ip.biz"}}.
{acl, admin, {gnude, "", "gnude.feste-ip.net"}}.
%% Hostname
{hosts, ["gnude.no-ip.biz", "gnude.feste-ip.net"]}.

Damit der Jabber Server die änderung auch übernimmt, habe ich ihn neu gestartet:

/etc/init.d/ejabberd restart

Anschliessend habe ich für die neue Domain noch den Admin-Benutzer angelegt:

ejabberdctl register gnude gnude.feste-ip.net kennwort

Anschliessend kann ich mich mit dem entsprechenden Chat-Programm an dem Server anmelden. Man kann nun Benutzer sowohl für die \\Adresse gnude.no-ip.biz also auch gnude.feste-ip.net anlegen.


Wichtig ist noch ein TLS Zertifikat einzubinden

Damit mein Jabber-Server auch mit allen anderen Jabber-Server die Daten
austauscht, benötige ich für manche andere Server ein TLS Zertifikat.
Der Dienst “letsencrypt” hat sich hier angeboten und ich habe mal kurz
zusammengefasst was ich für die Zertifikaterstellung gemacht habe.
Der Server läuft auf Ubuntu 14.04 und als Jabber Server nutze ich ejabberd.

Ich wechsel in das richtige Verzeichnis
cd /usr/local/sbin/

Nun lade ich den Certbot herunter
wget https://dl.eff.org/certbot-auto

und mache die Datei ausführbar
chmod a+x /usr/local/sbin/certbot-auto

Hier beziehe ich das Zertifikat, ohne es in Apache einzubinden certbot-auto –apache -d gnude.feste-ip.net certonly


Nun befinden sich die Dateien im Verzeichnis /etc/letsencrypt/live/gnude.feste-ip.net/

Ich wechsel in das Verzeichnis in dem sich das Zertifikat befindet
cd /etc/letsencrypt/live/gnude.feste-ip.net

Und kopiere diese beiden Dateien zur benötigten Datei zusammen. cat privkey.pem cert.pem > /etc/ejabberd/ejabberd.pem

Es ist wichtig zu beachten, das man im Router bzw. Fireball den Port 443 freigeben muss.
Bei Problemen mit der Datenübernahme ist folgendes zu beachten:
Export nur ins TMP Verzeichnis. Oder per Hand alle ejabberd Verzeichnisse,
auch in /var/lib und /usr/lib kopieren.
Zugriffsrechte für die PID File setzten und ein Fehler ist gern die Cookie
Datei im Verzeichnis /var/lib/ejabberd hier ist die Versteckte Datei .erlang.cookie
gern mal schuld.

This page may have a more recent version on pmwiki.org: PmWiki:JabberServer, and a talk page: PmWiki:JabberServer-Talk.