VaultWardenをubuntu上にセルフホストする
Page content
「VaultWardenってなんだ?」と「導入目的」
- OSSなのでセルフホストできるパスワードマネージャー。
- 色々なサイトのパスワードを管理、パスワードの自動投入とかしてくれる、便利。
- 本家であるbitwardenに比べ、vaultwardenは軽量
- 互換があるので、birwardenのクライアントやブラウザ拡張が使える
- 今、LastPassに課金していているので、少しでもVPS代を回収するために自前化してみよう
- dockerなので比較的導入は容易(ただしハマりポイントもいくつかあった)
導入手順①コンテナ準備
docker,docker-composeはいれておく(割愛)
Using Docker Compose · dani-garcia/vaultwarden Wiki · GitHub
$ adduser vaultwarden
$ su - vaultwarden
$ mkdir vw
$ nano docker-compose.yml
- apacheのreverse proxy経由で公開するので、80ではなく60080でlisten
- 証明書発行とDNS登録面倒なので、サブディレクトリでサービス
- コンテナからlocalのPostfixにドメイン名でアクセスするためにextra_hostsの設定
- メール配信が必須なので、事前に以下を実施
- SMTP-AUTH対応
- DKIM対応(gmail等主要なメールサーバ宛への送信に必要)
- TLS対応
docker-compose.yml
version: '3'
services:
vaultwarden:
container_name: vaultwarden
image: vaultwarden/server:latest
restart: unless-stopped
networks:
- vw_my_network
volumes:
- ./data/:/data/
ports:
- 60080:80
environment:
- DOMAIN=https://example.com/vaultwarden/
- LOGIN_RATELIMIT_MAX_BURST=10
- LOGIN_RATELIMIT_SECONDS=60
- ADMIN_TOKEN='-----'
- ADMIN_RATELIMIT_MAX_BURST=10
- ADMIN_RATELIMIT_SECONDS=60
- SENDS_ALLOWED=true
- EMERGENCY_ACCESS_ALLOWED=true
- WEB_VAULT_ENABLED=true
- SIGNUPS_ALLOWED=true
- SIGNUPS_VERIFY=true
- SIGNUPS_VERIFY_RESEND_TIME=3600
- SIGNUPS_VERIFY_RESEND_LIMIT=5
- SMTP_HOST=example.com
- SMTP_FROM=vaultwarden@example.com
- SMTP_SECURITY=starttls
- SMTP_USERNAME=vaultwarden@example.com
- SMTP_PASSWORD=smtp_auth_password
- SMTP_FROM_NAME=vaultwarden
- SMTP_PORT=587
extra_hosts:
- "example.com:xxx.xxx.xxx.xxx"
networks:
vw_my_network:
driver: bridge
導入手順②コンテナの作成と起動
起動確認したら一旦終了しておく。
sudo docker-compose up
vaultwarden@moooi:~/vw$ docker-compose up
vaultwarden is up-to-date
Attaching to vaultwarden
vaultwarden | /--------------------------------------------------------------------\
vaultwarden | | Starting Vaultwarden |
vaultwarden | | Version 1.32.0 |
vaultwarden | |--------------------------------------------------------------------|
vaultwarden | | This is an *unofficial* Bitwarden implementation, DO NOT use the |
vaultwarden | | official channels to report bugs/features, regardless of client. |
vaultwarden | | Send usage/configuration questions or feature requests to: |
vaultwarden | | https://github.com/dani-garcia/vaultwarden/discussions or |
vaultwarden | | https://vaultwarden.discourse.group/ |
vaultwarden | | Report suspected bugs/issues in the software itself at: |
vaultwarden | | https://github.com/dani-garcia/vaultwarden/issues/new |
vaultwarden | \--------------------------------------------------------------------/
vaultwarden |
導入手順③Apache経由でHTTPS化
valutwarden自体でhttps対応もできるようだが、検索を見る限りあまり推奨しないという記述もあるのでapache2のmod_proxyでReverse Proxy経由で公開することにする。
https://example.com/vaultwarden にアクセスすると、ローカルのListenに60080に転送する。(VaultWardenはデフォルトだと80でlistenして、すでに動いているapache2やnginxと競合するのでdocker-compse.ymlでポートを変更している。)
/etc/apache2/site-enabled/ssl.conf
#bitwarden
<Location /vaultwarden>
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /notifications/hub(.*) ws://localhost:60080/$sublocation/notifications/hub/$1 [P,L]
ProxyPass http://localhost:60080/vaultwarden
ProxyPreserveHost Off
RequestHeader set X-Real-IP %{REMOTE_ADDR}s
RequestHeader setifempty Connection "Upgrade"
RequestHeader setifempty Upgrade "websocket"
</Location>
公式ドキュメントにあるProxy設定例をそのまま利用。
$ systemctl restart apache2
URLにアクセスしてVaultWardenのログイン画面がでていればOK。このままだと、誰でもアカウント発行できるので、docker-ccompose.yamlの下記あたりをfalseにしておく。
- SIGNUPS_ALLOWED=false