Blueskyの開発用サーバーの起動方法
ここではBlueskyの開発サーバーの起動方法について紹介します。
環境を構築する
READMEによると、Node.jsのv18が必要です。nodeのバージョンはあげすぎても失敗します。それはbetter-sqlite3が対応しているバージョンで上限は抑えられるからです。現在は9.6あたりが使われているため、Node.jsはv22あたりまでしかビルドできません。また、better-sqlite3のビルドにはPythonも使われますが、distutilsを使うため、V3.12未満である必要があります。またはdistutilsをインストールする必要があります(追加した場合については未確認)。asdfを使うと、次のように環境構築できます。
asdf install nodejs 18.20.8
asdf set nodejs 18.20.8
corepack enable
corepack prepare pnpm@latest --activate
asdf install python 3.11.14
asdf set python 3.11.14
atprotoはpnpmを使うのでcorepackを使ってインストールしています。(corepackは新しいバージョンのnodeに同梱されなくなっていますが)
とりあえず開発サーバーを起動する
開発サーバーはbluesky-social/atprotoにあって、現在の最新リリースバージョンで動かすには、次のようにすると起動できます。(Dockerを使っているようです)
$ git clone git@github.com:bluesky-social/atproto.git
$ cd atproto
$ git checkout -b develop refs/tags/@atproto/lex@0.0.16
$ make deps
$ make build
$ make run-dev-env-logged
...
[ created by Bluesky ]
👤 DID Placeholder server started http://localhost:2582
🌞 Personal Data server started http://localhost:2583
🗼 Ozone server started http://localhost:49903
🌅 Bsky Appview started http://localhost:2584
🤖 Feed Generator started http://localhost:49982
🤖 Feed Generator started http://localhost:49985
iOSアプリから利用するときはhttp://localhost:2583にxrpc APIを呼ぶと良いようです。
リリースバージョンの見つけ方について
atprotoリポジトリを見ると分かるのですが、Releasesが空になっています。Version packagesというタイトルのPRからリリースバージョンのコミットを見つけることができます。tagsから探すこともできるのですが、1つのコミットに対して複数のタグが付けられていて見つけ難いかもしれません。
$ git log --oneline
6ae3cf613 (HEAD -> develop, tag: @atproto/tap@0.2.4, tag: @atproto/lex@0.0.16, tag: @atproto/lex-installer@0.0.16, tag: @atproto/lex-builder@0.0.15, origin/main, origin/HEAD, main, develop, atproto_lex_0_0_16) Version packages (#4637)
619068fb8 Expose LexDefBuilder and allow passing moduleSpecifier (#4610)
95e377504 Create index for fetching mod events by creator (#4630)
379cae698 (tag: @atproto/pds@0.4.209, tag: @atproto/oauth-client-browser-example@0.0.10, tag: @atproto/dev-env@0.3.209, tag: @atproto/bsky@0.0.215, tag: @atproto/api@0.18.21, atproto_api_0.18.21) Version packages (#4625)
60f84ebe4 increase draft char limit (#4633)
...
データベースへの接続
PostgreSQLが使われていて、以下に接続情報が書いてあります。
テストユーザー
上記方法で起動した場合、すでに以下に書かれているユーザーが、テスト用に登録されています。
handleはalice.test、パスワードhunter2でAliceとしてログインすることができます。
Discussion