Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
1週間で作るActivityPub リレーサーバ S.H. 第6回 Fediverse Linux Users Group 勉強会 2024-12-21
Slide 2
Slide 2 text
自己紹介 S.H. Rubyにたまにパッチを投げてる人 2017年ごろから鯖缶やってる人 最近リレーサーバを作った
Slide 3
Slide 3 text
今日話すこと リレーサーバについて 開発の背景 作ったもの
Slide 4
Slide 4 text
リレーサーバ
Slide 5
Slide 5 text
ActivityPubリレーサーバの仕組み リレーサーバに参加しているサーバからの公開投 稿を受け取る 受け取った公開投稿をリレーサーバに参加してい る別のサーバに配送する
Slide 6
Slide 6 text
リレーサーバのメリット Fediverseのサーバ同士が連合しやすくなる 特にお一人様鯖や小規模な鯖の場合は連合が 強化される
Slide 7
Slide 7 text
リレーサーバのデメリット 外部から流れてくる投稿の数が増え、サーバへ の負荷が増加する 投稿によっては画像もあるためディスクの容量 も使ってしまう リレーサーバ自体もそれなりに負荷がかかる
Slide 8
Slide 8 text
現状のリレーサーバ実装(1) 有名な実装は大きく二つ pub-relay(Crystal) Activity-Relay(Go)
Slide 9
Slide 9 text
現状のリレーサーバ実装(2) Node.jsやRustの実装もある ActivityPub Relay(Node.js) AodeRelay(Rust)
Slide 10
Slide 10 text
現状のリレーサーバの課題(1) リレーサーバの数よりもFediverseのサーバの 数が多い 特定のリレーサーバに参加しがち リレーサーバから配送される投稿数も増加しや すい リレーサーバ自体と参加サーバへの負荷が増加 しやすい
Slide 11
Slide 11 text
現状のリレーサーバの課題(2) リレーサーバの実装があまりない アクティブにメンテナンスされているのは3つ Activity-Relay(Go) ActivityPub Relay(Node.js) AodeRelay(Rust)
Slide 12
Slide 12 text
現状のリレーサーバの課題(3) RedisやPostgreSQLが必要 建てるのに気合がいる 簡単に建てれないのでリレーサーバの数が増え ない
Slide 13
Slide 13 text
開発の背景
Slide 14
Slide 14 text
リレーサーバを作りたかった リレーサーバにRubyの実装がない 厳密にはあるが現在はメンテナンスされていな い Rubyが好きな人間としてはRubyの実装を作り たい 去年末くらいから頑張ってたけど開発が止まっ てたの再開したい
Slide 15
Slide 15 text
リレーサーバの分散化 簡単に建てれるリレーサーバがあれば負荷を分 散できる? 小規模なリレーサーバを建てれると良いので は?
Slide 16
Slide 16 text
RubyWorld Conference 2024 Mastodon開発チームのAndy Piperさんが 来る ActivityPubやFediverseの話がしたい CFPは落ちたのでヘイシャのスポンサー枠でLTが できそう このタイミングに合わせてリレーサーバ実装の話 をするとよいのでは?
Slide 17
Slide 17 text
リレーサーバのプロトタイプ おそらく現存する唯一のRuby実装 プロトタイプのためテストがなかった RailsやRubyのアップデートが大変そう リレーサーバ開発時の知見をフィードバックでき そう
Slide 18
Slide 18 text
経緯のまとめ リレーサーバをRubyで作りたい リレーサーバの分散化ができないか試したい RubyWorld Conferenceでの話すきっかけ 作り プロトタイプ版へのフィードバックに活かせそう
Slide 19
Slide 19 text
この時点で11月上旬
Slide 20
Slide 20 text
RubyWorld Conference 2024は 12月頭
Slide 21
Slide 21 text
実装に割ける時間があま りない
Slide 22
Slide 22 text
1週間くらいでなんとかな らないか
Slide 23
Slide 23 text
Rails 8ならできる
Slide 24
Slide 24 text
One Person Framework Kamalでのデプロイの簡略化 ThrusterというNginx + Let’s Encryptな ツール Solid QueueでのRedisが不要なジョブ処理 SQLiteを本番環境で使える
Slide 25
Slide 25 text
Kamalでのデプロイ 基本的にDockerとGitさえあればデプロイでき る gracefulにデプロイするためダウンタイム無し
Slide 26
Slide 26 text
Thrusterでのメンテコスト削減 NginxやApacheの代わりにRailsに導入され た Let’s Encryptで証明書の自動発行をしてく れる 証明書の自動更新のサポート
Slide 27
Slide 27 text
Solid Queueでのジョブ処理 DBをジョブキューとして使う Redisがいらない
Slide 28
Slide 28 text
SQLiteを本番環境で利用 リレーサーバで保存するデータはあまりない 参加サーバの情報や ジョブのデータ バックアップが簡単 機密データとかないのでSQLiteで充分
Slide 29
Slide 29 text
1週間で実装とデプロイ
Slide 30
Slide 30 text
作ったもの
Slide 31
Slide 31 text
ActivityPub Relay
Slide 32
Slide 32 text
機能 Mastodon/Misskeyのリレーに対応 ハッシュタグリレーとして運用できるオプション 購読サーバの管理画面 ジョブの管理画面
Slide 33
Slide 33 text
便利な点 Kamalを使っているためデプロイが非常に簡単 RedisやDBを建てる面倒くささから解放された メモリ1GB CPU 1コアでサクサク動く
Slide 34
Slide 34 text
今後の機能案 Pleroma/Akkomaのリレーへの対応 承認機能 ブロック機能 サーバ情報を取得する定期ジョブ 画像解析して該当の画像のみ配送する機能
Slide 35
Slide 35 text
今後の展望 リレーサーバの分散のためにユーザーを増やし たい ドキュメント化されていない機能などを充実 リレーサーバ自体の数も増やしたい
Slide 36
Slide 36 text
開発メンバー現状二名
Slide 37
Slide 37 text
人手が欲しい!!
Slide 38
Slide 38 text
仲間を募集中!!