Dies ist die archivierte Version des Blogs vom 05.01.2017. Aktuelle Beiträge findest du unter thomas-leister.de
 

Kürzlich ist mir mein Ejabberd Jabber Server abgeraucht und wollte sich nicht mehr zum Funktionieren überreden lassen. Weil ich in der Vergangenheit schon öfter Probleme mit Ejabberd hatte, habe ich mich nach einer Alternative umgesehen. Da wäre noch OpenFire gewesen, das ich schon einmal ausprobiert  habe. Das kam aber nicht mit Ipv6 Adressen zurecht und braucht Java. Bin nicht so der Fan davon… also weitergesucht.

Schließlich bin ich auf Prosody gestoßen, von dem es heißt, er sein ein moderner, einfacher Jabber Server und leicht zu installieren. Da habe ich gleich zugegriffen und mir das System mal genauer angeschaut. Tatsächlich ist die Basiskonfiguration nicht besonders kompliziert…

Update: Inzwischen gibt es eine aktualisierte Anleitung zur Installation und Konfiguration von Prosody: https://legacy.thomas-leister.de/prosody-xmpp-server-auf-ubuntu-server-installieren/

Zur Installation und Konfiguration benötigen wir Rootrechte:

sudo -s
apt-get update && apt-get install prosody

… installiert Prosody und alle benötigten Lua-Pakete. Wer Prosody in Kombination mit einer MySQL Datenbank nutzen will, muss außerdem folgendes Paket installieren:

apt-get install lua-dbi-mysql

Die Prosody Konfiguration befindet sich unter /etc/prosody/prosody.cfg.lua
Von der bereits vorhandenen Beispielkonfiguration machen wir ein Backup:

cd /etc/prosody/
cp prosody.cfg.lua prosody.cfg.lua.bak

und leeren die Konfigurationsdatei, damit wir unsere eigene Konfiguration in die Datei schreiben können:

>prosody.cfg.lua
nano prosody.cfg.lua

Übernehmt folgende Konfiguration:

pidfile = "prosody.pid"

-- Benutzerkonto mit Administratorrechten
admins = {"benutzer@meinserver.de"}

-- Datenbankverbindung (Wenn keine MySQL Datenbank genutzt werden soll, die folgenden Zeilen einfach weglassen)
storage = "sql"
sql = {
driver = "MySQL";
database = "prosody";
host = "localhost";
username = "prosody";
password = "prosody_passwort";
}

-- Passwörter gehashed abspeichern
authentication = "internal_hashed"

-- Aktivierte Module
modules_enabled = {
-- Generally required
"roster";
"saslauth";
"tls";
"dialback";
"disco";

-- Not essential, but recommended
"private";
"vcard";
"offline";
"admin_adhoc";

-- Nice to have
"legacyauth";
"version";
"uptime";
"time";
"ping";
"register";
"posix"; -- Lässt Prosody im Hintergrund laufen
};

-- SSL Konfiguration
http_ports = { 5280 }
http_interfaces = { "*" }

https_ports = { 5281 }
https_interfaces = { "*" }

https_ssl = {
certificate = "/etc/myssl/prosody/prosody.crt";
key = "/etc/myssl/prosody/prosody.key";
}

-- Konferenzserver
disco_items = {
{ "conference.meinedomain.de", "MUC" };
}

-- Benutzer können sich selbst registrieren (Auf "false" setzen, wenn das nicht erlaubt sein soll)
allow_registration = true;

-- SSL Keyfile und Zertifikat, falls SSL verwendet werden soll. Wenn nicht, diese Zeilen einfach entfernen
ssl = {
key = "/etc/myssl/prosody/prosody.key";
certificate = "/etc/myssl/prosody/prosody.crt";
}

-- Verbindungen zu locahlost und meinedomain.de erlauben
VirtualHost "localhost"
VirtualHost "meinedomain.de"

-- Chatrooms aktivieren
Component "conference.meinedomain.de" "muc"
name = "Chatrooms"
restrict_room_creation = false

