matrixdotorg/mjolnirMjolnir是一款针对Matrix协议的综合审核工具,旨在保护Matrix服务器和社区免受***行为侵扰。它不仅提供服务器级别的保护,还能帮助社区在不使用个人账号的情况下有效管理房间,同时支持作为Synapse模块将审核规则应用于整个家庭服务器(homeserver)。
Mjolnir已发布至Docker Hub:matrixdotorg/mjolnir,也可自行构建镜像。
bash# 克隆仓库 git clone [***] cd mjolnir # 创建并编辑配置文件(不建议修改数据路径) mkdir -p /etc/mjolnir/config cp config/default.yaml /etc/mjolnir/config/production.yaml nano /etc/mjolnir/config/production.yaml # 编辑配置 # 启动容器 docker run --rm -it -v /etc/mjolnir:/data matrixdotorg/mjolnir:latest
需依赖yarn和Node 14。
bash# 克隆仓库 git clone [***] cd mjolnir # 安装依赖并构建 yarn install yarn build # 创建并编辑配置文件(建议修改数据路径) cp config/default.yaml config/development.yaml nano config/development.yaml # 编辑配置 # 启动 node lib/index.js
机器人启动后,执行以下命令完成初始设置:
!mjolnir list create COC code-of-conduct-ban-listCOC、别名为#code-of-conduct-ban-list:example.org的封禁列表,自动邀请您加入管理房间)!mjolnir default COC!mjolnir help查看所有可用命令。要求:Synapse 1.53.0及以上版本。
该模块可将Mjolnir的审核规则应用于整个家庭服务器,主要用于阻止来自不受信任家庭服务器/用户的邀请,需手动配置。
安装模块:
将模块安装到Synapse的Python环境中:
bashpip install -e "git+[***]"
配置homeserver.yaml:
在配置文件中添加模块配置,示例如下:
yamlmodules: - module: mjolnir.Module config: # 阻止封禁列表中的服务器/用户发送邀请(默认true) block_invites: true # 将封禁列表中的服务器/用户发送的消息标记为垃圾信息(默认false,标记后消息显示为空) block_messages: false # 通过过滤用户ID和显示名称,从用户目录搜索中移除封禁列表中的用户(默认false) block_usernames: false # 需遵循的封禁列表房间ID(仅支持房间ID,不支持别名或永久链接;服务器需已加入这些房间) ban_lists: - "!roomid:example.org" # 消息长度限制(可选) message_max_length: # 限制消息体字符数(默认无限制,超出Synapse规范的事件大小限制除外) # threshold: 510 # 示例:限制为510字符 # 指定仅在某些房间应用长度限制(默认所有房间) # rooms: # - "!vMvyOCeCxHsggkmALd:localhost:9999" # 对来自远程服务器的消息也应用长度限制(默认仅限制本服务器消息) # remote_servers: true
重启Synapse:
修改配置后需重启Synapse使模块生效。
ban_lists中指定的房间,模块不会自动加入房间。Mjolnir 1.2及以上版本支持将滥用报告替换为房间内可读格式,无需通过管理员API获取数据,需以下两步配置:
配置Mjolnir:
在Mjolnir配置文件(通常为/etc/mjolnir/config/production.yaml)中,复制default.yaml中的web部分(1.20版本新增),并启用web和abuseReporting:
yamlweb: enabled: true port: 9000 # 配置端口 host: 0.0.0.0 # 建议设为localhost仅允许反向代理访问 abuseReporting: enabled: true
设置反向代理:
将请求重定向至Mjolnir的API端点。以Nginx为例,配置如下(参考test/nginx.conf):
nginxlocation ~ ^/_matrix/client/r0/rooms/([^/]*)/report/(.*)$ { proxy_pass [***] # host为Mjolnir主机,port为配置的web端口 }
host: localhost)。若对安全性有顾虑,可禁用此功能。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务