Vaultwarden:独自のパスワードマネージャーをVPSにインストールする
Vaultwardenを使うと、パスワードを自分のサーバーに保存し、パソコン、スマートフォン、ブラウザ間で同期できます。利用するのはBitwardenの公式アプリと拡張機能で、そこに自分のサーバーのアドレスを指定します。
以下では、Vaultwardenに必要なVPS、Docker Composeを使ってUbuntu上で起動する方法、新規ユーザー登録を無効にする方法、HTTPSの設定、バックアップの構成について説明します。
5つの手順でVaultwardenを導入する
最小限の導入手順は次のとおりです。
- Ubuntuを搭載したVPSを作成し、
vault.example.comなどのサブドメインを向けます。 - DockerとDocker Composeをインストールします。
- VaultwardenとCaddyを起動し、HTTPSを自動設定します。
- 最初のアカウントを作成し、新規ユーザー登録を無効にします。
- 二要素認証、アップデート、バックアップを有効にします。
個人用の保管庫や少人数の家族で使う場合は、内蔵のSQLiteデータベースで十分です。通常、別途PostgreSQLサーバーを用意する必要はありません。
Vaultwardenとは
Vaultwardenは、Rustで書かれたBitwarden APIの非公式なサーバー実装で、セルフホスト環境への導入を想定しています。Webインターフェース、モバイルアプリ、デスクトップアプリ、ブラウザ拡張機能、CLIなど、Bitwardenの公式クライアントと互換性があります。
保管庫のデータは、サーバーに送信される前にユーザーの端末上で暗号化されます。VPSは暗号化されたデータベースを同期しますが、マスターパスワードを知ることはなく、紛失した場合に復元することもできません。
VaultwardenはBitwardenの公式製品ではありません。アップデート、可用性、HTTPS、バックアップ、VPSのセキュリティは、所有者自身が管理する必要があります。
VaultwardenとBitwardenの違い
| 項目 | Bitwarden Cloud | Vaultwarden |
|---|---|---|
| サーバー | Bitwardenのインフラ | 自分のVPSまたは自宅サーバー |
| アプリ | Bitwardenクライアント | Self-hostedモードの同じクライアント |
| 保守 | プロバイダーが実施 | 所有者が実施 |
| バックアップの管理 | サービスの制限を受ける | 完全に管理可能 |
| 導入 | アカウント登録 | ドメイン、Docker、VPSの設定 |
Vaultwardenは、サーバー側を自分で管理したい人や、Linuxの更新とバックアップの確認を行える人に適しています。管理作業をしたくない場合は、クラウドサービスのほうが実用的です。セルフホストにしただけで自動的に安全になるわけではなく、責任が所有者に移るということです。
Vaultwardenのサーバー要件
個人利用向けの現実的な初期構成は次のとおりです。
- 1 vCPU;
- 1〜2 GB RAM;
- 10〜20 GBのSSDまたはNVMe;
- Ubuntu 24.04 LTS;
- パブリックIPとドメイン;
- 開放された80番および443番ポート。
これはUbuntu、Docker、Caddy、アップデートのために余裕を持たせた実用的な構成であり、プロジェクトの厳密な最低要件ではありません。数十人のユーザー、大量の添付ファイル、複数のコンテナを扱う場合は、2 GB以上のRAMを選ぶほうがよいでしょう。
VaultwardenをVPSにインストールする方法
この例ではUbuntu 24.04とサブドメインvault.example.comを使用します。すべてのファイル内で、自分のアドレスに置き換えてください。
1. DNSを設定し、Ubuntuを準備する
VPSのIPv4アドレスを指すDNSのAレコードを作成します。その後、SSHで接続します。
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable新しい接続が正常に機能することを確認するまで、現在のSSHセッションを閉じないでください。
2. DockerとDocker Composeをインストールする
Dockerの公式リポジトリを追加します。
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version3. 設定を作成する
mkdir -p /opt/vaultwarden
cd /opt/vaultwardencompose.yamlを作成します。
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data:/data
caddy:
image: caddy:2-alpine
container_name: vaultwarden-caddy
restart: unless-stopped
depends_on:
- vaultwarden
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/configCaddyfileを作成します。
vault.example.com {
reverse_proxy vaultwarden:80
}外部に公開されるのはCaddyだけです。VaultwardenコンテナにはDockerネットワーク内からアクセスでき、データは/opt/vaultwarden/vw-dataに保存されます。現在の構成では、WebSocket用の別ポートは必要ありません。
4. Vaultwardenを起動する
docker compose up -d
docker compose ps
docker compose logs --tail=100 caddyhttps://vault.example.comを開きます。DNSがすでにVPSを指しており、80番と443番ポートにアクセスできれば、CaddyがTLS証明書を自動的に取得します。サイトが開かない場合は、DNS、ファイアウォール、または同じポートで別のWebサーバーが動作していないかを確認してください。
5. アカウントを作成し、新規登録を無効にする
最初のアカウントを登録します。長く一意なマスターパスワードを使用し、Vaultwardenの外部に緊急用の控えを保存してください。サーバー管理者でも、マスターパスワードをリセットしたり復元したりすることはできません。
登録後、compose.yaml内を次のように変更します。
SIGNUPS_ALLOWED: "false"設定を適用します。
docker compose up -dこれで第三者はアカウントを作成できなくなります。新しいユーザーを追加する場合は、登録を一時的に有効にするか、招待を設定できます。
Bitwardenアプリを接続する方法
Vaultwarden専用のクライアントを別途インストールする必要はありません。Bitwardenのアプリまたは拡張機能のログイン画面でSelf-hostedを選択し、次のアドレスを指定します。
https://vault.example.comこのアドレスをパソコン、スマートフォン、ブラウザで使用します。移行する場合は、以前のパスワードマネージャーから書き出したデータをインポートしてください。暗号化されていないCSVまたはJSONファイルは、移行後すぐに削除し、メールや公開リンクで送信しないでください。
Vaultwardenを安全に設定する
起動後、次の対策を行います。
- TOTPまたはWebAuthnを有効にし、復旧コードを別の場所に保存する;
SIGNUPS_ALLOWEDを無効のままにする;- SSH鍵を使用し、Ubuntuを定期的に更新する;
- Vaultwardenコンテナの内部ポートを公開しない;
- 同じVPS上で信頼できないコンテナを実行しない;
- バックアップから復元できることを確認する。
個人用の保管庫では、通常/adminパネルは必要ありません。有効にする場合は、Argon2ハッシュ形式の長いトークンを使用し、可能であればIPアドレスまたはVPNでアクセスを制限してください。平文のADMIN_TOKENを保存することは推奨されません。
アップデート前にバックアップを作成し、その後で次を実行します。
cd /opt/vaultwarden
docker compose pull
docker compose up -dサーバーは定期的に更新する必要があります。Bitwardenクライアントは独立してリリースされるため、Vaultwardenのバージョンが古すぎると互換性を失う可能性があります。
Vaultwardenのバックアップ
メインのSQLiteデータベースはvw-data/db.sqlite3にあり、添付ファイルは別のファイルとして保存されます。稼働中のデータベースを通常のcpコマンドでコピーしないでください。その瞬間に書き込みが行われると、コピーの整合性が失われる可能性があります。
組み込みコマンドで安全なスナップショットを作成します。
docker exec vaultwarden /vaultwarden backupデータディレクトリにdb_.sqlite3という別ファイルが作成されます。これと一緒に、attachments、sends、作成されている場合はconfig.json、およびrsa_keyファイルも保存してください。
同じVPS上にあるバックアップでは、サーバーの削除やディスク障害から保護できません。コピーを別の端末または独立したオブジェクトストレージへ自動的に送信し、できれば追加で暗号化してください。定期的に復元テストも行います。
VaultwardenにはどのVPSを選ぶべきか
個人または家族用の保管庫には、2 GB RAMを搭載した基本的なLinux VPSで十分です。この容量なら、Ubuntu、Docker、Caddy、アップデート、自動バックアップのための余裕を確保できます。
tropic.hostのエントリークラスVPSでVaultwardenを起動し、後から同じサーバーに別のセルフホストサービスを追加する場合は、リソースを増やすことができます。パスワードマネージャーでは、追加のCPUコアよりも、安定したネットワーク、固定のパブリックアドレス、信頼性の高いディスクが重要です。
自宅サーバーも利用できますが、その場合は外部アクセス、HTTPS、安定した電源、障害後の復旧を自分で確保する必要があります。どのネットワークからでも保管庫を使う必要があるなら、通常はVPSのほうが簡単です。
まとめ
Vaultwardenは、Bitwardenクライアントを使いながら、サーバー側を自分のインフラに置きたい人にとって便利なセルフホスト型パスワードマネージャーです。小規模なVPS、ドメイン、Docker Compose、Caddyがあれば導入できます。
本当の管理責任はインストール後に始まります。ユーザー登録を無効にし、2FAを有効にし、コンテナを更新し、動作確認済みのバックアップをサーバー外に保管する必要があります。
FAQ
ドメインなしでVaultwardenをインストールできますか?
技術的にはローカルアドレスを使用できますが、Web保管庫には安全なHTTPSコンテキストが必要です。複数の端末からアクセスするなら、ドメインとTLS証明書を使うほうが簡単です。
Vaultwardenにはどれくらいのメモリが必要ですか?
1人または数人のユーザーであれば、通常は1 GB RAMで十分です。2 GB RAMのVPSなら、システム、Docker、Caddy、アップデートのためにより余裕を持たせられます。
VaultwardenはBitwardenのモバイルアプリで使えますか?
はい。ログイン画面でセルフホストサーバーを選択し、Vaultwardenの完全なHTTPSアドレスを指定してください。
VPSが一時的に利用できなくなるとどうなりますか?
以前に同期したデータは、通常クライアントのローカル暗号化キャッシュに残ります。ただし、サーバーが復旧するまで、同期、新しい端末でのログイン、変更の受信は機能しません。
忘れたマスターパスワードを/adminから復元できますか?
いいえ。管理者はサーバーとアカウントを管理できますが、ユーザーの保管庫を復号する鍵は持っていません。マスターパスワードと復旧コードは別に保存する必要があります。
