No.31, No.30, No.29, No.28, No.27, No.26, No.257件]

Icon of naoki
ActivityPub Relayチャレンジ2回目

 S.H.さん( @S_H_@gamelinks007.net )が、うまくすれば月550円からリレーサーバが運用できるかも、ということで作成されたActivityPub Relayのデプロイに挑戦した、 #わーさんがやってみた シリーズ2回目の記事です。

 話題にしているActivityPub Relayのソースコードはこちら。
https://github.com/S-H-GAMELINKS/activity-pub-relay

 そして、デプロイするまでの初回記事はこちらです。

デプロイ後の初期設定
 なんと、VPSにログインしにいくことなく、手元のPCでできてしまいます。
 自分のPCのactivity-pub-relayディレクトリ内で以下のコマンドを使用しましょう。

kamal console

 なんと、これでVPS側のRailsのアプリケーションのコンソールを起動できるそうです。
 実際、何やら実行結果が流れた後に、コマンドが打てるようになります。

 初期設定としては、メールアドレスとパスワードが必要です。
 実際は、それぞれ自分のメールやパスワードを使用してください。

User.create!(email_address: "relay@example,com", password: "relay_example_password")

 入力時は、このメールアドレスとパスワードをそれぞれ囲っている記号に十分注意してください。
 似たような記号がありますが、間違えるとこんな感じでエラーになります。

