Eigener Jabber-Server

Ein eigener Jabber-Server. Das wollte ich schon seit Jahren. Doch irgendwie bin ich nie dazu gekommen. Eigentlich ist es ganz einfach einen eigenen Server aufzusetzen, man muss nur wissen, wie.

Einführung

Warum eigentlich Jabber?

Man kann ja auch ICQ, AIM, Facebook-Chat, Google-Talk oder die Dienste der 1&1 Mail & Media GmbH (Web.de, GMX,1&1) nutzen. Aber: willst du deine mehr oder weniger wichtigen Chats über irgendwelchen Dubiosen Firmen aus Russland (ICQ), USA (AIM, FB, Google) oder Deutschland (der Rest) laufen lassen. Wer garantiert dir, dass da niemand mitliest? Und warum muss ICQ & Co solche blöden AGB’s haben. Die wollen auch Geld verdienen – und womit? Mit deinen Daten.

Außerdem: Google, Facebook und 1&1 nutzen auch XMPP (Das Protokoll hinter Jabber). Für Facebook brauchst du dafür einen Nutzernamen und ich weiß nicht, ob man da auch nach „draußen“ Kommunizieren kann.

XMPP ist ein freies Protokoll, welches dir ermöglicht, Kontrolle über deine Daten zu behalten. Außerdem kannst du über XMPP auch mit Google-Talk und den 1&1-Webchats kommunizieren.

Wozu einen eigenen Jabber-Server?

Es gibt so viele kostenlose Jabber-Server im Netz, warum sollte ich mir einen eigenen zulegen?

Der Gedanke hinter Jabber war, ein dezentrales Netz aufzubauen, wo sich jeder mit jedem über alles Unterhalten kann. Deshalb ist es die Philosophie hinter Jabber, dass jeder seinen eigenen Server hat.

Außerdem ist es doch einfach cooler eine eigene Adresse zu haben 😉 Aber es gibt noch mindestens zwei Vorteile: 1. Ich hab alles in meiner Hand und 2. Nervt es mich, wenn irgendwelche Jabber-Server ständig abstürzen, und ich kann nichts machen. So ging es mir bei jabme.de und deshalb habe ich mich für meinen eigenen Server entschieden.

Einrichtung des Servers

Installation

Ich habe mir unterschiedliche Server angeschaut und habe mich im Endeffekt für Prosody entschieden, weil dort alles so funktioniert, wie ich es benötige und es einfach einzurichten ist.

Als erstes installierst du den Server. Am besten mit der Paketverwaltung deines Betriebssystems.

apt-get install prosody

Globale Einstellungen

Danach sind noch wenige Handgriffe zu tun. Die Globalen Einstellungen findest du meistens in /etc/prosody/prosody.lua.cfg.

Am besten du definierst dir gleich einen Admin-Account:

admins = {"admin@example.com" }

Weiter unten kannst du noch einige Module aktivieren oder deaktivieren. Das register-Modul solltest du auf jeden Fall aktiviert lassen, auch wenn du keine Registrierungen zulassen willst, denn so kannst du ganz einfach dein Passwort über deinen Client ändern.

Um Registrierungen zuzulassen ändere einfach folgende Zeile:

allow_registration = false;

Wenn du mit Google-Accounts chatten willst, musst du leider die Server–zu–Server Verschlüsselung ausschalten:

s2s_require_encryption = false

Es gibt auch noch veraltete Clients, die keine Verschlüsselung unterstützen, doch auf die solltest du verzichten. Wenn das nicht geht, musst du c2s_require_encryption auch auf false setzen.

Konfiguration für eine Domain

Das schöne an Prosody ist, dass du beliebig viele Domains auf einem Server betreiben kannst. Um eine neue Domain zu aktivieren, kopiere einfach /etc/prosody/conf.avail/example.com.cfg.lua nach /etc/prosody/conf.d/example.com.cfg.lua. Benenne die Datei am besten gleich mit um.

Folgende Zeilen solltest du anpassen:

VirtualHost "example.com"

Setze enabled auf true, oder kommentiere diese Zeile aus. Bennene die Zertifikatsdateien (key und certificate) um, wir werden später neue Zertifikate erstellen. Es ist sinnvoll für jede Domain ein eigenes SSL-Zertifikat zu haben.

Das war es eigentlich. Erstellen wir noch ein SSL-Schlüsselpaar:

 openssl req -new -x509 -days 365 -nodes -out "example.com.cert" -keyout "example.com.key"

Nun kann es losgehen. Nur noch schnell den Server neu starten:

/etc/init.d/prosody restart

Nutzer erstellen

Um einen neuen Nutzer zu erstellen, rufe einfach folgenden Befehl auf:

prosodyctl adduser foo@example.com

DNS-SRV Records setzen

Um mit Google-Accounts zu kommunizieren musst du noch deinen DNS-Record bei deinem Domain Anbieter erweitern:

_jabber._tcp.example.com.       IN SRV   0 0 5269   example.com.
_xmpp-server._tcp.example.com.  IN SRV   0 0 5269   example.com.
_xmpp-client._tcp.example.com.  IN SRV   0 0 5222   example.com.

Vergiss nicht den Punkt am Ende.

[UPDATE]Eventuell musst du deinen Domain-Anbieter bitten, diese Einträge zu setzen. Bei mir (united-domains), ist es leider nicht möglich, dies selbständig zu erledigen[/UPDATE]

Was noch zu beachten wäre

Leider speichert prosody die Passwörter als Klartext. Das wird damit gerechtfertigt, dass einige ältere Programme damit sonst nicht klarkommen. Ich finde das schade. Also wähle nicht unbedingt das stärkste, und vor allem nicht dein root-Passwort für den Server. Wenn jemand in den Server einbricht hat er sonst alles, was er braucht.

Sicherheit

Irgendwie kann man ja doch abgehört werden. Deshalb empfehle ich dir stets OTR zu nutzen. Das gibts sogar für Windows.

Quellen

Prosody: http://prosody.im/
DNS-SRV: http://www.kernel-error.de/kernel-error-blog/124-dns-konfigurieren-um-die-xmpp-information-zu-verteilen
OTR: http://www.cypherpunks.ca/otr/

2 Gedanken zu „Eigener Jabber-Server

  1. MattJ

    Great stuff!

    There is just one comment I wanted to make: although Prosody does not have hashed password storage enabled by default, it is quite easy to enable it. Simply set:

    authentication = „internal_hashed“

    Plaintext passwords will be automatically hashed when you next log in.

    Documentation for this can be found here: http://prosody.im/doc/modules/mod_auth_internal_hashed

    Hope this helps!

    (and apologies for my lack of German…)

  2. Stefan

    Wenn man eine neue Konfigurationsdatei in config.avail erstellt hat, muss man diese noch nach conf.d verlinken:

    ln -sf /etc/prosody/conf.avail/im.example.org.cfg.lua /etc/prosody/conf.d/im.example.org.cfg.lua

Kommentare sind geschlossen.