Prosody - Lightweight Jabber/XMPP server

Status: Entwurf /!\

In diesem Wiki Artikel wird die Installation und Konfiguration des XMPP Server Prosody beschrieben. Beschrieben wird die Installation und Konfiguration auf Basis von stretch-backports.

Weitere Informationen zum Paket:

Installation

stretch-backports

aptitude -t stretch-backports install prosody prosody-modules

Konfiguration

Die Konfigurationsdateien sind in /etc/prosody/

Subdomains

Für die verschiedenen Dienste von XMPP werden in der Regel die folgenden Subdomains verwendet. Es folgt eine Übersicht von Subdomain, welche jedoch nicht zwinkend so benannte werden müssen.

domain.tld ist durch die eigene Domain zu ersetzen.

Konfiguration

Die Konfiguration aus dem Paket ist mit ein paar wenigen Anpassungen direkt nutzbar. Im folgendem Beispiel werden sehr viele Module und Optionen aufgelistet. Welche Module benötigt werden ist abhängig vom Einsatzgebiet. Es soll nur als Referenzbeispiel dienen.

-- Eine Liste der Accounts für die Server Administratoren
admins = { "admin@jabber.domain.tld" }

-- Liste der aktiven Module
modules_enabled = {
  "roster";
  "saslauth";
  "tls";
  "dialback";
  "disco";
  "private";
  "vcard";
  "version";
  "uptime";
  "time";
  "ping";
  "pep";
  "register";
  "mam";
  "carbons";
  "csi";
  "admin_adhoc";
  "posix";
  "watchregistrations";
  "vcard4";
  "smacks";
  "cloud_notify";
  "register_web";
  "http";
  "pep_vcard_avatar";
  "proxy65";
  "vcard_legacy";
  "blocklist";
  "server_contact_info";
};

contact_info = {
  abuse = { "mailto:webmaster@domain.tld" };
  admin = { "mailto:webmaster@domain.tld" };
};

-- Informationen wenn sich ein User auf dem Server registriert
registration_watchers = { "admin@jabber.domain.tld" }
registration_notification = "User $username just registered on $host from $ip"

modules_disabled = {
};

allow_registration = true;
daemonize = false;
pidfile = "/var/run/prosody/prosody.pid";

ssl = {
        key = "/etc/prosody/certs/localhost.key";
        certificate = "/etc/prosody/certs/localhost.crt";
}

c2s_require_encryption = true
s2s_secure_auth = true
authentication = "internal_hashed"

-- Logging

log = {
        info = "/var/log/prosody/prosody.log";
        error = "/var/log/prosody/prosody.err";
        { levels = { "error" }; to = "syslog";  };
}

legacy_ssl_ports = { 5223 }

http_paths = {
  register_web = "/register";
}

VirtualHost "jabber.domain.tld"
        enabled = true
        ssl = {
                key = "/etc/prosody/certs/localhost.key";
                certificate = "/etc/prosody/certs/localhost.crt";
        }

Component "conference.domain.tld" "muc"
modules_enabled = { "muc_mam", "vcard_muc" }

Component "uploads.domain.tld" "http_upload"

Component "pubsub.domain.tld" "pubsub"

Component "proxy.domain.tld" "proxy65"

Include "conf.d/*.cfg.lua"

SRV-Record

_xmpp-server._tcp.domain.tld. 150 IN    SRV 5 0 5269 jabber.domain.tld.
_xmpp-client._tcp.domain.tld. 150 IN    SRV 5 0 5222 jabber.domain.tld.
_xmpps-client._tcp.domain.tld. 113 IN   SRV 0 5 5223 jabber.domain.tld.

Der SRV-Record lässt sich mit folgenden Befehlen prüfen.

dig SRV _xmpp-server._tcp.domain.tld
dig SRV _xmpp-client._tcp.domain.tld
dig SRV _xmpps-client._tcp.domain.tld

FAQs

Muss XMPP auf jabber.domain.tld laufen?

Nein, man auch domain.tld oder xmpp.domain.tld nehmen. Die Konfigurationsdatei und die SRV-Records müssen angepasst werden.

Sonstiges

Literatur