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…
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
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?
https://legacy.thomas-leister.de
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.
http://www.tuxlabor.de
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?
ich hab keine Idde warum, aber nach einer neuinstallation nach einem apt-get purge prosody funzt es.
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?
https://legacy.thomas-leister.de/ueber-mich-und-blog/
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
https://antribute.eu
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
Mit dem http_upload Modul bin ich auch gerade am schauen, es wird zwar von Clients erkannt, aber die Übertragung klappt nicht, leider ohne Fehlermeldung.
in /var/log/prosody/prosody.err steht nichts?
Bei mir funktioniert es (habe es aber bisher nur in einem Raum mit nur mir selbst als Teilnehmer getestet).
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Kontrolliere mal, ob das Modul noch aktuell ist. Vor ein paar Wochen gab es mal eine Änderung, sodass der Conversations-Client und das http_upload Modul nicht mehr zusammengearbeitet haben. (ggf auch Conversations-Version kontrollieren!). Zum Schluss lohnt sich vllt auch ein Blick auf die Dateiberechtigungen in /var/lib/prosody/http_upload … Prosody muss hier reinschreiben können.
LG Thomas
https://legacy.thomas-leister.de/ueber-mich-und-blog/
Hi Hans,
wie du schon gesehen hast, habe ich eine aktualisierte Version veröffentlicht. Compression nutze ich nicht – das sollte man in Kombination mit TLS vermeiden. Smacks habe ich aktiv.
LG Thomas
Danke, das mit TLS und compression wusste ich nicht.