Ubuntu 12.04 + ejabberd 13.10 mit MySQL
Heute gehts mal darum einer XMPP Server auf Ubuntu aufzusetzen. Die Wahl viel bei mir auf ejabberd, warum kann ich eigentlich gar nicht sagen. Hintergrund der Geschichte ist eigentlich, daß ich XMPP als Chat auf einer Angel Seite die auf Joomla basiert anbieten möchte. Damit ich die Joomla User mit den Usern von ejabberd einfach syncen kann, muss ejabberd mit MySQL unterstützung laufen.
Zuerst hab ich probiert die aktuelle Version aus den Ubuntu Repos zu benutzen. Das scheiterte leider daran, daß diese Version nativ kein MySQL unterstützt und der entsprechende Erlang Treiber nicht aufzufinden war. Irgendwo bin ich dann darüber gestolpert das die aktuellste Version von ejabberd den Treiber mitbringt. Leider hat die aktuellste Version 13.12 aber einen Bug und läd beim Compilieren das entsprechende Modul nicht nach, deswegen benutze ich die Vorgängerversion 13.10.
Installation
Ich gehe hier mal davon aus das der MySQL Server schon installiert ist und überspringe diesen Teil. Fangen wir am besten einfach mal damit an die nötigen Abhängigkeiten zu installieren und da fangen wir mit Erlang an. Ubuntu 12.04 hat leider nicht die richtigen Versionen im Angebot, deswegen adden wir zuerst das Erlang Repo.
deb http://packages.erlang-solutions.com/debian precise contrib # diese Zeile in die sources.list hinzufügen nano /etc/apt/sources.list cd /tmp wget http://packages.erlang-solutions.com/debian/erlang_solutions.asc apt-key add erlang_solutions.asc apt-get update apt-get install erlang
Danach installieren wir alle weiteren Pakte die wir benötigen
apt-get install libyaml-dev build-essential
 Jetzt holen wir uns ejabberd 13.10 von der Entwicklerseite
wget http://www.process-one.net/downloads/ejabberd/13.10/ejabberd-13.10.tgz tar -xf ejabberd-13.10.tgz cd ejabberd-13.10 # compilieren ./configure --enable-odbc --enable-mysql && make make install
Sollte die Installation ohne Probleme durchgelaufen sein, starten wir einen ersten Testlauf. Ansonsten die noch fehlenden Abhängigkeiten nachinstallieren.
ejabberdctl debug
Gibts unter Umständen Fehlermeldungen wegen nicht gefundener Pakete kann folgendes Hilfreich sein
./rebar get-deps make make install
Startet ejabberd ohne Fehler ist es an der Zeit die config anzupassen. Zuerst legen wir aber die nötigen Tabellen in der Datenbank an. Da ich ja später mit Joomla darauf zugreifen möchte mach ich das in der gleichen Datenbank, ansonsten gibts halt eine eigene dafür. Das SQL Script findet man unter /tmp/ejabberd-13.10/sql/mysql.sql
Ist das geschehen gehts an die config die unter /etc/ejabberd/ejabberd.yml liegt. Und hier ist auch der Unterschied zu Versionen der 2er Reihe, es ist jetzt ein YAML File.
hosts: - "your-domain.com" ## auskommentieren ## auth_method: internal ## einkommendieren auth_method: odbc ## ## MySQL server: ## odbc_type: mysql odbc_server: "host" odbc_database: "database" odbc_username: "dbuser" odbc_password: "dbpassword" ## ## If you want to specify the port: ## odbc_port: 1234
Damit sollte die Verbindung zu MySQL stehen. Um das zu testen starten wir ejabberd im live Modus und legen unseren ersten Benutzer an.
ejabberdctl live # es erscheinen einige Meldungen und dann ist man auf der Konsole von ejabberd register username your-domain.com password
 Obs geklappt hat sieht man, wenn man in der users Tabelle in der DB nachschaut. Es sollte jetzt ein Eintrag für diesen User existieren. Damit ist man eigentlich durch und kann ejabberd normal starten.
ejabberd start
Um alles zu testen kann man mit einem XMPP Client mal auf seinen Server connecten, das sollte eigentlich ohne Probleme funktioneren. Lediglich das nicht vertrauenswürdige Standard SSL Zertifikat muss man noch abnicken. In den Grundeinstellungen ist das öffentliche Registrieren deaktivert. Für mich ich das ok, da ich nur User meiner Community zulassen möchte, man kann es aber in der config jederzeit aktivieren. Dazu müssen zwei Stellen angepasst werden.
port: 5280 module: ejabberd_http ## request_handlers: ## "/pub/archive": mod_http_fileserver web_admin: true http_poll: true http_bind: true register: true captcha: true ## ip_access: trusted_network
Es gibt noch einiges mehr was man einstellen kann, wie zum Beispiel verschieden Admin User, die Sprache oder die Willkommensnachricht. Die config Datei ist gut dokumentiert und leicht zu verstehen. Einfach alles mal in Ruhe durchlesen, dann findet man schon die richtigen Stellen. Das einzige was mich im Moment noch stört ist, daß das Passwort in Plain Text in die DB gespeichert wird. Das muss ich mir nochmal anschauen.
DNS Einstellungen
Da mit das mit den Clients auch vernünftig funktioniert brauchen wir noch ein paar DNS Einträge.
yourchoice IN A ip.of.your.server _jabber._tcp IN SRV 5 0 5269 yourchoice.your-domain.com _xmpp-client._tcp IN SRV 5 0 5222 yourchoice.your-domain.com _xmpp-server._tcp IN SRV 5 0 5269 yourchoice.your-domain.com
Â
Wie gehts jetzt weiter?
Das Joomla Plugin das mir die User synct hab ich schon fertig, ich werde jetzt mit einer Komponente anfangen die mir auf der Seite das chatten ermöglicht, damit meine User keinen extra Client installieren müssen. Sobald ich damti fertig bin gibts den Code und alles weitere auf dieser Seite.
Â
Zugriffe: 15778