Cloudflareに置く(SkyWay版)
SkyWay版のAxeで遊ぶためのトークン発行サーバーを、Cloudflare Workersに置く手順です。部屋のサーバー(サーバー版)と同じWorkerのコードで、SkyWayのアプリIDとシークレットキーを入れると、トークンを発行します。ターミナルでコマンドを打てる人向けで、かかる時間は30分ほどです。
Axeから見た動きは、PHP版・Vercel版と同じです(→ SkyWay版のしくみ)。同じWorkerにログインの3つも入れれば、部屋のサーバーとしても使えます(→ Cloudflareに置く(サーバー版))。
Deployボタンは使いません
Cloudflareに置く(サーバー版)のDeployボタンは、ログインの3つを入れないと先に進めません。SkyWay版だけを置くときは、このページのとおり、手元からwranglerでデプロイします。
0. 用意するもの
- Cloudflareのアカウントと、R2とAnalytics Engineを使い始める操作(→ Cloudflareに置く(サーバー版)の手順1と2)
- SkyWayのアプリケーションIDとシークレットキー(→ SkyWayのアプリを作る)
- AxeのOrigin(→ 設置の準備)
- Node.jsとGitが入ったパソコン
R2は、部屋のサーバーが画像と音声を置くところです。SkyWay版だけなら使いませんが、同じWorkerのコードなので、最初のデプロイで空のバケットが1つ作られます。空のバケットに料金はかかりません。
1. デプロイする
git clone https://github.com/Xelltis/udonarium_axe_backend.git
cd udonarium_axe_backend/apps/cloudflare
npm ci
npx wrangler login
npx wrangler deploy --name my-udonarium-skyway \
--var ACCESS_CONTROL_ALLOW_ORIGIN:https://axe.example.com--nameでWorkerの名前を決めます。WorkerのURLはhttps://<この名前>.<アカウントのサブドメイン>.workers.devになります。--varで、AxeのOriginを入れます。2つ以上あるときはカンマで区切ります。- 最後に出るURLを控えます。
2. SkyWayの2つを入れる
SkyWayのアプリケーションIDとシークレットキーを、Workerのシークレットとして入れます。シークレットは、デプロイし直しても残ります。
npx wrangler secret put SKYWAY_APP_ID --name my-udonarium-skyway
npx wrangler secret put SKYWAY_SECRET --name my-udonarium-skywayコマンドを打つと値を尋ねられるので、それぞれ貼り付けます。2つはそろえて入れます。片方だけのときや、入れていないときは、トークンを頼まれると500 CONFIG_INVALIDを返します。
ロビーの数とトークンの有効期間を変えるときは、SKYWAY_UDONARIUM_LOBBY_SIZEとSKYWAY_TOKEN_TTL_SECONDSも同じように入れます(→ 設定項目)。
3. 動いているか確かめる
AxeのOriginを付けて、/v1/statusを開きます。
curl -H 'Origin: https://axe.example.com' https://my-udonarium-skyway.example.workers.dev/v1/statusOKと返れば、トークンを発行できます。{"error":{"code":"CONFIG_INVALID",…}}が返るときは、手順2の2つが入っていません。ORIGIN_FORBIDDENが返るときは、手順1の--varのOriginと、curlに付けたOriginが違います。
4. Axeにつなぐ
Axeのconfig.jsonのbackend.urlに、手順1で控えたURLを入れます(→ Axeの設定)。transportは書かないか、skywayにします。
GitHub Actionsで自動でデプロイする
このリポジトリのGitHub Actionsでデプロイしている人は、EnvironmentのシークレットにSKYWAY_APP_IDとSKYWAY_SECRETを足すと、次のデプロイからトークンを発行します(→ 自動デプロイ)。ログインの3つを入れないEnvironmentは、SkyWay版だけのWorkerになります。
更新するとき
このリポジトリをgit pullしてから、手順1のnpx wrangler deployをもう一度実行します。シークレットはそのまま残ります。