🗒️
Vaultwardenのセルフホスト
自分用のBitwarden環境 (セルフホスト) の変更を実施したので,念のためメモとして残しておく。やったのはVaultwarden(旧bitwarden_rs)を使い,AWSのEC2インスタンスにインストールして自分のデバイスからアクセスするまでである。
《2021/5/25追記》
bitwarden_rsはVaultwardenに変更した。タイトルと導入は変えたが、以降は古い表現のままである。
はじめに
これまではパスワード管理としてbitwarden-serverlessを使っていた。ただし,最近メンテされておらずクライアント側のバージョンアップに追いついていない状況だったので乗り換えを検討していた。bitwarden公式イメージはリソースが必要であり,個人運用にはコストがかかるので,リソースが少なくてすむbitwarden_rsを使うことにした。
インストール方法は以下のサイトを参考にした。
だが,Caddyはバージョン2系の公式のdockerイメージが出ていたので,公式イメージを使うなど多少のアレンジを加えている。
[参考にしたサイト]
準備
AWSでbitwarden_rsを使うに当たり必要になるのは以下3点。
- AWSのEC2インスタンス→今回はt3a.nanoインスタンス (メモリ512MB) のディスク8GiBの最小限のリソース
- 当該ホストのDNSエントリ (Route 53で良い)→Let’s Encryptの証明書取得時に必要。 EC2のドメイン (compute.amazonaws.com) ではLet’s Encryptの証明書は取得できない。
- メール送信用のSMTP接続情報 (Simple Email Serviceでよい)→インストール時点では不要だが,利用の際はアカウント作成時にメールを送信するので,ないと実質使えない
EC2のインスタンスの作成とログイン
まずAWSのEC2にてインスタンスを作成する。上述の通りt3a.nanoでディスク8GBという最小リソース。
リソースが足りなくて動作しないことが懸念されたが,起動して1人で使う分には問題なさそうなのでコストを少しでも下げるべくt3a.nanoを採用した。
インスタンスが作成されたらec2インスタンスにログイン。ログインしたらとりあえずパッケージの最新化を行っておく。
DNSエントリの作成
インスタンスが作成しIPアドレスが決まったら,Route 53あたりで手持ちのドメインで作成したインスタンスに対するDNSエントリを作成する。なぜ作る必要があるかというとcompute.amazonaws.comドメインのままだとインストール時に実行されるLet’s Encryptの鍵作成が受け付けてくれないからである。
xxx.xxx.xxx.xxx -> bitwarden.example.jp
SESの設定
Simple Email Service (SES) でメールが送信できるようにしておく。以前設定した情報を今回はそのまま流用する。具体的な手順は今回は省略。
パラメータ | 値 |
---|---|
Server Name | email-smtp.us-east-1.amazonaws.com |
Port | 25, 465 or 587 |
Use Transport Layer Security (TLS) | Yes |
Authentication | (省略) |
インストール
Dockerのインストール
Dockerを用いてインストールするので,DockerとDocker Composeをインストールする。インストールしたらDockerを起動する。
Bitwarden_rsのDockerイメージ取得
今回使うイメージは,bitwardenrs/server (本体) とCaddy (フロントエンドにするWebサーバ) の2つ。手順的には冗長ではあるが,念のために手動で取得する。ちなみに,次の手順で行うdocker-compose.ymlを書いておけばpullも自動的にやってくれる。
設定ファイルの作成
稼働用のディレクトリを作成し,設定ファイルを作成する。設定ファイルはdocker-compose.ymlとCaddyfileの2つ。
設定ファイルは以下の通り。
docker-compose.yml
Caddyfile
設定変更・起動
これでセットアップは完了。あとは動かすだけ。
念のためにlogsにて正常に起動しているか確認。
まとめ
一番安いbitwardenのセルフホストが実現できたのでひとまず満足。
余談だが,試行錯誤docker-composeのup/downを繰り返していたらLet’s Encryptの証明書取得が上限を超えてbitwarden_rsが起動しなくなってしまった。通常は起動なんて何度もやらないので,安定稼働してしまえば問題はないが,対策は別途考えないといけないかも。