はじめに
パスワード管理、やってますか?
私は、数年前まで同じパスワードを使いまわして利用していました。
パスワード漏洩のリスクもですが、いままでどんなサービスでパスワードを入力したのかすら忘れてしまうこともあって怖いですよね。
そんなこんなで、しばらく前からBitwardenの有料プランを使っていたのですが、vaultwardenを知り、移行してやろうと考えたわけです。
Bitwardenを利用する主な利点としては、
- オープンソースである
- 本家self-host版よりも軽量
- 自前でデータをすべて管理できる
- Bitwardenでは有料限定の機能(パスキーやOTPの統合管理)も無料で利用できる
- 独自のドメインを使える
みたいな感じでしょうか。
本家にも、self-host版もあるのですが、そちらと比較してvalutwardenは数倍軽く、GCPの無料枠やVultrの無料枠なんかでも全然快適に動きそうです。
用意するもの
- Cloudflareアカウント
- ドメイン
- サーバー
構築
構築していきます。
Cloudflare Argo Tunnelの設定
CloudflareダッシュボードからサイドメニューよりZero Trustダッシュボードをクリックし、開きます。
Access > Tunnels より Create a tunnelをクリックします。
自分が分かる適当な名前をつけて、Save tunnelを押下します。
するとこんなページに遷移するので、表示されるコマンドのトークン部(sudo cloudflared service install
の後ろの文字列)のみをコピーしておきます。
Nextを押下し、Vaultwardenを外部公開するためのURLとの紐付けの作業を行います。
入力する項目は以下のとおりです
- Type : HTTP
- URL : vaultwarden:80
- Domain : 用意した任意ドメイン
- Subdomain : 必要でなければ空欄
ここで指定したFQDNは後述の手順に必要となるので覚えておきましょう。
入力が完了したら、Save test tunnelを押下し作業を終了します。
Vaultwardenの構築
今回は、Docker上に構築するため、まずDockerを導入します。
curl https://get.docker.com/ | sudo sh
Docker公式の用意しているシェルスクリプトをパイプしてあげるだけでインストールは完了です。
次に、vaultwaden用のディレクトリを作成し、移動します。
mkdir vaultwarden
cd vaultwarden
compose.yamlを作成/編集します。
vim compose.yaml
services:
vaultwarden:
image: vaultwarden/server
container_name: vaultwarden
environment:
- TZ=Asia/Tokyo
- SIGNUPS_ALLOWED=true
- INVITATIONS_ALLOWED=true
- WEBSOCKET_ENABLED=true
- SHOW_PASSWORD_HINT=false
- YUBICO_CLIENT_ID=[Yubico Client ID]
- YUBICO_SECRET_KEY=[Yubico Secret Key]
- VIRTUAL_HOST=[前項で設定したFQDN (e.x.) hoge.example.com)]
- VIRTUAL_PORT=80
- ADMIN_TOKEN=[任意のトークン]
volumes:
- vaultwarden_volume:/data
restart: always
tunnel:
restart: always
image: cloudflare/cloudflared
command: tunnel run
environment:
- TUNNEL_TOKEN=[前項で控えたCloudflare Argo Tunnelの接続トークン]
volumes:
vaultwarden_volume:
今回は、Yubikeyを認証に使用したので、それ関連の環境変数も定義していますが、不要であれば削除してください。
Client IDとSecret Keyはこちらから取得できます。
ADMIN_TOKENに利用する文字列は、以下のコマンドを用いることで発行できます。
openssl rand -base64 48
すべての手順が完了したら保存し、起動します。
docker compose up -d
確認する
ブラウザから、https://FQDN/admin
へアクセスし、先程指定したADMIN_TOKENを入力します。
ログインできたら、ユーザ登録やパスワードのインポートなど、設定を済ませましょう。
ちなみに、Bitwardenの完全互換ですので、公式の拡張機能なども利用することができます。
さいごに
Bitwardenのアプリ・拡張機能がすべてそのまま使えることもあり、どのデバイスでも使用でき、かなり便利です。
特に、OTPとパスキーが扱えていいです。(無料のもので、OPTとパスキーに対応してるのは多分ないんじゃないかな)
以前から軽量とは聞いていましたが、実際に1 CPU/0.5MBの環境で動かしてみて、これまでにリソース使用量が50%を上回ることはありませんでした。めっちゃ軽量です。
パスワード管理に悩まれている方は是非一度試してみてください。
それでは。