No.33, No.32, No.31, No.30, No.29, No.28, No.27[7件]
今年のアドベントカレンダーに投げる予定の内容も含め、色々走り書きしたい内容はあるけれど、うまく脳内でまとまらない(いつもの
ヘルプ系記事に追加
ActivityPub Relayに関する私的まとめの作成を開始しました。
#ヘルプ系記事 #ActivityPub Relay私的まとめ
ActivityPub Relayに関する私的まとめの作成を開始しました。
#ヘルプ系記事 #ActivityPub Relay私的まとめ
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
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
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、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ページにしか辿り着きません。
この後、初期設定が必要なのですが、それはまた次以降の記事ということで。
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ページにしか辿り着きません。
この後、初期設定が必要なのですが、それはまた次以降の記事ということで。
初心者向けの使い方の記事……なぁ(不定期n回目の検討)
まだMastodon系の方が、多少の変更が来ても類推しやすいだろうか?
Misskey系は機能が多すぎる&増えたり減ったりしやすいから、余計に悩みどころ。
あー、でももしガッツリ記事を残すのならば、kmyblueについて書きたい気持ちが強い。
今まさに使っているし、今後も知り合いが興味を示したら連れてくるかもしれない的な意味でも、取説はあると便利。
まだMastodon系の方が、多少の変更が来ても類推しやすいだろうか?
Misskey系は機能が多すぎる&増えたり減ったりしやすいから、余計に悩みどころ。
あー、でももしガッツリ記事を残すのならば、kmyblueについて書きたい気持ちが強い。
今まさに使っているし、今後も知り合いが興味を示したら連れてくるかもしれない的な意味でも、取説はあると便利。


