Ubuntu 12.04 + ejabberd 13.10 mit MySQL

Kategorie: Blog Veröffentlicht: Dienstag, 08. April 2014 Drucken E-Mail

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.

 

über mich
Michael Pfister
Autor: Michael Pfister
Seit mehr als 12 Jahren Webentwickler mit Schwerpunkt PHP, Javascript und CSS Zur Zeit arbeite ich bei T-Systems Schweiz als System Engineer mit dem Schwerpunkt Automatisierung. Und nebenbei fahr ich noch Fahrrad;-)

Zugriffe: 6951
Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Weitere Informationen Ok