Der Domainnamen, die MySQL Zugriffsdaten und der Admin-Benutzername sowie die Pfade zu den SSL Zertifikaten und dem dazugehörigen Key müssen an die eigene Umgebung angepasst werden. Wie ihr euch SSL Zertifikate erstellen könnt, könnt ihr hier nachlesen: Eigene CA erstellen und SSL Zertifikate ausstellen
Alternativ kann Prosody auch selbst passende Zertifikate erstellen. Achtet darauf, dass die Rechte für die Zertifikatdateien so gesetzt sind, dass der Nutzer Prosody darauf zugreifen kann, sonst verweigert Prosody den Start (siehe auch verlinkte Dokumentation):

chmod 600 /path/to/certificate.key
chown prosody:prosody /path/to/certificate.key

Die Beispielkonfiguration geht davon aus, dass bereits eine MySQL Datenbank aufgesetzt und ein Prosody Nutzer eingerichtet ist, der entsprechenden Zugriff auf die Datenbank hat. Falls kein MySQL, sondern die interne Datenbank genutzt werden soll, können die entsprechenden Zeilen  – wie in der Konfiguration schon angemerkt – einfach entfernt werden.

Prosody kann jetzt über den prosodyctl Befehl gesteuert werden:

prosodyctl start
prosodyctl restart
prosodyctl stop

sind die wichtigsten Kommandos zum steuern von Prosody.

Neue Benutzer können direkt über Jabber-Clients oder folgendes Kommando erstellt werden:

prosodyctl adduser benutzer@meinedomain.de

Post published on 12. August 2013 | Last updated on 21. April 2016
Tags:           

Diesen Blog unterstützen

Wenn Dir der Beitrag gefallen hat, freue ich mich über einen kleinen Obolus :-) Bitcoin QR Code

PayPal-Seite: https://www.paypal.me/ThomasLeister
Meine Bitcoin-Adresse: 15z8 QkNi dHsx q9WW d8nx W9XU hsdf Qe5B 4s

Siehe auch: Unterstützung

Informationen zum Autor

Thomas Leister

Geb. 1995, Kurzhaar-Metaller, Geek und Blogger. Nutzt seit Anfang 2013 ausschließlich Linux auf Desktop und Servern. Student der Automobilinformatik an der Hochschule für angewandte Wissenschaften in Landshut.

