| Implementation

【2026年版】Vaultwardenのインストールと日本語化:Dockerで構築する最強のパスワード管理

「共有のパスワードは、総務の『黒いノート』に書いてあります」 「このサービスのログインPWは、いつもの『会社名+設立年』です」

笑い話のようですが、これこそが中小企業のリアルなセキュリティ現場です。 入退社があるたびにパスワードを変更しなければならないのに、面倒だからそのまま放置する。あるいは、社員が個人で契約したサービスのパスワードは誰も把握しておらず、退職と共にアクセス不能になる。 そして極め付けは、メールやチャットで平然とやり取りされる平文のパスワード。

「パスワード管理ツールを入れたい」と経営層に提案しても、「1Password」や「LastPassword」のようなサブスクリプション費用(月額数百円×人数)が壁となり、「Excelで管理すればいいだろう」と却下される。 そんな 「コストとセキュリティの板挟み」に悩む一人情シスへの最適解が、OSSである『Vaultwarden』です。

Vaultwardenは、世界的に評価の高いパスワード管理ツール「Bitwarden」のサーバーサイドを、Rust言語で軽量に再実装した互換プロジェクトです。本家Bitwardenの公式クライアント(ブラウザ拡張、スマホアプリ)をそのまま利用でき、かつライセンス費用ゼロで、自社管理のセキュアなパスワード保管庫を構築できます。

1. なぜ「Excel管理」と「ブラウザ保存」がダメなのか

技術的な構築に入る前に、なぜ現状の運用が破綻しているのかを言語化しましょう。経営層への説得材料として使ってください。

Excel管理の限界:同期と権限の欠如

  • 同時編集が怖い: 誰かが開いていると「読み取り専用」になり、更新が競合する。
  • コピペミス: セルを選択してコピーする際に余計なスペースが入る。
  • 権限分離不能: 「経理部のパスワード」と「全社員用Wi-Fiパスワード」を同じファイルに書けば、アクセス権限を分けられない。シートを分けてもファイル自体へのアクセス権は一つ。

ブラウザ保存の罠:シャドーITの温床

  • 端末依存: Chromeに保存したパスワードは、個人のGoogleアカウントに紐づきます。会社のアカウントだとしても、そのPCが壊れたら、あるいは退職時にログアウトされたら、組織としての資産(パスワード)は消滅します。
  • 流出リスク: マルウェアの多くは、ブラウザに保存されたパスワードファイルを真っ先に狙います。

Vaultwarden (Bitwarden) が解決すること

  • ゼロ知識アーキテクチャ: サーバー上には「暗号化されたデータ」しか保存されません。たとえサーバー管理者のあなたであっても、マスターパスワードを知らない限り中身を見ることはできません。
  • 組織(Organization)機能: 「経営層」「開発部」「全社員」といったグループを作成し、フォルダごとに「誰に見せるか」を制御できます。
  • デバイスフリー: PC、Mac、iPhone、Android、Linux。あらゆるデバイスで同期されます。

Vaultwardenのインストール:Docker Composeによる構築手順

それでは、実際に構築していきます。 Vaultwardenは非常に軽量で、Raspberry Piのような低スペックマシンでも数人の組織なら余裕で動作します。

前提条件:

  • DockerおよびDocker ComposeがインストールされたLinuxサーバー
  • 必須: SSL/TLS環境(独自ドメイン + Let’s Encrypt等)。
    • 重要: Bitwardenクライアントは、セキュリティ上の理由から HTTPS 以外の接続を拒否します。ローカルIPであっても http では動作しません。必ずHTTPS化してください。

ディレクトリ構成

vaultwarden/
├── docker-compose.yml
└── .env

docker-compose.yml

今回は、リバースプロキシ(Caddy)を含めた構成例を紹介します。Caddyを使うと、Let’s Encryptの証明書取得・更新を全自動で行ってくれるため、SSL運用の手間がゼロになります。

version: '3'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      - WEBSOCKET_ENABLED=true  # 即時同期のためにWebSocketを有効化
      - SIGNUPS_ALLOWED=true    # 初期登録時はtrue、運用開始後はfalse推奨
      - ADMIN_TOKEN=secure_admin_token_here_change_me # 管理画面用トークン(必ず変更!)
      - INVITATIONS_ALLOWED=true # 招待制にする場合
    volumes:
      - ./vw-data:/data
    networks:
      - vault-net

  caddy:
    image: caddy:2
    container_name: caddy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    networks:
      - vault-net

volumes:
  caddy_data:
  caddy_config:

networks:
  vault-net:
    driver: bridge

Caddyfile

同ディレクトリに Caddyfile という名前のファイルを作成します。

your-domain.com {
    encode gzip
    
    # Vaultwardenへのリバースプロキシ設定
    reverse_proxy vaultwarden:80 {
       # WebSocket対応ヘッダー
       header_up X-Real-IP {remote_host}
    }
}

your-domain.com は実際に使用するドメインに書き換えてください。

起動手順

# 1. コンテナ起動
docker compose up -d

# 2. ログ確認
docker compose logs -f

起動して数秒で、CaddyがSSL証明書を取得し、https://your-domain.com でアクセス可能になるはずです。

3. 初期設定と運用の勘所

日本語化について

