ich versuche nun seit einigen Tagen ejabberd (18.12.1-2) mit MariaDB (10.3.31) auf einem Debian 10 System zum Laufen zu bringen.
Vorher habe ich mir die Installation in einer VM angeschaut und es funktionierte dort mit der internen Datenbank auch erst nach einigen Anläufen. Auch hier Probleme (wie weiter unten aufgeführt), die ich so von anderer Software überhaupt nicht kenne: Z.B. prüft ejabberd zum Startanfang ob die DB dem "localhost" (Konfiguration in der Datei 'ejabberdctl.cfg') gehört, oder "jemand anderem". Das sind alles Stolpersteine, von denen ich nirgends gelesen habe (bis sie im Logbuch erschienen sind).
Leider ist die "Dokumentation"/Hilfe - falls man das so nennen kann - sowohl in /usr/share/doc/ejabberd, wie auch auf der Webseite einfach nicht wirklich zu gebrauchen (es sei denn, ich habe etwas übersehen).
Z.B. wird nirgends erklärt/erwähnt, dass in der Config-Datei (yml) die Einrückung (wie bei Python) eine Rolle spielt. Diese Art von Konfiguration ist mir total fremd und wird auch - meines Wissens - nirgends erklärt.
Auch scheint die Doku auf der ejabberd-Webseite ziemlich veraltet zu sein (zumindest was die Einbindung von MySQL/MariaDB angeht), denn die [Angaben zur] Konfiguration (inkl. der Optionen) auf der webseite stimmen mit den [z.T. - in der original 'mitgelieferten' KonfigDatei - auskommentierten] Optionen in meiner KonfigDatei nicht überein. Auch wird nicht erklärt an welcher Stelle diese Optionen einzufügen sind.
Ich kenne mich mit der Erlang-Programmiersprache überhaupt nicht aus, darum bin ich bei der Installation von ejabberd nach Anleitungen (hier und hier) vorgegangen.
Nichtsdestotrotz kann ich ejabberd nicht mit MariaDB auf meinem Server (mit offizieller Domain) zum Laufen bewegen.
- Die DB ist nach Anleitung erstellt und der entspr. Benutzer hat vollen Zugriff darauf (@localhost).
- Die Optionen, damit ejabberd mit MySQL/MariaDB zusammen arbeitet (das sind folgende: default_db: sql, db_type: mysql, sql_type: mysql, sql_server: "localhost", sql_database: "ejabberd", sql_username: "ejabberd", sql_password: "password", sql_port: 3306, auth_method: sql) habe ich versucht an unterschiedlichen Stellen in der KonfigDatei (yml) einzufügen.
Lediglich im Block "modules" wurde es anscheinend akzeptiert und das offensichtlich deshalb, weil sich ejabberd nicht mehr über unbekannte Optionen beschwert - trotz allem aber nicht starten will.
Wenn ich versuche ejabberd mittels 'service ejabberd start' zu starten, dauert es einige Minuten (ca. 2-3) und dann kommt die Systemd-Fehlermeldung: Job for ejabberd.service failed because the control process exited with error code.
See "systemctl status ejabberd.service" and "journalctl -xe" for details.
Im ejabberd.log steht:
Code: Alles auswählen
2021-12-18 14:31:11.381 [info] <0.64.0> SIGTERM received - shutting down
2021-12-18 14:31:11.382 [error] <0.207.0> External eimp process (pid=9723) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.382 [error] <0.215.0> External eimp process (pid=9727) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.213.0> External eimp process (pid=9726) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.209.0> External eimp process (pid=9724) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.211.0> External eimp process (pid=9725) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.217.0> External eimp process (pid=9728) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.221.0> External eimp process (pid=9730) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.219.0> External eimp process (pid=9729) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:18.888 [notice] <0.99.0>@lager_file_backend:152 Changed loghwm of /var/log/ejabberd/error.log to 100
2021-12-18 14:31:18.888 [notice] <0.99.0>@lager_file_backend:152 Changed loghwm of /var/log/ejabberd/ejabberd.log to 100
2021-12-18 14:31:18.989 [info] <0.82.0>@ejabberd_config:start:69 Loading configuration from /etc/ejabberd/ejabberd.yml
2021-12-18 14:31:19.006 [error] <0.81.0>@lists:map:1238 CRASH REPORT Process <0.81.0> with 0 neighbours exited with reason: no function clause matching lists:map(#Fun<gen_iq_handler.4.64585578>, <<"ejabberd">>) line 1238 in application_master:init/4 line 138
2021-12-18 14:31:19.007 [info] <0.43.0>@lists:map:1238 Application ejabberd exited with reason: no function clause matching lists:map(#Fun<gen_iq_handler.4.64585578>, <<"ejabberd">>) line 1238
2021-12-18 14:32:24.385 [info] <0.64.0> SIGTERM received - shutting down
error.log:
Code: Alles auswählen
2021-12-18 14:31:11.382 [error] <0.207.0> External eimp process (pid=9723) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.382 [error] <0.215.0> External eimp process (pid=9727) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.213.0> External eimp process (pid=9726) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.209.0> External eimp process (pid=9724) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.211.0> External eimp process (pid=9725) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.217.0> External eimp process (pid=9728) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.221.0> External eimp process (pid=9730) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:11.383 [error] <0.219.0> External eimp process (pid=9729) has terminated unexpectedly, restarting in a few seconds
2021-12-18 14:31:19.006 [error] <0.81.0>@lists:map:1238 CRASH REPORT Process <0.81.0> with 0 neighbours exited with reason: no function clause matching lists:map(#Fun<gen_iq_handler.4.64585578>, <<"ejabberd">>) line 1238 in application_master:init/4 line 138
Code: Alles auswählen
2021-12-18 14:31:11 =ERROR REPORT====
External eimp process (pid=3020) has terminated unexpectedly, restarting in a few seconds2021-12-18 14:31:11 =ERROR REPORT====
External eimp process (pid=3021) has terminated unexpectedly, restarting in a few seconds2021-12-18 14:31:11 =ERROR REPORT====
External eimp process (pid=3019) has terminated unexpectedly, restarting in a few seconds2021-12-18 14:31:11 =ERROR REPORT====
External eimp process (pid=3022) has terminated unexpectedly, restarting in a few seconds2021-12-18 14:31:11 =ERROR REPORT====
External eimp process (pid=3026) has terminated unexpectedly, restarting in a few seconds2021-12-18 14:31:11 =ERROR REPORT====
External eimp process (pid=3023) has terminated unexpectedly, restarting in a few seconds2021-12-18 14:31:11 =ERROR REPORT====
External eimp process (pid=3024) has terminated unexpectedly, restarting in a few seconds2021-12-18 14:31:11 =ERROR REPORT====
External eimp process (pid=3025) has terminated unexpectedly, restarting in a few seconds2021-12-18 14:31:19 =CRASH REPORT====
crasher:
initial call: application_master:init/4
pid: <0.81.0>
registered_name: []
exception exit: {{bad_return,{{ejabberd_app,start,[normal,[]]},{'EXIT',{function_clause,[{lists,map,[#Fun<gen_iq_handler.4.64585578>,<<"ejabberd">>],[{file,"lists.erl"},{line,1238}]},{ejabberd_config,transform_module_options,2,[{file,"src/ejabberd_config.erl"},{line,1313}]},{ejabberd_config,'-replace_modules/1-fun-0-',1,[{file,"src/ejabberd_config.erl"},{line,1195}]},{lists,map,2,[{file,"lists.erl"},{line,1239}]},{lists,map,2,[{file,"lists.erl"},{line,1239}]},{ejabberd_config,process_host_term,4,[{file,"src/ejabberd_config.erl"},{line,717}]},{lists,foldl,3,[{file,"lists.erl"},{line,1263}]},{ejabberd_config,read_file,2,[{file,"src/ejabberd_config.erl"},{line,191}]}]}}}},[{application_master,init,4,[{file,"application_master.erl"},{line,138}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]}
ancestors: [<0.80.0>]
message_queue_len: 1
messages: [{'EXIT',<0.82.0>,normal}]
links: [<0.80.0>,<0.43.0>]
dictionary: []
trap_exit: true
status: running
heap_size: 1598
stack_size: 27
reductions: 252
neighbours:
Meine Konfiguration sieht wie folgt aus...
/etc/ejabberd/ejabberdctl.cfg (weitgehend alles erstmal defaults):
Code: Alles auswählen
POLL=true
SMP=auto
ERL_MAX_PORTS=65536
#FIREWALL_WINDOW=
#INET_DIST_INTERFACE=127.0.0.1
ERL_PROCESSES=262144
ERL_MAX_ETS_TABLES=2053
ERL_OPTIONS="-env ERL_CRASH_DUMP_BYTES 0"
ERLANG_NODE=ejabberd@localhost
EJABBERD_PID_PATH=/run/ejabberd/ejabberd.pid
EJABBERD_CONFIG_PATH=/etc/ejabberd/ejabberd.yml
#CONTRIB_MODULES_PATH=/opt/ejabberd-modules
CONTRIB_MODULES_CONF_DIR=/etc/ejabberd/modules.d
/etc/ejabberd/ejabberd.yml (nur mal die von mir gemachten änderungen):
Code: Alles auswählen
...
loglevel: 5
...
hosts:
- "localhost"
...
acl:
admin:
user:
- "Admin@localhost"
...
modules:
...
default_db: sql
db_type: sql
sql_type: mysql
sql_server: "localhost"
sql_database: "ejabberd"
sql_username: "<USERNAME>"
sql_password: '<PASSWORT>'
sql_port: 3306
auth_method: sql
...
![Very Happy :-D](./images/smilies/icon_biggrin.gif)
Event. auch "anständige" Doku? (Link)
Danke im Voraus und sorry für den langen Post.
Nachtrag/Lösung:
Ich schreibe die Lösung mal gleich hier an den Anfang, damit man sich nicht durch OT hindurchwühlen muss...
Folgende Zeilen habe ich zwischen den Einträgen "api-permissions:" und "shaper:" eingefügt und zwar ohne Leerzeichen zwischen der jeweiligen Option und dem Zeilenanfang:
Code: Alles auswählen
auth_method: sql
sql_type: mysql
sql_server: "localhost"
sql_database: "ejabberd"
sql_username: "<USERNAME>"
sql_password: "<PASSWORT>"
sql_port: 3306
Et Violchen! *schwitz!*
![Very Happy :-D](./images/smilies/icon_biggrin.gif)
<Scherz-Ironie an>Mein "besonderer Dank" für die Ermutigung geht an 'niemand'! ;-D *fg*<Scherz-Ironie aus>