2.9 KiB
+++ date = "2023-03-13" tags = ["bluesky","atproto"] title = "blueskyのatをdeployしてみた2" slug = "bluesky" +++
前回、deployしてみた感触ではtoken error
が出ていて、それを解消すれば良さそうに思ってたんだけど、気になる情報があったので、今回はそれにあたってみた。
atはplc.directory
に登録しなければいけなかったみたいで、その登録ができていなかったぽい。
重要なのはserverDid
でserverを立てる際はここに登録した値を入れる必要があるみたいです。
$ git clone https://github.com/syui/atproto
$ cd !$:t
# error : python, not found better-sqlite3
$ nvm use 18
$ npm config edit
python=/usr/bin/python3
$ npm i node-gyp npm lerna
$ npm i better-sqlite3
$ npm i
今回、blueskyでKingYoSunさんに助けてもらいました。ありがとうございます。
https://github.com/KingYoSun/atproto-aws/tree/main
plc.directoryにdomainなどを登録して、didを取得するまでをやります。これをserverDid
に使用する感じだと思います。
import * as cbor from '@ipld/dag-cbor'
import * as uint8arrays from 'uint8arrays'
console.log(`signingKey=${keypair.did()}`)
console.log(`recoveryKey=${keypair.did()}`)
const obj = {
type: 'create',
signingKey: keypair.did(),
recoveryKey: keypair.did(),
handle: '${ADMIN_USER_NAME}.${DOMAIN}',
service: 'https://${DOMAIN}',
prev: null,
}
const data = new Uint8Array(cbor.encode(obj))
console.log(
`sig=${uint8arrays.toString(await keypair.sign(data), 'base64url')}`,
)
$ make build
$ make run-dev-env
$ handle=admin.example.com
$ service=https://example.com
$ url=https://plc.directory/did:plc:q4ugjxbx2mp6rmnnljjystesttesttest
$ json="{
\"type\": \"create\",
\"signingKey\": \"${signingKey}\",
\"recoveryKey\": \"${recoveryKey}\",
\"handle\": \"${handle}\",
\"service\": \"${service}\",
\"prev\": null,
\"sig\": \"${sig}\"
}"
$ curl -X POST -H "Content-Type: application/json" -d "$json" $url
Hash of genesis operation does not match DID identifier: xxx
$ url=did:plc:xxx
$ curl -X POST -H "Content-Type: application/json" -d "$json" $url
Ok
適当な解説
package.json
, Makefile
からコマンド体系化がわかります。
まずは依存関係を解消するためにnpm i
かyarn install
を通さなければなりません。
それが通ったら初めてbuildなどが成功します。これはlerna run build
, make build
などがそれに当たります。
buildが通ったら、./dist/index.js
がそのままで動きます。
localhostで動かす場合やpreviewなどはmake run-dev-env
などがそれにあたります。
atprotoで重要なのはpakages/{pds, dev-env}
の2つです。環境変数を与え、動かせてみるといいかも。