Mastodon Verification
迁移Pub-Relay至Activity-Relay
There is an English version of this tutorial.

在联邦宇宙中,有一类中继程序作用是将不同实例间的消息同步,使得不同实例间的数据可以大量交换而不必关注全部对方实例账号。

Pub-Relay是由Mastodon开发者开发的中继程序,由Crystal Lang编写,在联邦宇宙初期被广泛使用。但它稳定性不高,经常出现bug导致无法处理消息转发,而且实现语言不太流行,很多开发者不能对其进行有效修改,致使其功能匮乏,甚至不能对中继列表进行管理。

Activity-Relay则是一款新问世的由Golang编写而成的中继转发实现。它稳定性相对Pub-Relay更高,且扩展性更强,自带管理Cli可以进行实例屏蔽/移除等操作,还可以变为私有中继手动批准加入,唯一的美中不足就是没有提供统计API,迁移到Activity-Relay可以提高公共中继的整体稳定性及可用性。

Activity-Relay相较Pub-Relay性能开销有一定提升。
DragonRelay为例,2C3G VPS CPU占用 1~2% → 10~15% (27订阅/2超大实例)

准备工作

根据Activity-Relay的官方Wiki编译安装,配置Systemd及反向代理程序(请跳过生成RSA密钥一步)。

迁移

需要迁移的内容有:

  • 中继签名私钥
  • 订阅列表

私钥

私钥直接使用原中继私钥即可,请注意如果原先私钥权限不是0600请更改为0600

chmod 0600 /path/to/pem

订阅列表

由于两个程序实现均采用Redis作为持久数据库且key结构相似,我们可以直接使用一下脚本进行迁移。首先将原数据库复制到新的namespace以便发生未知错误时能够迅速回退:

# https://stackoverflow.com/a/26142152/15081893
source_host=localhost
source_port=6379
source_db=0
target_host=localhost
target_port=6379
target_db=1

redis-cli -h $source_host -p $source_port -n $source_db keys \*subscription\* | while read key; do # copy only subscription related keys
    echo "Copying $key"
    redis-cli --raw -h $source_host -p $source_port -n $source_db DUMP "$key" \
        | head -c -1 \
        | redis-cli -x -h $target_host -p $target_port -n $target_db RESTORE "$key" 0
done

随后执行以下命令更新数据库到Activity-Relay格式:

target_host=localhost
target_port=6379
target_db=1

redis-cli -h $target_host -p $target_port -n $target_db --scan --pattern relay:subscription:* | \
    while read key; do
        activity_id=$(redis-cli -h $target_host -p $target_port -n $target_db hget $key follow_id)
        actor_id=$(redis-cli -h $target_host -p $target_port -n $target_db hget $key follow_actor_id)
        redis-cli -h $target_host -p $target_port -n $target_db hmset $key activity_id $activity_id actor_id $actor_id
        redis-cli -h $target_host -p $target_port -n $target_db hdel $key follow_id follow_actor_id state
    done

重载你的反代程序,随后大功告成!

前端界面

前端界面可以参考https://github.com/dragonfly-club/dragon-relay配置。

All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stated elsewhere.
No Comments

Send Comment Edit Comment


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
Previous
Next