spantaleev / matrix-docker-ansible-deploy

🐳 Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker
GNU Affero General Public License v3.0
4.78k stars 1.03k forks source link

matrix-bot-draupnir unable to start #3434

Closed bfabio closed 2 months ago

bfabio commented 2 months ago

Describe the bug The matrix-bot-draupnir service fails to start:

systemd[1]: Starting Matrix Draupnir bot...
matrix-bot-draupnir[788339]: 6be047520f2ceaa3f7a8504663bbd39c91395b3f5ad431358b890ee5b6445e4b
systemd[1]: Started Matrix Draupnir bot.
matrix-bot-draupnir[788357]: Sat, 20 Jul 2024 08:55:39 GMT [INFO] [index] Starting bot...
matrix-bot-draupnir[788357]: Failed to setup mjolnir from the config /data: Error: getaddrinfo ENOTFOUND matrix-pantalaimon
matrix-bot-draupnir[788357]: node:internal/process/promises:289
matrix-bot-draupnir[788357]:             triggerUncaughtException(err, true /* fromPromise */);
matrix-bot-draupnir[788357]:             ^
matrix-bot-draupnir[788357]: Error: getaddrinfo ENOTFOUND matrix-pantalaimon
matrix-bot-draupnir[788357]:     at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:118:26) {
matrix-bot-draupnir[788357]:   errno: -3008,
matrix-bot-draupnir[788357]:   code: 'ENOTFOUND',
matrix-bot-draupnir[788357]:   syscall: 'getaddrinfo',
matrix-bot-draupnir[788357]:   hostname: 'matrix-pantalaimon'
matrix-bot-draupnir[788357]: }
matrix-bot-draupnir[788357]: Node.js v20.11.1
systemd[1]: matrix-bot-draupnir.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: matrix-bot-draupnir.service: Failed with result 'exit-code'.

because the matrix-pantalaimon container is in another network:

$ docker inspect matrix-pantalaimon
[...]
"Networks": {
                "matrix-homeserver": {

I have this in /etc/systemd/system/matrix-bot-draupnir.service:

ExecStartPre=/usr/bin/env docker create \
                        --rm \
                        --name=matrix-bot-draupnir \
                        --log-driver=none \
                        --user=998:1001 \
                        --cap-drop=ALL \
                        --read-only \
                        --network=matrix-addons \
                        --mount type=bind,src=/matrix/draupnir/config,dst=/data/config,ro \
                        --mount type=bind,src=/matrix/draupnir/data,dst=/data \
                        docker.io/gnuxie/draupnir:v1.87.0 \
                        bot --draupnir-config /data/config/production.yaml

ExecStartPre=/usr/bin/env docker network connect traefik matrix-bot-draupnir

ExecStart=/usr/bin/env docker start --attach matrix-bot-draupnir

which matches the template at https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/group_vars/matrix_servers#L223.

matrix_playbook_reverse_proxy_container_network (== "traefik") is used instead of matrix_homeserver_container_network (== matrix-homeserver, the network matrix-pantalaimon is in and that would make it work).

Adding

ExecStartPre=/usr/bin/env docker network connect matrix-homeserver matrix-bot-draupnir

to the unit file resolves it but results in another error when making the request, so I suspect it's not the right fix.

Jul 20 09:26:22 matrix systemd[1]: Started Matrix Draupnir bot.
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]: Sat, 20 Jul 2024 09:26:23 GMT [INFO] [index] Starting bot...
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]: Failed to setup mjolnir from the config /data: Error: undefined: undefined
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]: node:internal/process/promises:289
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:             triggerUncaughtException(err, true /* fromPromise */);
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:             ^
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]: MatrixError: Error during MatrixClient request POST /_matrix/client/v3/login: 500 Internal Server Error -- "Cannot connect to host matrix-traefik:8008 ssl:False [Name or service not known]"
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at /mjolnir/utils.js:278:21
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at result (/mjolnir/utils.js:397:25)
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at new Promise (<anonymous>)
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at /mjolnir/utils.js:396:40
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at respIsBuffer (/node_modules/matrix-bot-sdk/lib/http.js:66:38)
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at new Promise (<anonymous>)
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at doHttpRequest (/node_modules/matrix-bot-sdk/lib/http.js:65:41)
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at MatrixClient.doRequest (/node_modules/matrix-bot-sdk/lib/MatrixClient.js:1785:41)
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at descriptor.value (/node_modules/matrix-bot-sdk/lib/metrics/decorators.js:19:53)
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:     at MatrixAuth.passwordLogin (/node_modules/matrix-bot-sdk/lib/MatrixAuth.js:113:60) {
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:   body: 'Cannot connect to host matrix-traefik:8008 ssl:False [Name or service not known]',
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:   statusCode: 500,
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:   errcode: undefined,
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:   error: undefined,
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]:   retryAfterMs: undefined
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]: }
Jul 20 09:26:23 matrix matrix-bot-draupnir[801773]: Node.js v20.11.1

