95 lines
2.9 KiB
Markdown
95 lines
2.9 KiB
Markdown
+++
|
|
date = "2023-03-13"
|
|
tags = ["bluesky","atproto"]
|
|
title = "blueskyのatをdeployしてみた2"
|
|
slug = "bluesky"
|
|
+++
|
|
|
|
前回、deployしてみた感触では`token error`が出ていて、それを解消すれば良さそうに思ってたんだけど、気になる情報があったので、今回はそれにあたってみた。
|
|
|
|
atは`plc.directory`に登録しなければいけなかったみたいで、その登録ができていなかったぽい。
|
|
|
|
重要なのは`serverDid`でserverを立てる際はここに登録した値を入れる必要があるみたいです。
|
|
|
|
```sh
|
|
$ 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)さんに助けてもらいました。ありがとうございます。
|
|
|
|
https://github.com/KingYoSun/atproto-aws/tree/main
|
|
|
|
plc.directoryにdomainなどを登録して、didを取得するまでをやります。これを`serverDid`に使用する感じだと思います。
|
|
|
|
```js:packages/dev-env/src/main.ts
|
|
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')}`,
|
|
)
|
|
```
|
|
|
|
```sh
|
|
$ 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つです。環境変数を与え、動かせてみるといいかも。
|
|
|