必要なもの
- Azure環境(無料枠でOK)
- ちょっとの予算(月100円もかからないと思う…)
構築手順
細々したもの
リソースグループに次のものを作成して下さい。
- ストレージ アカウント(最低限の設定でOK)
本当はIPアドレス指定で許可したいのですが、なぜかマウント出来なくなってしまうのでやむなくパブリック許可にしています。
(VNET統合したほうが良いんでしょうが…)
→普通にContainer Apps環境作成時にサブネット生成してVNET統合するだけで簡単にできました。
- Azure Files(ファイル共有)もついでに適当に作っておいて下さい
トランザクションが最適化されました
レベルで良いと思います。よくわかりませんが。
メインのやつ
本命のContainer Apps(コンテナー アプリ)を作りましょう。
大事な所だけ書き出します。それ以外は流れかお好みで決めて下さい。
完成したら次はAzure Filesとの連携です。
Container Apps環境
→Azure Files
からAzure Filesとファイルの読み書きが出来るようにします。
必ずアクセスモードは読み取り/書き込み
にしましょう。
名前は何でもいいですが、どうもContainer Apps側の名前と被るとおかしくなる気がします。
お次にコンテナーアプリを開いてコンテナーから編集とデプロイで環境変数等を設定します。
環境変数はこんな感じです。(メール送信にmailtrapを利用、各種重要設定はシークレットに隠しています)
db-postgresの中身はこんな感じです。
postgresql://ユーザー名:パスワード@接続先名.postgres.database.azure.com:5432/vaultwarden
ユーザー名、パスワードはAzure Database for PostgreSQL フレキシブルサーバーの作成時に決めたものを入れて下さい。接続先名は同管理画面から確認できます。
ボリュームマウントでAzure Filesをマウントしましょう。
ちなみにSQLiteで動かそうとすると何故かWALを無効にしてもエラーで起動しなくなります。よくわかりません。なのでケチケチせずAzure Database for PostgreSQLの無料枠を使いましょう。
ここまで来れば、もう利用できる状態になっているはずです。
カスタムドメインはマネージド証明書も使えるようになったので、ドメインをお持ちの方はCNAMEとTXTを登録してあげるだけですぐに使えます。
SQLiteからPostgresに移行したいんだけど?
pgloaderを使う方法が公式に案内されています。が、謎のスキーマエラーでよくわからなかったのでDBeaverでゴリ押し移行しました。
単純にDBeaverでSQLiteのデータを開いてテーブルを選択し、右クリックからエクスポートを選んだ後にエクスポート先をPostgresにしてあげるだけです。
事前にPostgresとVaultwardenが初期連携出来ていれば、後は移行先スキーマに指定すると勝手にExist判定で突っ込んでくれます。すっごい便利。
詳細はまた後日書き直します。