はじめに
fly.ioという素晴らしいクラウドプラットフォームがあります。コンテナをベースにしており、アプリケーションを簡単にデプロイできます。これを使って、Bitwarden の代替サーバであるVaultwardenをセルフホスティングしてみました。
ユーザ登録からサーバが起動するまでの初期設定を以下にメモします。Macで作業していますが、その他の環境でも大して変わらない手順でできると思います。
fly.io のサインアップ
CUIの操作ツール flyctl をインストールし、fly.io にサインアップします。
$ brew install flyctl
$ fly auth signup
ブラウザで fly.io が開くので、メールアドレスでユーザ登録します。
Billing の設定でクレジットカードを登録して 'Pay As You Go Plan' (従量課金)にします。
以前あったhobby planは廃止されました。ただし Pay As You Goでも料金が $5/月 未満であれば請求されません。私の経験ではVaultwardenを1カ月使っても $1程度で、無料で使えています。
アプリのローンチ
適当なディレクトリを作成してその下に cd し、アプリをローンチします。作成したディレクトリ名がアプリの名称(稼働した際の URL)になるので、名前は考えてつけましょう。ここでは仮に'vault'としますが、すでに同じ名称が登録されている場合には fly.io がユニークな名称を自動的に付けるようです。
$ mkdir vault
$ cd vault
$ fly launch --region nrt
nrt は成田の意味で、日本のリージョンです。これでアプリの環境が確保され、設定ファイル fly.toml が作成されます。
fly.toml の編集
ファイルの頭にアプリ名称とリージョンの指定があるので、その下に以下の設定を挿入します。
[env]
SIGNUPS_ALLOWED = "true"
[build]
image = "vaultwarden/server:latest"
[mounts]
source = "vault_data"
destination = "/data"
内部で使うポート番号を8080から80に変更します。
[http_service]
internal_port = 80
ボリュームの作成
データを置くボリュームを作成します。
$ fly volumes create vault_data --size 1
リージョンをどこにするか聞かれるので、矢印キーで nrt に移動して指定します。ボリューム名称は、設定ファイルの [mounts] の項目で指定したものです。容量は 1GB としました。
アプリのデプロイ
$ fly deploy
これで Vaultwarden のサーバが起動し、下記アドレスでアクセスできるようになります(vault の部分をアプリ名称に読み変えてください)。
https://vault.fly.dev
おわりに
Google の GCE などのサービスを使っても Vaultwarden をデプロイすることができるようですが、ここに示したように fly.io を使った手順は非常に簡単で、わずか数コマンドで完了します。