Am 30.09.2015 war jabber.ccc.de für 2 Tage nicht verfügbar. Das hat mich motiviert endlich einen eigenen jabber-Server zu betreiben.

Hinter Jabber steckt das offene Protokoll XMPP, welches dem XML Standard folgt und für Instant Messaging (Chats) genutzt wird. Ich habe mich für Prosody als Jabber-Server entschieden. Für Prosody sprechen, aus meiner Sicht, seine einefache Konfiguration sowie seine Schlankheit. Eine Alternatibe ist ejabberd.

Installation

Damit man Prosody installieren kann, sollte man das Repository der Entwickler einbinden. Ich nehme auch bei jessie als Distribution whezzy, weil TLS mit mit den jessie Paketen nicht funktioniert.

# zu root werden bzw. sudo vor echo und tee schreiben
echo deb http://packages.prosody.im/debian wheezy main | tee -a /etc/apt/sources.list.d/prosody.list
wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

Nun kann man Prosody installieren

apt-get update && apt-get install prosody lua-sec-prosody
Das Paket lua-sec-prosody wird für TLS benötigt. Wenn man die aktuellste Version installieren möchte, dann muss man das prosody-0.10 statt prosody installieren. Ich habe bis jetzt keine Probleme mit den nighly Builds gehabt.

Konfiguration

Die Konfiguration wird in /etc/prosody/prosody.cfg.lua erledigt. Als erstes In der Zeile admins = { "admin@jabber.0rpheus.net" } kann gleich ein entsprechender Admin eingetragen werden. Um zusätzliche User anzulegen gibt es zwei Möglichkeiten. Entweder direkt über einen Jabber Client oder auf Zuruf durch einen Administrator. Ersteres würde bedeuteten, dass sich jeder, der den Server kennt, registrieren kann. Dazu muss die Zeile allow_registration = false; auf allow_registration = true; geändert werden. Einen Nutzer legt so an:

prosodyctl adduser foo@jabber.0rpheus.net

Als nächstes wird die Domain konfiguriert.

VirtualHost "jabber.0rpheus.net"
        enabled = true

        -- Assign this host a certificate for TLS, otherwise it would use the one
        -- set in the global section (if any).
        -- Note that old-style SSL on port 5223 only supports one certificate, and will always
        -- use the global one.
        ssl = {
                ciphers     = "AES256+EECDH:AES256+EDH:AES128+EECDH:AES128+EDH";
                key         = "/etc/prosody/certs/jabber.0rpheus.net.key";
                certificate = "/etc/prosody/certs/jabber.0rpheus.net.crt";
                dhparam     = "/etc/prosody/certs/dh-4096.pem";
                protocol    = "tlsv1_2";
        }

Die globalen SSL Einstellungen können entweder entfernt oder ebenfalls mit denselben Werten nochmal befüllt werden.

Per Default speichert Prosody die Passwörter im Klartext ab, um mit alten Clients kompatibel zu sein. Wer das nicht möchte bzw. nicht braucht, kann die Passwörter gehashed abspeichern. Dazu muss eine zusätzliche Zeile hinzugefügt werden.

authentication = "internal_hashed"

Um die Änderungen zu aktivieren, muss der Prosody Dienst einmal durchgestartet werden.

systemctl restart prosody

Folgende Portfreischaltungen werden für einen reibungslosen Betrieb noch benötigt.

  • Port 5222 eingehend (Clientverbindungen)
  • Port 5280 eingehend (Clientverbindungen) (http-bind)
  • Port 5281 eingehend (Clientverbindungen) (https-bind)
  • Port 5269 ein- und ausgehend Verbindung zu fremden Servern