(activity-pub-relay):1: syntax error, unexpected instance variable, expecting `do' or '{' or '(' (SyntaxError)

 うまく設定できれば https:// <リレーサーバのドメイン> /session/new にてログインできるようになりますので、ブラウザからログインに行きます。
 ダッシュボードに接続されれば、初期設定はできています。

kamal consoleの終わらせ方
 わーさんはコントロールキー+Dにて終わらせました。
 exitと打ってエンターキーでも終了できるそうです。

初期設定後の操作
リレーへのサーバーの追加・強制脱退方法
 参加させたいサーバーのコントロールパネルにてリレーの設定項目に https:// <リレーサーバのドメイン> /inbox を追加すると、自動的にリレーに参加していきます。

 v0.3.0では、ダッシュボードからSubscribe serversというリンクを辿れば、参加サーバーの一覧が確認できます。
 サーバー名をクリックすることで、強制脱退や情報の再取得が可能なメニューにアクセスできます。

ジョブキューの確認方法
 v0.3.0では、ダッシュボードからjob dashboardのリンクを辿れば閲覧できます。

 なんと、このリレーサーバー、終わったジョブをデータベースから定期的に自分で削除する機能があり、つまりその分データベースの肥大化が抑えられるというエコ仕様。
 うまくすれば月550円(KAGOYAさんの最小プラン)からリレーサーバが運用できるかも、というのはつまりそういうことのようです。

サーバーのアプデ
 v0.3.0以降にデプロイされたサーバーであれば、基本的にタグに追従し、環境をアプデしていけば良さそうです。
 以下、手元のPCにて行いましょう。

⓪Rubyのバージョンアップ(必要時)
rbenv install <バージョン数字>
rbenv global <バージョン数字>


①更新内容の確認とソース変更
cd activity-pub-relay
git fetch --tags
git checkout <新しいタグ>


補足:gitがdetached HEADの状態であるというコメントについて
(『さばかんライフ!』原稿から、多少の文言を今回の仕様に合わせて変更しています。本文のノリを確認したいあなたにも!)
 gitというシステムを使うことでプログラムなどのバージョン管理ができますが、例えば同じプログラムで安定版と開発版を並行して取り扱いたいときに、ブランチという仕組みで枝分かれさせて管理していることが多いです。
 もしプログラムの開発に関わっている場合は、このブランチを追いかけて、変更を取り入れたり提案したりします。

 一方で、タグという、ここでバージョンを分けるよ!という目印となる仕組みもあり、今回はMastodonなどと同様に、このタグのついたまさにその瞬間のプログラムを自分のPCに引っ張ってきて更新するようなコマンドを採用しています( `git checkout <新しいタグ>` 、が該当コマンドで、これを実行したらソースが置き換わっています)。
 このコマンドの中には、どのブランチを追いかける、という情報は含まれていません。

 ブランチを追いかけずに特定のバージョンだけをピンポイントで更新すると、その後、そのバージョンに変更を加えても、提案する先の情報がなく、変更の提案ができません。よって、gitから、ブランチの情報がないよ!とコメントが出されます。これがdetached HEADの正体です。
 無改造の場合は、公式にタグで指定された更新を追いかけるだけで問題ないと思われますので、コメントが出てもスルーしました。

②Rubyパッケージアップデート
bundle install

③VPSへの転送
kamal deploy
Icon of naoki
ActivityPub Relayチャレンジ初回編

 S.H.さん( @S_H_@gamelinks007.net )が、うまくすれば月550円からリレーサーバが運用できるかも、ということで作成されたActivityPub Relayのデプロイに挑戦した、 #わーさんがやってみた シリーズ初回分の記事です。
 多分、2回目とか出てきます。

 ActivityPub Relayのソースコードはこちら。
https://github.com/S-H-GAMELINKS/activity-pub-relay

大まかな手順
 自分の手元のPCにて諸々を準備した後、Dockerを利用したKamalによりVPSに持っていく流れです。

準備するもの
  • 先に準備する諸々を入れられる自分のPC(スマホでは無理と思います)
  • Dockerアカウント
  • VPS


①自分のPCにDocker、Rubyを入れます。
 わーさんはMacBook Airを使いましたが、多分開発されてるS.H.さんはWindowsのような気がしますし、Windowsでも大丈夫と思います。
→追記:Windows(WSL/Ubuntu 22.04)での開発だそうです。


 Dockerはアカウントの確保が必要、リポジトリ作成は不要です。
 入れたDockerアプリを起動してログインしておくことを忘れないように(わーさんは忘れました)
https://www.docker.com/ja-jp/


 RubyについてはわーさんはrbenvをHomebrew経由で入れました。
https://github.com/rbenv/rbenv

 Ruby 3.3.6が必要なので、入れておきましょう。

rbenv install 3.3.6


 他のプロジェクトがない場合は、全体を3.3.6にしておいた方が、後で関連スクリプトをbundle installで入れるのにbundlerのバージョンで引っかかりにくくなります。
 わーさんは、先にコードをもらってきてローカルだけにRuby 3.3.6を指定した結果、PC内のデフォルトが2.6.0だったみたいで最新のbundlerが使えず、引っかかりました。

rbenv global 3.3.6


 ついでに、そのbundlerも念の為に確保しておきましょう。

gem install bundler -v 2.5.23

②ソースコードを持ってきて、関連スクリプトも展開します。
 なるべく浅い階層、できれば日本語の混ざらない場所が無難と思います(深い階層に持って行った結果、バグったわーさん談)
 MacBook Airでは、Finderなどでフォルダに右クリック相当の動作を行うことで『フォルダに新規ターミナル』が出せてしまうので、うっかり深いところに作りがちですが……。

git clone https://github.com/S-H-GAMELINKS/activity-pub-relay.git
cd activity-pub-relay
bundle install


③Railsで生成される暗号鍵を生成し、予め控えておきましょう。
 実は、初回(v0.2.0)では不具合があったようで、散々引っかかりました……。
 現在(v0.3.0以降)は解消されています(わーさんも実験済みです)ので、手順をしっかり追えば大丈夫でしょう。

 Railsはsecret_key_baseという暗号化の鍵を生成し、機密情報をその鍵で暗号化してしまうので、確保が必要です。

EDITOR=<Your Editor> bin/rails credentials:edit

 この<Your Editor>については、各々の使いやすいエディターを指定すると良いでしょう。
 コンソール内に鍵となる文字列が表示されますので、絶対必ず忘れずにメモしておきましょう。
 Kamalに渡す必要があり、設定として記載する必要が出てきます。

④VPSなどの準備をします。
 月額550円、は、KAGOYAさんの最小プランの場合と思われます。
 IPの確保、SSH鍵の確保、DNSの設定など行いましょう。

 SSH鍵をターミナルに登録するには、以下のコマンドが便利です。

ssh-add <SSH Private Key Path>

 Kamalを使うのにもSSH鍵は必要なので、この段階で登録しておくと楽だと思います。


 VPSにもDockerを入れておきます。

sudo apt update
sudo apt upgrade -y
sudo apt install -y docker.io curl git
sudo usermod -a -G docker <Server Username>


 この<Server Username>については、VPS側での作業ユーザーを設定してdockerとグループ化することが必要です。

⑤DockerHubのAPIトークンを作成します。
 これはDockerHubのページ右上から行けるAccount SettingsのSecurityという項目内、Personal access tokensにて作成可能です。
 権限は、Read / Write permmisionが必要とのことです。
https://hub.docker.com

 確保したトークンも、先ほどの暗号鍵同様に、メモして控えることを忘れずに。

⑥Kamalの設定ファイルを作成します。
 ソースコード中の.env.sampleをテンプレートとしてコピー、必要な情報を記載して.envとして作成・保存します。
 activity-pub-relayディレクトリ内にいることを確認の上でコマンドを入力しましょう。

cp .env.sample .env

SERVER_IP=<Server IP>
SERVER_USERNAME=<Server Username>
SERVER_SSH_PORT=<Server SSH Port>
LOCAL_DOMAIN=<Server Domain>
KAMAL_REGISTRY_USERNAME=<Registry Username>
KAMAL_REGISTRY_PASSWORD=<Registry Password>
SECRET_KEY_BASE=<secret_key_base value>


 サーバードメインにはhttps://は不要です。
 また、KamalはDockerを利用していますので、上記のKAMAL_REGISTRY_部分にはDockerでのユーザーネーム、及び先ほど作成したトークンを記載します。

⑦サーバーをデプロイします。
 コマンドとしては、kamal setupです。
 これも、activity-pub-relayディレクトリ内で入力します。

 うまく行っていれば、数分くらいでデプロイが完了します、きっと(散々エラーに引っかかった思い出ばかりで時間がわからないわーさん)

 以降、更新があった時は、kamal deployにて更新可能なようです。


 なお、この時点で喜び勇んで設定したアドレスに接続してみても、見事に簡素な404ページにしか辿り着きません。
 この後、初期設定が必要なのですが、それはまた次以降の記事ということで。
Icon of naoki
『さばかんライフ!』紹介ページにFediLUGでの発表資料追加
 動画もスライド画像も追加しました。
 スライド画像を追加した関係で、リンク集にも追加があります。
#さばかんライフ! #ヘルプ系記事 #FediLUG
Icon of naoki
 初心者向けの使い方の記事……なぁ(不定期n回目の検討)
 まだMastodon系の方が、多少の変更が来ても類推しやすいだろうか?
 Misskey系は機能が多すぎる&増えたり減ったりしやすいから、余計に悩みどころ。

 あー、でももしガッツリ記事を残すのならば、kmyblueについて書きたい気持ちが強い。
 今まさに使っているし、今後も知り合いが興味を示したら連れてくるかもしれない的な意味でも、取説はあると便利。
Icon of naoki
『さばかんライフ!』用のページ作成を開始
 各種頒布サイトへのリンクを繋げました。
 内容の大まかな紹介を追記するかどうかは、現時点では未定です。
#ヘルプ系記事 #さばかんライフ!
Icon of naoki
はてなブログじゃなくても設定できるのかテスト!
参考記事は、以下。

はてなブログの記事の著者としてMastodonアカウントを設定する方法 - await wakeUp();
https://sublimer.hatenablog.com/entry/2024/11/10/170413

てがろぐの場合はスキンに仕込めば(独自ドメインでは)可能なようにも思うけど、実際のところどうなのかと思って実験。

#わーさんがやってみた
Icon of naoki
そう言えば報告してなかった。
#技術書典17 、新刊抱えて、出ます。

『さばかんライフ!〜Fediverseへサーバーを建てるところから、閉鎖して卒業するまでの走り書き〜』

2023年春先くらいから鯖缶の世界に足を踏み入れた、非技術職で創作趣味を持つわーさんによる、ちょっとくらいは網羅的だと思いたい鯖缶忘備録みたいな本です。

11/2(土)から11/17(日)まで、オンラインではイベントサイトにてお求めいただけます。
また、11/3(日・祝)11時~17時は、池袋・サンシャインシティ 展示ホールD(文化会館ビル2F)にて入場無料(事前登録必要)のオフラインイベントでも有料頒布します。

PDF版は1000円、紙本とのセットはオンライン1800円、会場1500円です。
A5本文200ページ(背幅1cm)のちょぴっと厚みのあるイメージ。

書籍情報URL https://techbookfest.org/product/3iPwMejxatReB2dihiAnPW

#さばかんライフ!

■Share

MaMiShare

■旅空ノ夢(Misskey):

編集

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■新着画像リスト:

全1個 (総容量 119.9KB)

■日付検索:

■カレンダー:

2024年11月
12
3456789
10111213141516
17181920212223
24252627282930

■カテゴリ:

■最近の投稿:

最終更新日時:
2025年10月12日(日) 06時41分26秒〔103日前〕