18 thoughts on “Jabber / XMPP Server mit Prosody + MySQL unter Ubuntu 13.04

  • Lohnt es sich heutzutage überhaupt noch einen Jabber-Server aufzusetzen? Es gibt doch eigentlich schon genug frei verfügbare im Internet.

    Die Anleitung funktioniert – wenn ich das richtig sehe – auch unter Linux Mint und Debian?

    • Richtig, es gibt mittlerweile schon sehr viele frei zugängliche Jabber Server. Wenn man aber eh schon einen Server rumstehen hat, lohnt sich das Aufsetzen eines eigenen Servers auf alle Fälle. Das bietet nochmal ein Plus an Sicherheit und man weiß genau, wo die eigenen Daten lagern. Die vertrauenswürdigste Person ist man immer selbst ;)

      Die Anleitung sollte auch unter Debian und Mint so funktionieren. Ubuntu basiert auf Debian und Mint hat einen Ubuntu-Unterbau. Sind also alle miteinander verwandt.

  • Unter Debian sollte es genau so klappen, linux Mind weiß ich nicht.

    Gerade heut zutage lohn es sich seine eigenen Server zu betreiben, wenn man alles richtig macht wirft man der Überwachung zumindest Steine in den Weg. Zudem macht es kein unterschied auf welchem Jabber-Server man sich anmeldet, da es wie bei Email eine Server-Server kommunikation möglich ist.

  • noch eine Anmerkung. Da Ubuntu Server meist mit den LTS Versionen laufen:
    lua-dbi-mysql wird unter Ubuntu 12.04 nicht gefunden. Wenn man aber https://launchpad.net/~prosody-dev/+archive/ppa der sources.list (/etc/apt) hinzufügt, ist alles wieder im Lot.

  • Moin,
    ich komme von ejabberd und wollte auf Prosody, aber irgendwie läuft das nicht. Beim Starten kommt immer der Fehler:
    certmanager error SSL/TLS: Failed to load ‚/etc/ssl/private/server.key‘: Check that the permissions allow Prosody to read this file. (for *)

    Wenn ich wie bei http://prosody.im/doc/certificates beschrieben mit „sudo -u prosody cat /etc/ssl/private/server.key“ die Zugriffsrechte teste, wird der Schlüssel aber ausgegeben, es sollte also eigentlich alles passen.

    Zudem kommen errors, dass Prosody keine Ports binden kann, da sie angeblich bestzt wären, was aber nicht stimmt. Zumindest konnte ich mit „netstat -tuapen“ die fraglichen Ports nicht sehen. Ich vermute das hängt mit dem Zertifikat-Problem zusammen?

    Jemand ne Idee?

  • Hallo, sehr schöne Anleitung erstmal.
    Ich habe prosody auf einem Ubuntu 14.04. VPS (ohne die MySQL-DB) installiert. Es läuft auch gut, nur bekomme ich beim Verbinden über einen Client (in diesem Falle Pidgin) die Meldung „Sie fordern Verschlüsselung, aber diese ist auf diesem Server nicht verfügbar.“.
    In Pidgin ist unter „Erweitert“ die Einstellung „Verschlüsselung fordern“ ausgewählt. Wähle ich „Verschlüsselung benutzen, wenn verfügbar“ aus, funktioniert das Ganze mit Pidgin.
    Ein Zertifikat habe ich mittels der prosody-Funktion erstellen lassen.

    Kannst du dabei helfen?

    • Offenbar kann ja Pidgin nur verbinden, wenn keine Verschlüsselte Verbindung erzwungen wird. Das bedeutet: Es kann keine verschlüsselte Verbindung hergestellt werden. Könnte evtl daran liegen, dass dein Prosody Zertifikat selbst erstellt ist (bzw selbst signiert ist). In so einem Fall sollte Pidgin aber nachfragen, ob für das Zertifikat eine Ausnahme gemacht werden soll…

      LG Thomas

    • Du muss dein Zertifikat in Pidgin einladen: Werkzeuge –> Zertifikate –> crt Datei einladen… Ich musste aber erst den Pidgin-Account löschen und nach dem einladen des Zertifikates neu erstellen

      • Ja, die Methode von Marc hat soweit funktioniert. Ich musste auch nochmal Account bei Pidgin neu erstellen. Eine Verbindung mit „Verschlüsselung fordern“ wird hergestellt.
        Danke euch. :D

  • Hallöchen!

    Hast du schon bekanntschafft mit dem Prosody Migrator gemacht? Suche schon etwas lange nach einer Möglichkeit meinen eJabberd Server zu Prosody umzuziehen, jedoch von eJabberd SQL zu Prosody SQL.
    Die Dokumentation diesbezüglich ist leider ja auch nur Prosody -> Prosody SQL =/.

  • Hallo Thomas,

    kannst du noch einmal auf die Sicherheitskonfiguration in Prosody eingehen? Eventuell auch ein eigener Artikel?

    Danke!

  • Moin, hast du nicht Lust, die Anleitung zu aktualisieren? Sie ist bei allen möglichen Suchmaschinen ganz gut geranked (zb. mit „prosody installieren“).
    Z.B. wie man das mMn essentielle http_upload-Modul für Bilder/Dateien im Gruppenchat aktiviert. Dafür muss man nämlich erst die Module runterladen (https://prosody.im/doc/installing_modules) mit Mercurial, wobei man den DL-Pfad in der Config angeben muss. In der Config muss man „http“; und „http_upload“; eintragen, und auch das Limit festlegen, sonst sind nur 1mb Dateien möglich. Weißt du sicher alles, weil du das Modul ja benutzt. ;)
    Die Definitionen deiner Config was das Http-Modul betrift sind mMn unnötig, da es die defaults sind. Die http_ssl Anweisung ist ebenso unnötig, da bei nicht-Spezifizierung die globale SSL-Definition genommen wird.
    Letsencrypt und Prosody ist mir ein Mysterium, das habe ich nicht geschafft (wie schon in einem anderen Artikel angemerkt).
    So, das sind einige meiner Erfahrungen mit Prosody, das ich endlich mal ernsthaft aufgesetzt habe. Ist bei dir Prosody mit aktiviertem compression-Modul eigentlich auch so langsam? Benutzt du das smacks-Modul? Hört sich eigentlich gut an: https://modules.prosody.im/mod_smacks.html Ich habe es mal aktiviert.
    Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.