AI

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'])

機能比較表

比較項目VaultwardenBitwarden公式Passbolt
インストール規模極小(1コンテナ)大(6コンテナ)
Bitwarden互換✅(完全互換)✅(公式)
チーム共有(Org)✅(UI強力)
Git統合
最小RAM50MB2GB512MB
GitHub Stars40k+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.comhttp://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

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。