From ab185f749c8692c610729eb61e5da348f7a5339e Mon Sep 17 00:00:00 2001 From: Hans van Zijst Date: Wed, 4 Dec 2024 13:48:58 +0100 Subject: [PATCH] Completed documentation for Draupnir. --- matrix/draupnir/README.md | 48 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/matrix/draupnir/README.md b/matrix/draupnir/README.md index 646c591..b7bbd17 100644 --- a/matrix/draupnir/README.md +++ b/matrix/draupnir/README.md @@ -54,7 +54,7 @@ Copy it to `production.yaml` and change what you must. | Option | Value | Meaning | | :---- | :---- | :---- | | `homeserverUrl` | `http://localhost:8008` | Where to communicate with Synapse | -| `rawHomeserverUrl` | `https://vm02199.example.com` | Same as `server_name` | +| `rawHomeserverUrl` | `https://matrix.example.com` | Same as `server_name` | | `accessToken` | access token | Copy from login session | | `password` | password | Password for the account | | `dataPath` | `/opt/Draupnir/datastorage` | Storage | @@ -79,7 +79,51 @@ displayReports: true ``` For this to work (for reports to reach Draupnir) you'll need to configure -nginx... +nginx to forward requests for reports to Draupnir: ``` +location ~ ^/_matrix/client/(r0|v3)/rooms/([^/]*)/report/(.*)$ { + # The r0 endpoint is deprecated but still used by many clients. + # As of this writing, the v3 endpoint is the up-to-date version. + + # Alias the regexps, to ensure that they're not rewritten. + set $room_id $2; + set $event_id $3; + proxy_pass http://[::1]:8082/api/1/report/$room_id/$event_id; +} +# Reports that need to reach Synapse (not sure if this is used) +location /_synapse/admin/v1/event_reports { + proxy_pass http://localhost:8008; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $host; + client_max_body_size 50M; + proxy_http_version 1.1; + +location ~ ^/_synapse/admin/v1/rooms/([^/]*)/context/(.*)$ { + set $room_id $2; + set $event_id $3; + proxy_pass http://localhost:8008/_synapse/admin/v1/rooms/$room_id/context/$event_id; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $host; + client_max_body_size 50M; + proxy_http_version 1.1; +} +``` + +# Rate limiting + +Normal users are rate limited, to prevent them from flooding the server. Draupnir +is meant to stop those events, but if it it itself rate limited, it won't work +all that well. + +How rate limiting is configured server-wide is documented in [Synapse's +documentation](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html?highlight=ratelimiting#ratelimiting). +Overriding is, unfortunately, not something you can easily configure in the +configuration files. You'll have to do that in the database itself: + +``` +INSERT INTO ratelimit_override VALUES ('@draupnir:example.com', 0, 0); +```