Vaultwardenとは
Vaultwardenは、BitwardenサーバーAPIをRustで再実装したオープンソースのセルフホスト型パスワードマネージャーです。公式のBitwardenサーバーがMicrosoft SQL Serverと大量のリソースを必要とするのに対し、Vaultwardenは非常に軽量で、低スペックなVPSやRaspberry Piでも快適に動作します。すべての公式Bitwardenクライアント(デスクトップアプリ、ブラウザ拡張、モバイルアプリ、CLI)と互換性があります。
セルフホストにより、パスワードデータの完全な管理権限を手に入れられます。暗号化されたボールトはあなたのサーバーから一切外部に出ません。プロジェクトは活発にメンテナンスされており、個人利用から小規模チームまで幅広く利用されています。
Docker Composeによるデプロイ
Vaultwardenの実行にはDockerが推奨されます。以下はPostgreSQLと管理画面用トークンを同梱した本番向けの構成です。
version: "3.8"
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.yourdomain.com"
ADMIN_TOKEN: "${VAULTWARDEN_ADMIN_TOKEN}"
DATABASE_URL: "postgresql://vaultwarden:${DB_PASSWORD}@db:5432/vaultwarden"
SIGNUPS_ALLOWED: "false"
INVITATIONS_ALLOWED: "true"
volumes:
- ./vw-data:/data
ports:
- "127.0.0.1:8080:80"
depends_on:
- db
db:
image: postgres:16-alpine
container_name: vaultwarden-db
restart: unless-stopped
environment:
POSTGRES_DB: vaultwarden
POSTGRES_USER: vaultwarden
POSTGRES_PASSWORD: "${DB_PASSWORD}"
volumes:
- ./pg-data:/var/lib/postgresql/data
.envファイルにシークレットを記述します。
VAULTWARDEN_ADMIN_TOKEN=your-random-admin-token-here
DB_PASSWORD=your-strong-db-password-here
起動は一行です。
docker compose up -d
SQLite vs PostgreSQL
VaultwardenはデフォルトでSQLiteを使用します。個人利用であればSQLiteで十分です。複数ユーザーでの利用や運用の堅牢性を重視する場合はPostgreSQLを選択します。DATABASE_URLを指定しない場合、自動的にSQLiteが使われます。
管理トークン
ADMIN_TOKENを設定すると/adminで管理パネルにアクセスできます。トークンは以下のコマンドで生成してください。
openssl rand -base64 48
初回アカウント作成後はSIGNUPS_ALLOWEDをfalseに戻して新規登録を無効化しましょう。
CaddyによるSSL証明書の自動取得
Caddyを使うとLet’s Encryptの証明書を自動で取得・更新できます。Caddyfileを作成します。
vault.yourdomain.com {
reverse_proxy 127.0.0.1:8080
}
Dockerで起動します。
docker run -d \
--name caddy \
-p 80:80 -p 443:443 \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v caddy-data:/data \
caddy:latest
Nginxを使う場合はCertbotで証明書を取得し、以下のようにリバースプロキシを設定します。
server {
listen 443 ssl;
server_name vault.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/vault.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vault.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
初回セットアップ手順
https://vault.yourdomain.comにアクセスし、初回アカウントを作成します(SIGNUPS_ALLOWEDがtrueの場合)。https://vault.yourdomain.com/adminで管理パネルにログインします。認証にはADMIN_TOKENを使用します。- 管理画面からユーザー管理、新規登録の無効化、SMTP設定、診断情報の確認が行えます。
- Bitwardenブラウザ拡張またはモバイルアプリをインストールし、サーバーURLに自身のドメインを設定します。
バックアップ戦略
SQLiteを使用している場合、以下のスクリプトで一貫性のあるバックアップを取得できます。
#!/bin/bash
BACKUP_DIR="/path/to/backups"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
docker exec vaultwarden sqlite3 /data/db.sqlite3 ".backup '/tmp/backup.db'"
docker cp vaultwarden:/tmp/backup.db "$BACKUP_DIR/vaultwarden-$TIMESTAMP.db"
docker cp vaultwarden:/data/attachments "$BACKUP_DIR/attachments-$TIMESTAMP"
PostgreSQLの場合はpg_dumpを使用します。
docker exec vaultwarden-db pg_dump -U vaultwarden vaultwarden > "$BACKUP_DIR/vw-pg-$TIMESTAMP.sql"
cronで日次バックアップをスケジュールし、オフサイトにコピーしてください。バックアップは定期的に復元テストを行うことが重要です。
他サービスからの移行
VaultwardenはBitwardenのデータインポート形式をサポートしています。ほとんどのパスワードマネージャーはCSVまたはJSON形式でエクスポートできます。
- 元のマネージャー(LastPass、Dashlane、1Password、KeePassなど)からデータをエクスポートします。
- VaultwardenのWebボールトで Tools → Import Data を開きます。
- ソース形式を選択してファイルをアップロードします。
対応形式はBitwarden JSON/CSV、1Password CSV、Dashlane CSV、KeePass XMLなど多岐にわたります。インポート後は平文データを含むエクスポートファイルを必ず削除してください。
VaultwardenとBitwardenの比較
| 項目 | Vaultwarden | 公式Bitwarden |
|---|---|---|
| データベース | SQLite / PostgreSQL | Microsoft SQL Server |
| メモリ使用量 | 約10–30 MB | 約2–4 GB |
| セットアップ | Dockerコンテナ1つ | 複数サービスの構成が必要 |
| 公式クライアント | すべてのBitwardenクライアント対応 | すべてのBitwardenクライアント対応 |
| セルフホスト | 設計段階から最適化 | 可能だが重い |
| 管理パネル | 内蔵 | Webボールトのみ |
| チーム機能 | 基本対応(招待、組織、コレクション) | フルエンタープライズ機能 |
個人利用や小規模チームにはVaultwardenが最適です。エンタープライズレベルのコンプライアンスやAD/LDAP統合が必要な場合は公式Bitwardenサーバーを検討してください。
日常的な使い方
デプロイ後は通常のBitwardenとまったく同じように使えます。すべての公式クライアントでサーバーURLを自身のドメインに設定するだけです。暗号化はすべてクライアント側で行われ、マスターパスワードやボールトの中身がサーバーに送られることはありません。
TOTP認証コード、セキュアノート、クレジットカード情報、IDプロファイルなど、すべての機能がそのまま動作します。組織とコレクションによる共有ボールトもサポートされています。モバイルアクセスにはBitwardenアプリをそのまま利用できます。
