静看光阴荏苒
不管不顾不问不说也不念

Activity-Relay:ActivityPub中继服务器安装与配置

ActivityPub中继服务器是一个信息聚合服务器。

各个实例,例如Mastodon、Misskey可以通过订阅中继服务器来交换大量公开内容。它可以帮助小型服务器发现联邦宇宙中的其他服务器的内容,无需本站用户手动关注其他远程服务器上的用户。

再简单点说就是中继服务器可以为自己的站点提供丰富的信息流,让自己的站点可以看到更多其他站点的内容。

Activity-Relay是一个开源的ActivityPub中继服务器,项目地址:https://github.com/yukimochi/Activity-Relay

这篇文章记录一下Activity-Relay的安装与配置,以下操作在Debian11上完成。

安装需要用到的软件包:

apt -y update
apt -y install curl git nginx python3-certbot-nginx redis-server

新建一个名为relay的用户和组,待会用这个用户来运行Activity-Relay:

useradd -r -m -d /var/lib/relay -s /usr/sbin/nologin -c "Activity-Relay" -U relay

安装golang:

curl -L https://go.dev/dl/go1.19.4.linux-amd64.tar.gz -o go1.19.4.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.19.4.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' > /etc/profile.d/golang.sh
source /etc/profile.d/golang.sh

克隆项目代码并编译:

git clone "https://github.com/yukimochi/Activity-Relay.git" -b v1.2.4
cd Activity-Relay
go build -o relay -ldflags "-X main.version=$(git describe --tags HEAD)"

复制编译好的二进制文件到/usr/local/bin:

mv relay /usr/local/bin

同时复制一份配置文件:

mv config.yml.example /var/lib/relay/config.yml

编辑配置文件:

nano /var/lib/relay/config.yml

你需要修改下面的配置:

REDIS_URL: redis://127.0.0.1:6379 
RELAY_BIND: 127.0.0.1:8080
RELAY_DOMAIN: relay.example.com # 你的中继服务器域名
RELAY_SERVICENAME: Example Relay Service # 你的中继服务器名字

生成配置文件里面的actor.pem并设置正确的权限:

openssl genrsa | tee /var/lib/relay/actor.pem
chmod 600 /var/lib/relay/actor.pem
chown relay:relay /var/lib/relay/actor.pem

新建relay-api的systemd服务:

systemctl edit --full --force relay-api.service

写入如下配置:

[Unit]
Description=YUKIMOCHI Activity-Relay API Server
Documentation=https://github.com/yukimochi/Activity-Relay/wiki
After=network.target network-online.target
Requires=network-online.target

[Service]
Type=simple
User=relay
Group=relay
ExecStart=/usr/local/bin/relay --config /var/lib/relay/config.yml server
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

新建relay-worker的systemd服务:

systemctl edit --full --force relay-worker.service

写入如下配置:

[Unit]
Description=YUKIMOCHI Activity-Relay Job Worker
Documentation=https://github.com/yukimochi/Activity-Relay/wiki
After=network.target network-online.target
Requires=network-online.target

[Service]
Type=simple
User=relay
Group=relay
ExecStart=/usr/local/bin/relay --config /var/lib/relay/config.yml worker
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full

[Install]
WantedBy=multi-user.target

启动relay-api、relay-worker并设置开机自启:

systemctl enable --now relay-api relay-worker

配置nginx反向代理:

nano /etc/nginx/sites-available/relay

写入如下配置:

upstream relay {
    server 127.0.0.1:8080 max_fails=5 fail_timeout=60s;
}

server {
    listen 80;
    listen [::]:80;
    server_name relay.example.com;
    client_max_body_size 0;

    location / {
        proxy_pass http://relay;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

启用新的nginx配置:

ln -s /etc/nginx/sites-available/relay /etc/nginx/sites-enabled/relay

签发ssl证书:

certbot --nginx

至此,中继服务器就搭建完成了,你的中继服务器地址将是:https://relay.example.com/inbox

你可以在mastodon添加中继服务器:

你也可以在misskey添加中继服务器:

接下来简单介绍一下如何管理你的中继服务器。

Activity-Relay自带一系列管理命令,可以帮助你管理中继服务器。在执行相关管理命令的时候,需要指定对应的配置文件才能正常工作。

如果你觉得每次执行命令都指定配置文件太麻烦的话,也可以直接进入到你的配置文件所在目录,这样执行命令的时候就不需要指定配置文件了:

cd /var/lib/relay

建议开启审批功能,可以防止滥用。开启后申请加入你中继服务器的实例需要得到你的允许才可以加入:

relay control config enable manually-accept

要关闭审批功能:

relay control config enable --disable manually-accept

当审批功能开启后,你可以使用下面的命令列出等待审核的实例:

relay control follow list

如果要同意一个实例加入:

relay control follow accept example.com

如果要拒绝一个实例加入:

relay control follow reject example.com

列出所有加入到中继服务器的实例域名:

relay control domain list

更多管理命令可参考:https://github.com/yukimochi/Activity-Relay/wiki/02.-Control

最后简单说一下,有很多中继服务器都有一个“首页”,在首页可以介绍一下你的中继服务器,以及告诉大家有哪些实例加入到你的中继服务器了。要实现这个的话,可以看看这个issue,修改一下nginx配置即可:https://github.com/yukimochi/Activity-Relay/issues/50

赞(4)
未经允许不得转载:荒岛 » Activity-Relay:ActivityPub中继服务器安装与配置
分享到: 更多 (0)

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    这东西是干什么用的呀???

    miaosky1年前 (2023-01-10) Google Chrome 102.0.0.0 Google Chrome 102.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 方便不同的 ActivityPub 实例批量交换公开帖文,以丰富全局时间线(没有中继的话就只有存在关注关系或是被引用到的帖文会被发现)

      Nya Candy1年前 (2023-01-24) Google Chrome 109.0.0.0 Google Chrome 109.0.0.0 Android 13 Android 13回复

分享创造快乐

广告合作资源投稿