Inhaltsverzeichnis

ejabberd mit mehreren Domains

Voraussetzung

Einleitung

Die Howto-Serie geht immer davon aus, dass du nur eine Domain einrichten und verwenden möchtest. ejabberd bietet aber mehrere Möglichkeiten verschiedene Domains zu verwenden. Deine User:innen können dann wählen zwischen name@beispiel.de oder name@example.com.

Einrichtung

bei der Erstinstallation

Wenn du deinen XMPP-Server zum ersten mal einrichtest, kannst du direkt mehrere Domains berücksichtigen, auch wenn du zunächst nur eine Domain besitzt. Voraussetzung ist, dass du direkt mit MySQL arbeitest.

Ergänze den SQL Block:

sql_type: mysql     
sql_server: "localhost" 
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: "<geheim>"
auth_method: sql
default_db: sql
default_ram_db: sql

mit der Zeile:

sql_type: mysql     
sql_server: "localhost" 
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: "<geheim>"
auth_method: sql
default_db: sql
default_ram_db: sql
new_sql_schema: true

Die zusätzliche Domain fügst du dann zum hosts Block hinzu:

- hosts:
  - <beispiel.de>
  - <example.com>

im laufenden Betrieb

Wenn du später eine weitere Domain ergänzen möchtest, ist auch das möglich. Du kannst hierbei wählen, ob du jede Domain individuell konfigurierst, oder direkt auf das „neue“ SQL Schema wechselt. Letztere ist wohl die sinnvollere Variante, da eine dritte oder vierte Domain so sehr einfach hinzugefügt werden kann und auch die Wartung der Datenbank einfacher bleibt. Bei individueller Konfiguration hättest du für jede Domain eine eigene Datenbank.

ejabberd stoppen und neues Datenbankschema einspielen:

$ systemctl stop ejabberd.service
$ wget https://raw.githubusercontent.com/processone/ejabberd/master/sql/mysql.old-to-new.sql
$ mysql -D ejabberd -u ejabberd -p < mysql.old-to-new.MySQL
Enter password: <geheim>

Als ejabberd weiterarbeiten und die Konfiguration anpassen:

$ su - ejabberd
$ jed opt/ejabberd/conf/ejabber.yml

Ergänze den SQL Block:

sql_type: mysql     
sql_server: "localhost" 
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: "<geheim>"
auth_method: sql
default_db: sql
default_ram_db: sql

mit der Zeile:

sql_type: mysql     
sql_server: "localhost" 
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: "<geheim>"
auth_method: sql
default_db: sql
default_ram_db: sql
new_sql_schema: true

Die zusätzliche Domain fügst du dann zum hosts Block hinzu:

- hosts:
  - <beispiel.de>
  - <example.com>

Die Änderungen mit [STRG] + [x] und [STRG] + [s] speichern und den Editor mit [STRG] + [x] und [STRG] + [c] verlassen.

Den ejabberd Kontext verlassen und den XMPP-Server wieder starten:

$ exit
$ systemctl start ejabberd.service

jede Domain individuell

Da ich meinen Server jabjab.de schon länger betreibe, habe ich noch eine individuelle Konfiguration für jede Domain. Die Möglichkeit mehrere Domains mit nur einer Datenbank zu betreiben kam erst sehr viel später.

Der Vollständigkeit halber, möchte ich hier die Konfiguration auch einmal vorstellen:

hosts:
  - "<beispiel.de>"
  - "<example.com>"

host_config:
  "<beispiel.de>":
    sql_username: "<ejabberd_beispiel_de>"
    sql_type: mysql
    sql_server: "localhost"
    sql_port: 3306
    sql_password: "<geheim>"
    sql_database: "<ejabberd_beispiel_de>"
    auth_method:
      - sql
    auth_password_format: scram
    auth_scram_hash: sha512
  "<example.com>":
    sql_username: "<ejabberd_example_com>"
    sql_type: mysql
    sql_server: "localhost"
    sql_port: 3306
    sql_password: "<geheim>"
    sql_database: "<ejabberd_example_com>"
    auth_method:
      - sql
    auth_password_format: scram
    auth_scram_hash: sha512