To Reproduce My vars.yml file looks like this:

https://github.com/teamdigitale/matrix.developers.italia.it/blob/69e6387b7ba12c5036359a6ba643e212bda8d276/matrix.developers.italia.it.vars.yml#L140-L153

# Enable Pantalaimon, this is needed to make the bot work with E2E encrypted rooms
matrix_pantalaimon_enabled: true

matrix_bot_draupnir_enabled: true
matrix_bot_draupnir_pantalaimon_use: true

# User name and password for the bot. Required when using Pantalaimon.
matrix_bot_draupnir_pantalaimon_username: "bot.draupnir"
matrix_bot_draupnir_pantalaimon_password: "{{ vault_matrix_bot_draupnir_pantalaimon_password }}"

matrix_bot_draupnir_management_room: "<ROOMID>"

Matrix Server:

bfabio commented 2 months ago

@spantaleev I tried re-running the playbook with the fix, but it still results in the second error I was mentioning:

Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]: Mon, 22 Jul 2024 17:13:34 GMT [INFO] [index] Starting bot...
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]: Failed to setup mjolnir from the config /data: Error: undefined: undefined
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]: node:internal/process/promises:289
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:             triggerUncaughtException(err, true /* fromPromise */);
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:             ^
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]: MatrixError: Error during MatrixClient request POST /_matrix/client/v3/login: 500 Internal Server Error -- "Cannot connect to host >
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at /mjolnir/utils.js:278:21
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at result (/mjolnir/utils.js:397:25)
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at new Promise (<anonymous>)
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at /mjolnir/utils.js:396:40
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at respIsBuffer (/node_modules/matrix-bot-sdk/lib/http.js:66:38)
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at new Promise (<anonymous>)
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at doHttpRequest (/node_modules/matrix-bot-sdk/lib/http.js:65:41)
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at MatrixClient.doRequest (/node_modules/matrix-bot-sdk/lib/MatrixClient.js:1785:41)
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at descriptor.value (/node_modules/matrix-bot-sdk/lib/metrics/decorators.js:19:53)
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:     at MatrixAuth.passwordLogin (/node_modules/matrix-bot-sdk/lib/MatrixAuth.js:113:60) {
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:   body: 'Cannot connect to host matrix-traefik:8008 ssl:False [Name or service not known]',
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:   statusCode: 500,
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:   errcode: undefined,
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:   error: undefined,
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]:   retryAfterMs: undefined
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]: }
Jul 22 17:13:34 matrix matrix-bot-draupnir[1098416]: Node.js v20.11.1
Jul 22 17:13:35 matrix systemd[1]: matrix-bot-draupnir.service: Main process exited, code=exited, status=1/FAILURE
Jul 22 17:13:35 matrix systemd[1]: matrix-bot-draupnir.service: Failed with result 'exit-code'.
dementeb commented 2 months ago

@spantaleev I have the same error, on a fresh install with the latest fix. E2EE support and connection via Pantalaimon are enabled.

body: 'Cannot connect to host matrix-traefik:8008 ssl:False [Name or service not known]'