1. Installation
Zunächst einmal muss ejabberd installiert werden.
sudo apt-get install ejabberd
Danach muss ejabberd konfiguriert werden.
sudo dpkg-reconfigure ejabberd
Bei diesem Schritt muss zunächst der Servername inklusive der Domain angegeben werden (z.B. jabber.pascalkrause.info oder pascalkrause.info). Danach wird eine Jabber-ID angelegt, welche administrative Rechte erhält. Jetzt sollte man ejabberd neustarten.
sudo /etc/init.d/ejabberd restart
2. Portfreigabe und SRV-Records
Folgende Ports müssen freigegeben werden:
- 5222 eingehend, für Client-Verbindungen unverschlüsselt oder TLS-verschlüsselt
- 5269 ein- und ausgehend, für Verbindungen zu anderen Servern
- 5280 eingehend, für Client-Verbindungen über HTTP-Polling (nützlich für Webapplikationen)
Zusätzlich zu der Freitschaltung der Ports müssen im DNS die SRV-Records eingetragen werden. Ein Beispiel dafür, wie diese Records aussehen könnten ist hier.
_jabber._tcp.pascalkrause.info. IN SRV 0 0 5269 pascalkrause.info.
_xmpp-server._tcp.pascalkrause.info. IN SRV 0 0 5269 pascalkrause.info.
_xmpp-client._tcp.pascalkrause.info. IN SRV 0 0 5222 pascalkrause.info.
Wenn der Hostname von der Adresse der JID abweichend ist, muss aufgrund eines Bugs in Debian Wheezy die ejabberd.cfg um folgende Zeile ergänzt werden.
{fqdn, "xmpp.pascalkrause.info"}.
3. ejabberd konfigurieren /etc/ejabberd/ejabberd.cfg
Wenn man nicht möchte, das sich fremde Leute am eignen Jabber-Server registrieren können, sollte die ejabberd.cfg
so aussehen.
% Every username can be registered via in-band registration:
%{access, register, [{allow, all}]}.
% None username can be registered via in-band registration:
{access, register, [{deny, all}]}.
Außerdem ist es z.B. möglich, die Admin-Oberfläche auf einen anderen Port zu legen und an ein bestimmtes Device zu binden. Um die Admin-Oberfläche von Port 5280 auf Port 5288 zu verschieben und an localhost zu binden, müsste man z.B. die Zeile
{5280, ejabberd_http, [http_poll, web_admin]}
in folgende Zeilen abändern:
{5280, ejabberd_http, [http_poll]},
{5288, ejabberd_http, [{ip, {127, 0, 0, 1}}, web_admin]}
4. Benutzer verwalten und sichern
Da ich eingestellt habe, dass sich niemand an meinem Jabber-Server anmelden kann, muss ich alle Accounts von Hand einrichten. Dies geht mit folgenden Befehlen:
#Benutzer hinzufügen
sudo ejabberdctl register Benutzername Servername Passwort
#Benutzer löschen
sudo ejabberdctl unregister Benutzername Servername
Um nicht jedesmal alle Benutzer erneut eingeben zu müssen, kann man diese auch Backupen. Dies geschieht mit den Befehlen
#Sicherung anlegen
sudo ejabberdctl backup pfadZurDatei
#Sicherung wiederherstellen
sudo ejabberdctl restore pfadZurDatei
Achtung! ejabberdctl
immer nur als root ausführen, sonnst kann es zu Problemen kommen.
5. ICQ-Transport mit Pyicqt einrichten
Auch hier muss zunächst einmal erst pyicqt installiert werden.
apt-get install pyicqt
Danach müssen in der Datei /etc/pyicqt.conf.xml
folgende Tags befüllt werden:
- <jid> z.B. mit icq.pascalkrause.info
- <mainServer> z.B. mit 127.0.0.1
- <mainServerJID> z.B. mit pascalkrause.info
- <port> z.B. mit 5555
- <secret> z.B. mit foobar
Der Port und das Secret müssen auch in der ejabberd.cfg
eingestellt werden. Dies könnte so aussehen:
{5555, ejabberd_service, [
{ip, {127, 0, 0, 1}},
{access, all},
{shaper_rule, fast},
{hosts, ["icq.pascalkrause.info", "sms.pascalkrause.info"],
[{password, "foobar"}]}
]},
Es ist gut möglich, dass dieser Eintrag bereits in eurer ejabberd.cfg
existiert. Dann muss er nur auskommentiert und angepasst werden.
Achtung: In Debian gibt es einen Bug, pyicqt hat keine Schreibrechte im Ordner /var/lib/pyicqt
diese müsst ihr per Hand setzen.