OSSパスワードマネージャー比較:Vaultwarden vs Bitwarden vs Passbolt でLastPassを脱却する
オープンソースラボ編集部 ・ 2026年6月13日
OSSパスワードマネージャー比較:Vaultwarden vs Bitwarden vs Passbolt でLastPassを脱却する
LastPass(月$4/ユーザー〜)・1Password(月$7.99/ユーザー〜)・Dashlane(月$5/ユーザー〜)に対して、Vaultwarden(Bitwardenの軽量Rust実装)・Bitwarden(公式セルフホスト)・Passbolt(チーム向けOSSパスワードマネージャー)はパスワードを自社サーバーで管理できます。
OSSパスワードマネージャーを選ぶ理由
- セキュリティ: 2022年のLastPass大規模漏洩を受け、自社管理のニーズが急増
- コスト: LastPass Teams($4/ユーザー/月)→ Vaultwardenセルフホストで0円
- コンプライアンス: パスワードボルトを社外SaaSに置かず監査ログを自社で保持
- Bitwarden互換: VaultwardenはBitwardenの公式クライアント(Browser拡張・iOS・Android)がそのまま動く
主要ツールの概要
Vaultwarden(非公式Bitwarden互換サーバー)
2018年公開、Rust製のOSSです。GitHubスター40k+。Bitwardenの公式クライアントと完全互換のAPIを実装した軽量サーバーです。公式Bitwardenサーバーは6コンテナ構成でRAM 2GB+が必要ですが、Vaultwardenは1コンテナ・RAMは100MB以下で動作します。
# docker-compose.yml - Vaultwardenをセルフホスト(推奨構成)
version: '3.8'
services:
vaultwarden:
image: vaultwarden/server:latest
restart: unless-stopped
ports:
- "8080:80"
environment:
DOMAIN: "https://vault.yourcompany.com"
ADMIN_TOKEN: "${ADMIN_TOKEN}" # openssl rand -base64 48 で生成
SIGNUPS_ALLOWED: "false" # 招待制に(公開登録を無効化)
INVITATIONS_ALLOWED: "true"
# メール設定(招待メール・パスワードリセット)
SMTP_HOST: "smtp.sendgrid.net"
SMTP_PORT: "587"
SMTP_SECURITY: "starttls"
SMTP_USERNAME: "apikey"
SMTP_PASSWORD: "${SENDGRID_API_KEY}"
SMTP_FROM: "vault@yourcompany.com"
SMTP_FROM_NAME: "YourCompany Vault"
# Webソケット(リアルタイム同期に必要)
WEBSOCKET_ENABLED: "true"
# データ永続化
DATA_FOLDER: /data
volumes:
- vaultwarden_data:/data
nginx:
image: nginx:alpine
restart: unless-stopped
ports:
- "443:443"
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- /etc/letsencrypt:/etc/letsencrypt
volumes:
vaultwarden_data:
# nginx.conf - Vaultwarden用リバースプロキシ
server {
listen 443 ssl http2;
server_name vault.yourcompany.com;
ssl_certificate /etc/letsencrypt/live/vault.yourcompany.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vault.yourcompany.com/privkey.pem;
client_max_body_size 128M;
location / {
proxy_pass http://vaultwarden:80;
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;
}
# WebSocket エンドポイント(リアルタイム同期)
location /notifications/hub {
proxy_pass http://vaultwarden:3012;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
# Vaultwarden バックアップ(SQLiteダンプ)
# 毎日深夜に自動バックアップするcronジョブ
cat > /etc/cron.daily/vaultwarden-backup << 'EOF'
#!/bin/bash
BACKUP_DIR=/opt/vaultwarden-backup
DATE=$(date +%Y-%m-%d)
mkdir -p $BACKUP_DIR
# SQLiteのオンラインバックアップ(整合性を保ちながら実行中にバックアップ)
docker exec vaultwarden sqlite3 /data/db.sqlite3 '.backup /data/backup.sqlite3'
docker cp vaultwarden:/data/backup.sqlite3 $BACKUP_DIR/db-$DATE.sqlite3
docker cp vaultwarden:/data/rsa_key.pem $BACKUP_DIR/rsa_key.pem
docker cp vaultwarden:/data/rsa_key.pub.pem $BACKUP_DIR/rsa_key.pub.pem
# 30日以上前のバックアップを削除
find $BACKUP_DIR -name "db-*.sqlite3" -mtime +30 -delete
# S3にアップロード(オプション)
aws s3 sync $BACKUP_DIR s3://your-bucket/vaultwarden-backup/ --sse AES256
echo "Vaultwarden backup completed: db-$DATE.sqlite3"
EOF
chmod +x /etc/cron.daily/vaultwarden-backup
# Bitwarden/Vaultwarden APIでパスワードを外部から操作
# Bitwarden CLI を使ったスクリプト自動化
import subprocess
import json
import os
BW_SERVER = 'https://vault.yourcompany.com'
BW_EMAIL = os.environ['BW_EMAIL']
BW_PASSWORD = os.environ['BW_MASTER_PASSWORD']
def bw(cmd: list[str]) -> str:
'''bw CLIコマンドを実行して stdout を返す'''
result = subprocess.run(
['bw'] + cmd,
capture_output=True,
text=True,
check=True,
env={**os.environ, 'BW_SERVER': BW_SERVER},
)
return result.stdout.strip()
# サーバー設定・ログイン
bw(['config', 'server', BW_SERVER])
session_key = bw(['login', BW_EMAIL, BW_PASSWORD, '--raw'])
# パスワードアイテムを一覧表示
items_json = bw(['list', 'items', '--session', session_key])
items = json.loads(items_json)
# 特定のパスワードを取得
def get_password(name: str, session: str) -> str:
items_json = bw(['list', 'items', '--search', name, '--session', session])
items = json.loads(items_json)
if not items:
raise ValueError(f'Item not found: {name}')
return items[0]['login']['password']
# CI/CDでDBパスワードをVaultwardenから取得
db_password = get_password('Production Database', session_key)
print(f'DB接続に使用: {db_password[:4]}****')
# ログアウト(セッションキーを無効化)
bw(['logout'])
機能比較表
| 比較項目 | Vaultwarden | Bitwarden公式 | Passbolt |
|---|---|---|---|
| インストール規模 | 極小(1コンテナ) | 大(6コンテナ) | 中 |
| Bitwarden互換 | ✅(完全互換) | ✅(公式) | ❌ |
| チーム共有(Org) | ✅ | ✅ | ✅(UI強力) |
| Git統合 | ❌ | ❌ | ✅ |
| 最小RAM | 50MB | 2GB | 512MB |
| GitHub Stars | 40k+ | 17k+ | 4k+ |
パスワードマネージャーはセキュリティカテゴリ/categories/securityのHashiCorp Vault・CertbotによるSSL管理と組み合わせてセキュリティ基盤を構築します。DevOpsカテゴリ/categories/devopsのCI/CDパイプライン(GitHub Actions・GitLab CI)でBitwarden CLIを使ったシークレット注入もよく行われます。
FAQ
Q. VaultwardenはLastPassより本当に安全ですか?
A. 適切に運用すればYes。2022年LastPass漏洩の原因はバックエンドインフラへの不正アクセスです。Vaultwardenをセルフホストすると①第三者のインフラに依存しない②どのデータがどこに保存されるか完全に把握できる③アクセスログを自社で保持できる。ただし安全性の責任はあなた自身にあります。最低限の対策: TLS必須・強力なADMIN_TOKEN・定期バックアップ・ファイアウォール(VPN内のみアクセスを推奨)・Docker imageを定期更新。2FA(TOTP)はVaultwardenでも設定できるので有効化を強く推奨します。
Q. VaultwardenとBitwarden公式サーバーのどちらを選ぶべきですか?
A. 個人・中小規模チームはVaultwarden、エンタープライズ・コンプライアンス重視はBitwarden公式を推奨します。Vaultwardenの利点: 軽量(Raspberry Piでも動作)・設定が簡単・ほぼすべてのBitwarden機能が使える。Bitwarden公式の利点: Bitwarden Inc.のサポート・SOC 2 Type II認証取得・Active DirectoryConnector(ADからユーザーを自動同期)・エンタープライズポリシー(パスワード強度の強制・2FA必須化)。SLAやコンプライアンス証明書が必要な場合はBitwarden公式のSaaS($3/ユーザー/月)かオンプレ版を選択してください。
Q. VaultwardenをCloudflare Tunnelで公開するにはどうすればいいですか?
A. ①Cloudflare Dashboardでtunnelを作成→cloudflaredをインストール②docker-compose.ymlにcloudflaredサービスを追加: image: cloudflare/cloudflared:latest command: tunnel --no-autoupdate run --token ${CLOUDFLARE_TUNNEL_TOKEN}③CloudflareダッシュボードでPublic Hostname: vault.yourcompany.com → http://vaultwarden:80を設定④これでSSL・DDoS保護・WAFがすべてCloudflareで自動処理される。WebSocketの設定: Cloudflareダッシュボード → Networks → WebSockets: Enabledを確認。VaultwardenのDOMAINはhttps://vault.yourcompany.com(Cloudflareのドメイン)に設定。
Q. 複数サイトのチームでVaultwardenのOrganizationを活用するには?
A. ①Vaultwarden管理ページ(/admin)でOrganizations機能を有効化②Organization作成: Settings → Organizations → New Organization(チーム名・メールを入力)③メンバー招待: People → Invite member(招待メールが送信される)④コレクション作成: 部門やプロジェクト単位でコレクションを分割(例: 「インフラ」「マーケティング」「開発」)⑤パスワードをコレクションに移動して権限設定(Can View / Can Edit / Manager / Admin)。これで「Infra担当者はインフラコレクションのみ参照」のような細かいアクセス制御が実現できます。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| 個人・中小チーム・軽量セルフホスト | Vaultwarden |
| エンタープライズ・コンプライアンス重視 | Bitwarden公式 |
| チームパスワード共有・Git統合重視 | Passbolt |