ソースコードから API サーバーを設置する
必要環境
OS は Ubuntu Server 20.04 x64 で動作確認しています。他の Linux ディストリビューションや、Windows、macOS でもおそらく動くと思いますが、bcryptパッケージなどの影響で追加の作業が必要になる可能性があります。
API サーバーの稼働自体は Google Compute Engine の E2-micro 程度のスペックでも可能ですが、npm パッケージのインストールにはメモリ 1 ~ 2GB 程度が必要になることが確認されています。メモリが少ない場合、一時的にスワップ領域の割り当てなどを行うか、Docker イメージからの起動等を検討してください。
セットアップ方法
ここで解説する作業はサーバー上で行ってください。
Node.js の LTS もしくは Maintenance に該当するバージョン(2022年11月現在、v18 が LTS フェーズ、v16 と v14 が Maintenance フェーズです)をインストールしてください。インストールが完了したら、下のコマンドを実行してインストールできているか確認します。
$ node --version
また、npm もインストールできているかどうかを次のコマンドで確認します。通常は Node.js と一緒にインストールされます。
$ npm --version
次のコマンドで yarn をインストールします。
$ npm install -g yarn
Flocon は yarn のみに対応しています。npm や pnpm などには対応して いません。
必要であれば、API サーバーのソースコードをダウンロードするディレクトリに移動します。
API サーバーのソースコードをダウンロードします。様々な方法がありますが、ここでは git clone
を用いてダウンロードする方法を解説します。git をインストールした後、次のコマンドを実行して GitHub からソースコードをダウンロードします。なお、この例では -b
には release
ブランチを指定していますが、代わりにタグを指定することもできます。
$ git clone https://github.com/flocon-trpg/servers.git -b release --depth 1
main
ブランチは開発用ブランチであるため、開発者以外の利用は推奨されません。
ダウンロードが完了したら、servers/apps/api-server
に移動します。
$ cd servers/apps/api-server
次のコマンドを実行して、必要な npm パッケージをインストールします。なお、これには合計 600MB 程度のストレージ空 き容量が必要です。また、これには数分から十数分程度の時間がかかることがあります。
$ yarn workspaces focus
yarn workspaces focus
の代わり に yarn install
を実行しても構いません。ただし、yarn install
の場合は Web サーバーのみに使用される npm パッケージもインストールされるため、ストレージの使用量が増加します。
.yarnrc.yml
ファイルを編集して yarn PnP モードを有効化することで、ストレージの消費量を節約することもできます。設定は yarn workspaces focus
もしくは yarn install
を実行することで反映されます。
v0.7.10 以前では npm パッケージのインストールの次に yarn run build
を実行する必要がありましたが、v0.7.11 以降ではビルドされたファイルが付属するようになったため実行する必要はなくなりました。
servers/apps/api-server
ディレクトリ内に.env.local
ファイルを作成して、環境変数のページを参照して API サーバーの設定情報を入力して保存します。
API サーバーを動かすにはデータベースのマイグレーションを事前に行う必要があります。手動でデータベースのマイグレーションを行う場合は、次のコマンドを実行します(環境変数の AUTO_MIGRATION
を有効化している場合はこの作業は必要ありません)。
$ yarn run migration-up
次のコマンドを実行して、サーバーが正常に稼働するかどうか確認します。
$ yarn run start
これで API サーバーの導入は完了です。
なお、通常は systemctl などを用いて API サーバープログラムが自動的に起動されるように設定すると思いますが、その設定に関してはここでは省略します。
また、Certbot などを使用して常時 SSL 化することも推奨します。