Inhaltsverzeichnis
ejabberd mit mehreren Domains
Voraussetzung
- Dieses Howto ist eine Ergänzung zu ejabberd Installation.
- Dieses Howto setzt Wechsel von mnesia zu MariaDB voraus.
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