はじめに
BitWardenをインストールする際、DBだけ既存のサーバーを使いたいな〜という場合のための備忘録です。
本編
パスワード管理ツールのBitWardenはDockerによるオンプレミス運用にも対応しています。
この場合のインストール手順については公式ドキュメントに記載されていますので、基本的に困ることはないと思います。
しかし、例えば表題のようなことをやりたくても参考になる記載を見つけられなかったため、備忘録として書いておくことにしました。
1. 公式ドキュメント通りインストールする
ただし、START BITWARDENの一番最後、updatedbだけやらないでおきます。いまの状態でこれをするとDockerコンテナのmssql上でDB初期化が始まります。
2. mssql.override.envを編集する
この中にSQLServerのsaユーザー用パスワードがあります。これはひょっとしたらいらないのかもしれません。
3. global.override.env
おなじみのSQLServerっぽいConnectionStringがあります。この中のDBホスト名およびsaパスワードを変更します。
4. ./bitwarden updatedbを実行する
このスクリプトは内部的にはbitwarden-mssqlのコンテナ内でdotnet setup.dllのようなコマンドを叩いてセットアッププログラムを走らせる仕組みになっているようです。
そのため、運用中に使うDBが外部にあっても、初回セットアップ時にはBitWarden既定のdockerコンテナを動かしておく必要があります。
5. 外部DBにVaultテーブルができたことを確認する。
bitwarden-mssqlコンテナでのセットアップスクリプトの実行が完了したら、本番DBにVaultテーブルができているか確認します。
また、実際に展開したBitWardenのウェブサイトに行って、正常にアカウント作成とログインが可能かを確認します。
6. bitwarden-mssqlのSQLServerを停止する。
SQLServerを余計に動かしたままだとかなりメモリを食うので、コンテナのentrypoint.shの最終行をコメントアウトしてSQLServerが起動しないようにします。
これだけなら他のNightly Backupなどはそのまま動いてくれるので、もしもの時も安心です。
バックアップも独自で行うなら、コンテナ自体を停止しても良さそうです。
所感
.envファイルにsaパスワードがベタ書きされているのがかなり怖いです。
これやめたいですね…やる気が出たらそこの対策をしようと思います。
その他
他にもいまの構成上、Nginxの多段プロキシ(1段目はVPS上の自前のプロキシ、2段目はBitWardenに含まれるDockerコンテナのプロキシ)が挟まっているのですが、./bitwarden setupで
- Let’s Encryptの自動更新なし
- 発行済みのSLL 証明書を持っていない
のオプションを設定し、さらに
- ポートを80/443から適当に変更
- 1段目でproxy_passにhttpsを設定
で今の所問題なく動いています。