The log file in /var/log/ejabberd/ejabberd.log should give you valuable information on the startup of Ejabberd. If you experience any problems that you cannot solve yourself, consider checking out the official Ejabberd (XMPP) chat room at: ejab...@conference.process-one.net.
Being the most popular instant messaging service in the world with over 2 billion active monthly users in over 100 countries is an enormous magnitude of operations. To support such a scale, WhatsApp uses XMPP (a heavily modified version, to be more precise) on the ejabberd server (which is also heavily modified to improve and optimize performance).
Trans.eu is one of the largest logistics platforms in Europe and has been our client for more than 20 years now. Considering the magnitude of our cooperation, we had a chance to develop their large-scale enterprise communication system, also powered by ejabberd, amongst a number of other services.
The ejabberd server, which implements the XMPP protocol, proved to also be a perfect base for the Trans.eu messaging backend. The server is fast, scales perfectly and allows us to expand its functionalities without interfering with the server code.
During our work on the server, we subjected the ejabberd functionality to considerable modifications and added new functions to enable the fulfilment of specific business needs. We have implemented such functionalities like:
Can you imagine a multiplayer game with a laggy chat system? No, thank you. Especially a MOBA-type game. Riot Games started with an ejabberd server as a foundation and built on top of it, customizing and extending its functionalities.
According to this series of articles Riot published on their dev blog, a set of XMPP alternatives were also looked into at a time of their preliminary research for a technology that would power their communications, although none seem to outperform ejabberd in the following six areas:
As you can see from the examples above, XMPP and ejabberd are great at handling communication at an incredibly large scale. But, to achieve sufficient performance and fit a specific use case, customization is required.
Considering our extensive experience with developing custom ejabberd servers and XMPP-based communicated services, we are happy to help you optimize your own ejabberd-powered solution or develop a new one from scratch.
In April last year I setup the kaidan.im XMPP server with ejabberd. As you would expect I did that completely manually, so first running apt get install ejabberd, then editing the config file and so on. I read the ejabberd documentation in detail to enable all useful features and to get the nearly perfect server config. I also imported the database from a friend of mine, who hosted his server (jbb.ddns.net) on a Raspberry Pi before.
Hey guys.
I have a general ejabberd question to which I am unable to find an answer. When I installed it on my (mac osx) development environment, and get everything configured, it runs well. I can log into the dev site with DXMPP running, using two different clients, and chat back and forth. Very happy!
Anyone have any idea why? I've managed to find out that it's possible to reduce this number, but I don't even know why it's doing it in the first place. When I installed the schema found at -one.net/ejabberd/mainline/blobs/raw/HEAD/src/odbc/my..., it looks right but no data populates...
Ejabberd zählt zu den weitverbreitesten XMPP-Servern. Die Software steht unter der GPL, eine Lizenz für freie Software und baut auf der Programmiersprache Erlang auf. Unter anderem ist ejabberd für Windows, macOS, BSD-Derivate und GNU/Linux verfügbar.
Aufgrund seiner Zuverlässigkeit, Skalierbarkeit und Stabilität eignet sich ejabberd sowohl für den privaten Bereich als auch für das professionelle Umfeld. Unter anderem setzen mailbox.org oder die Piratenpartei auf ejabberd.
Für die Installation und den Betrieb einer Server-Software ist eine ausführliche und vollständige Dokumentation äußerst hilfreich. Die Dokumentation von ejabberd ist in Ordnung, allerdings könnte insbesondere die Beschreibung der Modul-Konfiguration etwas ausführlicher ausfallen. Insgesamt vermisse ich eine Art Best practice oder Beispielkonfiguration, die einen sicheren und datenschutzfreundlichen Betrieb ermöglicht. Der vorliegende Beitrag versucht diese Lücke zu schließen.
Der dauerhafte Betrieb eines XMPP-Servers auf Basis von ejabberd erfordert ein hohes Maß an Verantwortung vom Betreiber. Grundlegende Kenntnisse in der Härtung eines Server-Systems sowie Notfall- bzw. Backupstrategien sollten zu eurem Repertoire gehören, bevor ihr es in Erwägung zieht, einen ejabberd-Server in den Föderationsverbund zu integrieren.
Die vorliegende Konfiguration dient als Beispiel, der euch den Einstieg in den sicheren und datenschutzfreundlichen Betrieb eines ejabberd-Servers erleichtern soll. Folgende Besonderheiten gelten für diese Konfiguration:
Für den Praxisbetrieb nutzen wir RSA-basierte Zertifikate. Aktuell unterstützt ejabberd den Parallelbetrieb von RSA- und ECDSA-Zertifikaten leider noch nicht. Wir beantragen alle Domains bzw. Subdomains in einem Rutsch:
Das Log-Level legt die Ausführlichkeit fest, mit dem ejabberd Protokolldateien erzeugt. Wird der Parameter loglevel auf einen Wert von 3 eingestellt, werden nur Fehler und Warnungen in die Log-Datei geschrieben. Anmeldevorgänge von Clients oder das Versenden von Nachrichten werden nicht erfasst.
Um mit der Außenwelt zu kommunizieren bietet euer ejabberd-Server diverse Dienste bzw. Ports an, über die sich Clients als auch (XMPP-)Server verbinden und kommunizieren. Wir ergänzen die Standardkonfiguration um weitere Ports, die anschließend einen direkten Verbindungsaufbau via TLS (sozusagen TLS-on-Connect) ermöglichen, ohne zuvor den Umweg über STARTTLS nehmen zu müssen.
Der Port 5222 dient in der XMPP-Welt als Standard für Clients, die sich mit einem XMPP-Server verbinden möchten. Möchte sich ein Client mit unserem ejabberd-Server verbinden setzen wir STARTTLS voraus.
Das Modul mod_http_api erlaubt die Steuerung bzw. Administration von ejabberd via HTTP-Befehle. Aus Sicherheitsgründen deaktivieren wir dieses Modul. Unser ejabberd-Server lässt sich ausschließlich über die Kommandozeile via ejabberdctl administrieren.
Der Erlang Port Mapper Daemon (epmd) ist ein Nameserver, den ejabberd benötigt, um ejabberdctl zu verwenden und kommt ebenfalls beim Clustering von mehreren ejabberd-Servern zum Einsatz. Da wir allerdings kein Cluster betreiben, sollte der epmd aus Sicherheitsgründen nur auf der lokalen Netzwerkschnittstelle lauschen und seine Dienste nicht der Außenwelt anbieten. Dazu legen wir einen Systemd-Socket an:
Persönlich nutze ich ausschließlich MariaDB-Datenbanken. Die Datenbankanbindung ist allerdings reine Geschmackssache. Die Installation und der Betrieb einer MySQL- / MariaDB-Datenbank im Zusammenspiel mit ejabberd ist im Beitrag Using ejabberd with MySQL beschrieben.
In einer Datenschutzerklärung solltet ihr eure Nutzer transparent und verständlich darüber informieren, welche Daten gesammelt und für den ejabberd-Betrieb verarbeitet werden. Darüber hinaus kann es sinnvoll sein aufzuzeigen, welche technischen und organisatorischen Maßnahmen ihr ergriffen habt, um die Sicherheit und Privatsphäre eurer Nutzer zu schützen.
Mit dem vorliegenden Beitrag wollte ich meinen Anteil zu XMPP beisteuern, der es engagierten ejabberd-Administratoren gestattet, ihre bestehende Konfiguration um sicherheits- und datenschutzrelevante Parameter zu ergänzen. Die vorstehende Konfiguration kann natürlich auch als Basis für neue ejabberd-Server dienen, mit dem Ziel, das XMPP-Netzwerk weiter zu vergrößern.
Ist das regelmäßige Löschen von alten Nachrichten notwendig wenn diese bereits in der Konfiguration begrenzt werden? Würden ältere Nachrichten nicht schon von ejabberd gelöscht wenn die Zahl der offline Messages überschritten wird?
760c119bf3