Files
matrix/draupnir/production.yaml
T
Lotus CIandClaude Opus 5.5 77e719183a
Lint / Shell (shellcheck) (pull_request) Successful in 10s
Lint / JS (eslint) (pull_request) Successful in 9s
Lint / No secrets in webhook configs (pull_request) Successful in 4s
Lint / Landing page is rendered (matrix (pull_request) Successful in 4s
Lint / Python (ruff) (pull_request) Successful in 5s
Lint / Python deps (pip-audit) (pull_request) Successful in 1m17s
Lint / Secret scan (gitleaks) (pull_request) Successful in 10s
Lint / Shell (shellcheck) (push) Successful in 10s
Lint / JS (eslint) (push) Successful in 7s
Lint / No secrets in webhook configs (push) Successful in 5s
Lint / Landing page is rendered (matrix (push) Successful in 4s
Lint / Python (ruff) (push) Successful in 8s
Lint / Python deps (pip-audit) (push) Successful in 1m13s
Lint / Secret scan (gitleaks) (push) Successful in 6s
draupnir: enable Rust crypto so it can read commands in the encrypted management room
The management room is end-to-end encrypted, but Draupnir ran with
experimentalRustCrypto: false and Pantalaimon off, so it could post there
(its own messages are unencrypted) but never saw commands: its last reply
to a command was ~57 days ago, and `!draupnir rooms add …` sent from Lotus
on 2026-10-13 was ignored. The same command sent unencrypted worked at
once (✅, joined dco-memes-minecraft).

Merging deploys via lxc110-draupnir.sh, which restarts draupnir.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
2026-10-13 01:34:10 -04:00

69 lines
1.6 KiB
YAML

homeserverUrl: "https://matrix.lotusguild.org"
rawHomeserverUrl: "https://matrix.lotusguild.org"
accessToken: "REDACTED"
pantalaimon:
use: false
username: draupnir
password: ""
# The management room (and most Lotus rooms) are end-to-end encrypted. Without
# crypto Draupnir can post there but can't read commands, so `!draupnir …` was
# silently ignored (LotusGuild/cinny audit, 2026-10-13). Rust crypto stores its
# keys under dataPath.
experimentalRustCrypto: true
dataPath: "/data/storage"
autojoinOnlyIfManager: true
recordIgnoredInvites: false
managementRoom: "!mEvR5fe3jMmzwd-FwNygD72OY_yu8H3UP_N-57oK7MI"
logLevel: "INFO"
verifyPermissionsOnStartup: true
noop: false
# Don't apply server ACLs (trust local Synapse admin decisions)
disableServerACL: true
# Protect all rooms the bot is joined to by default
protectAllJoinedRooms: false
# Synapse admin API access
admin:
enableMakeRoomAdminCommand: true
# Don't send verbose join/leave notifications
verboseLogging: false
# Background task interval for checking bans
backgroundDelayMS: 500
# Safe redaction limit per sync
redactionLimit: 100
# Health check endpoint (Prometheus scrape via blackbox exporter)
health:
healthz:
enabled: true
port: 8081
address: "0.0.0.0"
endpoint: "/healthz"
healthyStatus: 200
unhealthyStatus: 418
# Web server for abuse report forwarding
# Endpoint: POST /_matrix/draupnir/1/report/{roomId}/{eventId}
# Synapse integration: configure homeserver.yaml with the draupnir_abuse_reports module
# (see README for setup instructions)
web:
enabled: true
address: "0.0.0.0"
port: 8080
abuseReporting:
enabled: true