103个版本
0.3.115 | 2024年7月9日 |
---|---|
0.3.113 | 2024年5月1日 |
0.3.109 | 2024年2月12日 |
0.3.105 | 2023年11月26日 |
0.3.12 | 2021年12月30日 |
在Web编程中排名129
280KB
6K SLoC
AodeRelay
一个简单高效的活动pub中继
安装
Docker
如果正在运行docker,可以使用以下命令启动中继
$ sudo docker run --rm -it \
-v "$(pwd):/mnt/" \
-e ADDR=0.0.0.0 \
-e SLED_PATH=/mnt/sled/db-0.34 \
-p 8080:8080 \
asonix/relay:0.3.85
这将使用存储在"./sled/db-0.34"的数据库和监听8080端口的中继启动
Cargo
安装cargo后,可以使用以下命令将中继安装到您的cargo bin目录
$ cargo install ap-relay
然后可以使用此命令运行它
$ ADDR=0.0.0.0 relay
这将使用存储在"./sled/db-0.34"的数据库和监听8080端口的中继启动
源代码
可以使用以下命令直接从该git仓库启动中继
$ git clone https://git.asonix.dog/asonix/relay
$ ADDR=0.0.0.0 cargo run --release
用法
要简单地运行服务器,命令如下
$ ./relay
管理
注意:服务器必须运行,才能使用以下命令更新列表
要了解任何其他任务,可以通过传递--help
标志
An activitypub relay
Usage: relay [OPTIONS]
Options:
-b <BLOCKS> A list of domains that should be blocked
-a <ALLOWED> A list of domains that should be allowed
-u, --undo Undo allowing or blocking domains
-h, --help Print help information
要添加域名到阻止列表,使用-b
标志并传递域名列表
$ ./relay -b asonix.dog blimps.xyz
要从不阻止列表中删除域名,只需传递带有-u
标志的-b
$ ./relay -ub asonix.dog blimps.xyz
对于允许域名,规则相同,尽管域名可以通过-a
标志允许
$ ./relay -a asonix.dog blimps.xyz
$ ./relay -ua asonix.dog blimps.xyz
配置
默认情况下,所有这些值都设置为开发值。它们从环境变量或工作目录中的.env
文件中读取。
HOSTNAME=localhost:8080
ADDR=127.0.0.1
PORT=8080
DEBUG=true
RESTRICTED_MODE=false
VALIDATE_SIGNATURES=false
HTTPS=false
PRETTY_LOG=true
PUBLISH_BLOCKS=false
SLED_PATH=./sled/db-0.34
要在此服务器上运行生产环境,您可能希望设置其中大多数值
HOSTNAME=relay.my.tld
ADDR=0.0.0.0
PORT=8080
DEBUG=false
RESTRICTED_MODE=false
VALIDATE_SIGNATURES=true
HTTPS=true
PRETTY_LOG=false
PUBLISH_BLOCKS=true
SLED_PATH=./sled/db-0.34
RUST_LOG=warn
API_TOKEN=somepasswordishtoken
OPENTELEMETRY_URL=localhost:4317
TELEGRAM_TOKEN=secret
TELEGRAM_ADMIN_HANDLE=your_handle
TLS_KEY=/path/to/key
TLS_CERT=/path/to/cert
FOOTER_BLURB="Contact <a href=\"https://masto.asonix.dog/@asonix\">@asonix</a> for inquiries"
LOCAL_DOMAINS=masto.asonix.dog
LOCAL_BLURB="<p>Welcome to my cool relay where I have cool relay things happening. I hope you enjoy your stay!</p>"
PROMETHEUS_ADDR=0.0.0.0
PROMETHEUS_PORT=9000
CLIENT_TIMEOUT=10
DELIVER_CONCURRENCY=8
SIGNATURE_THREADS=2
描述
HOSTNAME
中继托管的主机名或IP地址。如果您在example.com
上启动中继,那么这就是您的HOSTNAME。默认值为localhost:8080
ADDR
服务器绑定的地址。默认情况下,这是127.0.0.1
,因此对于生产情况,应将其设置为0.0.0.0
或另一个公开地址。
PORT
服务器绑定的端口,默认情况下为8080
,但如有必要,可以更改。
DEBUG
当请求击中/inbox路由时,是否将传入的活动打印到控制台。默认值为true
,但在生产情况下应设置为false
。由于每个发送到中继的活动都是公开的,这并不代表安全风险。
RESTRICTED_MODE
此设置启用“允许列表”设置,只有通过relay -a
命令明确启用的服务器才能加入中继。默认为false
。如果未启用RESTRICTED_MODE
,则手动允许通过relay -a
的域没有效果。
VALIDATE_SIGNATURES
此设置强制检查传入活动的HTTP签名。默认为true
HTTPS
当前服务器是否运行在HTTPS端口上。这用于生成当前运行的中继的URL。默认设置为true
PUBLISH_BLOCKS
是否在服务器的nodeinfo
元数据中发布被阻止的域列表。默认为false
。
SLED_PATH
存储连接服务器磁盘数据库的位置。默认为./sled/db-0.34
。
RUST_LOG
要打印的日志级别。可用级别为ERROR
、WARN
、INFO
、DEBUG
和TRACE
。您还可以指定模块路径以启用某些日志但禁用其他日志,例如RUST_LOG=warn,tracing_actix_web=info,relay=info
。默认为warn
SOURCE_REPO
中继源代码的URL。默认为https://git.asonix.dog/asonix/relay
,但如果你在其他地方托管分支,则应更改。
REPOSITORY_COMMIT_BASE
仓库提交哈希引用的基本路径。例如,Gitea的/src/commit/
,GitLab的/tree/
。
API_TOKEN
用于访问管理API的密钥token。此值必须设置以使命令行功能正常。
OPENTELEMETRY_URL
导出opentelemetry跨度的URL。这主要用于调试。没有默认值,因为大多数人可能没有运行opentelemetry收集器。
TELEGRAM_TOKEN
用于运行中继管理机器人的Telegram机器人类令牌。没有默认值。
TELEGRAM_ADMIN_HANDLE
允许管理中继的Telegram用户的handle。没有默认值。
TLS_KEY
可选 - 如果你直接在互联网上运行中继并有一个TLS密钥来为你的中继提供HTTPS,则指定此值。
TLS_CERT
可选 - 如果你直接在互联网上运行中继并有一个TLS证书链来为你的中继提供HTTPS,则指定此值。
FOOTER_BLURB
可选 - 在页面页脚中添加自定义注释。
LOCAL_DOMAINS
可选 - 由与中继相同的管理员运行的mastodon服务器的域。
LOCAL_BLURB
可选 - 中继的描述。
PROMETHEUS_ADDR
可选 - 绑定以提供prometheus抓取端点的地址。
PROMETHEUS_PORT
可选 - 绑定以提供prometheus抓取端点的端口。
CLIENT_TIMEOUT
可选 - 在检索和交付期间,中继将保持打开与远程服务器的连接多长时间(以秒为单位)。默认为10。
DELIVER_CONCURRENCY
可选 - 中继每个线程允许多少个交付请求在飞行中。默认为8。
签名线程
可选 - 覆盖用于签名和验证请求的线程数。默认值为 std::thread::available_parallelism()
(它试图检测您有多少核心)。如果无法检测到正确的核心数,则回退到1。
'代理_URL'
可选 - HTTP代理的URL,用于转发出站请求
'代理用户名'
可选 - 通过HTTP基本认证提供给配置了代理_URL
的HTTP代理的用户名
'代理密码'
可选 - 通过HTTP基本认证提供给配置了代理_URL
的HTTP代理的密码
订阅
Mastodon管理员可以通过将/inbox
路由添加到他们的中继设置中来订阅此中继。例如,如果服务器是https://relay.my.tld
,则正确的URL将是https://relay.my.tld/inbox
。
Pleroma管理员可以通过将/actor
路由添加到他们的中继设置中来订阅此中继。例如,如果服务器是https://relay.my.tld
,则正确的URL将是https://relay.my.tld/actor
。
支持的Activity
- 接受关注 {remote-actor},这是一个无操作
- 拒绝关注 {remote-actor},向 {remote-actor} 发送取消关注的请求
- 公告 {任何内容},{任何内容}被公告给监听服务器
- 创建 {任何内容},{任何内容}被公告给监听服务器
- 关注 {self-actor},成为中继的监听者,并将发送一个关注的请求
- 关注公共,成为中继的监听者
- 取消关注 {self-actor},停止监听中继,并发送取消关注的请求
- 取消关注公共,停止监听中继
- 删除 {任何内容},将删除 {任何内容}原样中继到监听服务器。请注意,除非此活动已用JSON-LD签名,否则此活动可能会被监听服务器拒绝
- 更新 {任何内容},将更新 {任何内容}原样中继到监听服务器。请注意,除非此活动已用JSON-LD签名,否则此活动可能会被监听服务器拒绝
- 添加 {任何内容},将添加 {任何内容}原样中继到监听服务器。请注意,除非此活动已用JSON-LD签名,否则此活动可能会被监听服务器拒绝
- 移除 {任何内容},将移除 {任何内容}原样中继到监听服务器。请注意,除非此活动已用JSON-LD签名,否则此活动可能会被监听服务器拒绝
支持的发现协议
- Webfinger
- NodeInfo
已知问题
Pleroma和Akkoma不支持验证JSON-LD签名,这意味着许多活动(如删除、更新、添加和移除)将被拒绝,并显示类似WARN: Response from https://example.com/inbox, "Invalid HTTP Signature"
的消息。这是正常的,并且不是中继的问题。
贡献
请随时为任何发现的问题提交问题。请注意,任何贡献的代码都将根据AGPLv3许可。
许可证
版权所有 © 2022 Riley Trautman
AodeRelay是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款和条件下重新分发和/或修改它,许可证版本为3,或(根据您的选择)许可证的任何较新版本。
AodeRelay的发布是希望它将是有用的,但没有任何保证;甚至没有关于适销性或针对特定目的的适用性的暗示保证。有关详细信息,请参阅GNU通用公共许可证。本文件是AodeRelay的一部分。
您应该已经收到了AodeRelay的GNU通用公共许可证副本。如果没有,请参阅http://www.gnu.org/licenses/。
依赖关系
~62–98MB
~2M SLoC