Vaultwarden(Bitwarden互換)のWeb UIは、標準で 日本語に対応しています。 通常はブラウザの言語設定を自動検出して日本語になりますが、もし英語のままの場合は、ログイン画面の「Settings」またはログイン後の「設定」から言語を手動で「日本語」に変更可能です。 ただし、管理者用ダッシュボード(/admin)だけは英語のみとなりますが、日常的な運用でそこを頻繁に触る必要はないため、実運用上の支障はありません。

アカウント作成と招待

トップページから「アカウント作成」を行い、最初のユーザー(管理者)を作ります。 その後、docker-compose.ymlSIGNUPS_ALLOWED=false に変更して再起動することを強くお勧めします。誰でもアカウントを作れる状態を避けるためです。 以降のユーザー追加は、管理者画面(/admin)からの「招待(Invitation)」機能を使います。

SMTP設定(パスワード忘れ対策はできないが、招待に必須)

Vaultwardenでは、 マスターパスワードを忘れた場合、復旧は不可能です(ゼロ知識証明のため)。 しかし、ユーザー招待メールを送ったり、管理者がログイン通知を受け取るためにSMTP設定は必須です。GmailのSMTPや、Amazon SESなどを設定しましょう。

.env または docker-compose.yml に以下を追加:

      - SMTP_HOST=smtp.gmail.com
      - [email protected]
      - SMTP_PORT=587
      - SMTP_SSL=true
      - [email protected]
      - SMTP_PASSWORD=your-app-password

バックアップは命

パスワードデータが消えたら会社が止まります。 /vw-data ディレクトリ(特に db.sqlite3rsa_key* ファイル)は、絶対に消えないようにバックアップしてください。 簡単なシェルスクリプトで、S3などに毎日転送する仕組みを作るのが良いでしょう。

#!/bin/bash
# Simple Backup Script
tar czf /backup/vw-backup-$(date +%F).tar.gz /path/to/vaultwarden/vw-data
# ここにrcloneなどでクラウドへアップロードするコマンドを追加

4. 中小企業における「パスワード共有」の運用ルール

ツールを入れただけでは解決しません。 「誰が」「どのパスワードを」「どう扱うか」のルールが必要です。

ルール1:マスターパスワードは「長文(パスフレーズ)」にする

マスターパスワードだけは、Vaultwardenに保存できません(鍵そのものだからです)。 そして、これが破られたら全て終わりです。 「P@ssword123」のような複雑な文字列ではなく、「Tokyo Sky Tree Is Very High 2024」のような、覚えやすく総当たりに強い パスフレーズを推奨しましょう。

ルール2:個人領域と組織コレクションを使い分ける

  • 個人領域: 自分の社用メール、個人指名のチャットアカウントなど、他人と共有しなくていいもの。
  • 組織(コレクション): AWSのルートアカウント、共有Twitter、Wi-Fiパスワードなど。

これらを混同しないよう指導します。特に退職時、個人領域にある「実は共有が必要だったパスワード」が道連れになるのを防ぐため、業務で使うものは最初から「組織」に入れる癖をつけさせます。

ルール3:2要素認証 (2FA) の強制

マスターパスワードが漏れた時の最後の砦です。 Vaultwardenは、Google AuthenticatorなどのTOTPアプリに加え、YubiKey(WebAuthn)にも対応しています。 全社員にスマホアプリでの2FA設定を強制し、管理者はYubiKeyを持つ。これが最低ラインです。

5. まとめ

パスワード管理は、セキュリティの「一丁目一番地」です。 高価なAIセキュリティツールやEDRを入れる前に、足元の「admin/admin」を撲滅するのが先決です。

Vaultwardenは、その強力な機能と利便性で、社員の「面倒くさい」という心理的ハードルを下げることができます。 「パスワードを覚えなくていい」「自動入力でログインが1秒で終わる」という 体験の向上こそが、セキュリティツール定着の鍵です。

今日から、Excelのパスワード台帳をゴミ箱に捨て、セキュアで快適なパスワード管理ライフを始めましょう。


AIへの確認用プロンプト

この記事の内容を自社に適用する際のリスクや運用フローを具体化するために、以下のプロンプトをAI(ChatGPTやClaudeなど)に入力して相談してみてください。

あなたはセキュリティと運用設計に強いITコンサルタントです。
現在、私の会社(社員数30名)ではパスワードをExcelで管理していますが、記事を参考にOSSの「Vaultwarden」への移行を検討しています。

経営層に対し、コストメリットだけでなく「セキュリティリスクの低減」を論理的に説明し、かつ現場社員がスムーズに移行できるための導入計画を作成したいと考えています。

以下の点についてアドバイスください。

1.  **リスク評価 **: 自社サーバー(Docker)でパスワードを管理することの「新たなリスク(可用性、攻撃対象化)」と、それに対する具体的な緩和策(バックアップ、IP制限以外に何があるか)。
2.  **移行ステップ **: 現在のExcelに散らばったパスワードを、どのように整理・分類してVaultwardenの「Organization(組織)」や「Collection」に落とし込むべきか。推奨されるフォルダ構造の例。
3.  **緊急時対応 **: もしVaultwardenのサーバーがダウンした場合、業務を止めないための「BCP(事業継続計画)」としてのオフラインアクセス確保の手法。

プロの視点で、具体的かつ実践的な回答をお願いします。