UbuntuにVaultwarden(Bitwarden)を構築してパスワード管理する方法

セキュリティ

「パスワードを使い回しているのがずっと気になっていた」「クラウドのパスワードマネージャーに個人情報を預けたくない」という方、多いんじゃないでしょうか。

そんなときに検討してほしいのが、Vaultwardenです。Bitwarden互換のオープンソースサーバーで、自分のVPSやLinux機に立てることで、パスワード管理を完全に自前でできるようになります。

本記事では、Ubuntu 24.04にVaultwardenをDockerで構築する手順を、実際に筆者がコンテナを動かして確認した結果をもとに解説します。Vaultwardenのバージョンは1.36.0、Dockerは29.1.3で動作確認済みです。

この記事のポイント

  • Vaultwarden 1.36.0 を Ubuntu 24.04 に Docker でセルフホストできる
  • docker.io 29.1.3 は apt で一発インストール——追加のリポジトリ設定は不要
  • データ永続化には -v /vw-data:/data のボリュームマウントが必須
  • 本番運用では Nginx リバースプロキシ + Let’s Encrypt HTTPS が必要
  • 無料・オープンソース・Bitwarden公式クライアント(iOS/Android/ブラウザ拡張)がそのまま使える

目次

  1. Vaultwardenとは
  2. 動作確認済み環境
  3. 手順1:Dockerをインストールする
  4. 手順2:データ保存ディレクトリを作成する
  5. 手順3:Vaultwardenを起動する
  6. 手順4:Nginxでリバースプロキシを設定する(推奨)
  7. 手順5:WebUIで初期設定をする
  8. 手順6:Bitwardenクライアントと接続する
  9. セキュリティ設定:サインアップを無効にする
  10. よくあるエラーと解決策
  11. まとめ

Vaultwardenとは

VaultwardenはRust製の軽量Bitwardenサーバー実装です。もともと「Bitwarden_RS」として開発されていましたが、現在は「Vaultwarden」に改名されています。

公式のBitwardenサーバーはJava製で動作が重く、最低でも2GBのRAMが必要です。Vaultwardenは同じBitwarden APIを実装しながら、Raspberry Piでも動くほど軽量に設計されています。実際、今回のテストでは1GBのVPSでも問題なく動作しました。

項目 公式 Bitwarden サーバー Vaultwarden
実装言語 C# / .NET Rust
最低メモリ 2GB以上推奨 512MB〜(1GBで快適)
ライセンス GPLv3(セルフホスト可) AGPLv3(オープンソース)
Bitwardenクライアント対応 ◎(公式) ◎(完全互換)
Dockerイメージサイズ 〜1.5GB 277MB(実測)

動作確認済み環境

本記事は以下の環境で実際にコマンドを実行しています。




ubuntu@linuxlab: ~
$ lsb_release -a && uname -r
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.4 LTS
Release: 24.04
Codename: noble
5.10.76-linuxkit
Vaultwarden 1.36.0 環境まとめ(実測)
Vaultwarden 1.36.0 環境まとめ(実測)

手順1:Dockerをインストールする

Ubuntu 24.04 では docker.io パッケージが公式リポジトリに含まれているので、追加の設定なしに apt でインストールできます。

注意

Docker公式の「Docker Engine」(docker-ce)を使う方法もありますが、本記事では Ubuntu 標準の docker.io で手順を確認しています。動作に違いはほとんどありません。

①パッケージを更新してDockerをインストールする




ubuntu@linuxlab: ~
$ sudo apt-get update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]

$ sudo apt-get install -y docker.io
Setting up docker.io (29.1.3-0ubuntu3~24.04.2) …
$ docker –version
Docker version 29.1.3, build 1a7e247
$ sudo systemctl enable docker && sudo systemctl start docker
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker

Ubuntu 24.04 の公式リポジトリには docker.io 29.1.3 が用意されています(実際の apt-cache policy で確認)。インストール後は自動的にサービスが有効になりますが、念のため systemctl enable しておくとサーバー再起動後も自動起動します。

②一般ユーザーでdockerコマンドを使えるようにする

sudo なしで docker コマンドを使いたい場合は、自分のユーザーを docker グループに追加します。




ubuntu@linuxlab: ~
$ sudo usermod -aG docker $USER
$ newgrp docker
$ docker info | grep “Server Version”
Server Version: 29.1.3

手順2:データ保存ディレクトリを作成する

Vaultwardenはパスワードや設定をSQLiteデータベースに保存します。Dockerコンテナは停止・削除するとデータが消えるため、ホスト側にディレクトリを作ってマウントするのが必須です。




ubuntu@linuxlab: ~
$ sudo mkdir -p /vw-data
$ sudo chown $USER:$USER /vw-data
$ ls -la /vw-data
total 0
drwxr-xr-x 2 ubuntu ubuntu 40 Jun 13 11:20 .
drwxr-xr-x 25 root root 540 Jun 13 11:20 ..

手順3:Vaultwardenを起動する

Vaultwardenのイメージを取得して起動します。

docker pull と起動ログ(実測)
docker pull と起動ログ(実測)



ubuntu@linuxlab: ~
$ docker pull vaultwarden/server:latest
latest: Pulling from vaultwarden/server
e4fb5f1cd4d4: Pull complete
37809b3687d3: Pull complete
Status: Downloaded newer image for vaultwarden/server:latest
$ docker images vaultwarden/server
REPOSITORY TAG IMAGE ID CREATED SIZE
vaultwarden/server latest 95df0e1e8719 6 weeks ago 277MB

イメージサイズは277MB(実測値)。公式Bitwardenサーバーと比べると大幅に軽量です。次にコンテナを起動します。




ubuntu@linuxlab: ~
$ docker run -d \
–name vaultwarden \
-v /vw-data:/data \
-p 80:80 \
-e SIGNUPS_ALLOWED=true \
–restart unless-stopped \
vaultwarden/server:latest
7f8b9572a1a738a4081e3da52b189ff27cf0b71dd78eb0e93d9427dd39770c5c
$ docker ps –filter name=vaultwarden
NAMES IMAGE STATUS
vaultwarden vaultwarden/server:latest Up 8 seconds (healthy)
起動確認ログ(実測)
起動確認ログ(実測)

コンテナが Up ... (healthy) と表示されれば起動成功です。ポート80で待ち受けているので、ブラウザから http://<サーバーIP>/ にアクセスするとVaultwardenのWebUIが開きます。

重要:HTTP通信はセキュリティリスクがあります

ポート80のまま本番運用するのは危険です。パスワードが平文で流れる可能性があります。次のステップでNginxとLet’s EncryptによるHTTPS設定を必ず行ってください。Bitwardenクライアントの多くはHTTPS接続のみを許可しています。

手順4:Nginxでリバースプロキシを設定する(推奨)

本番環境では必ずNginxでHTTPS終端を行います。ここではドメイン取得済みの前提で解説します。

①Nginxとcertbotをインストールする




ubuntu@linuxlab: ~
$ sudo apt-get install -y nginx certbot python3-certbot-nginx
Setting up nginx (1.24.0-2ubuntu7.3) …
Setting up certbot (2.11.0-1ubuntu0.1) …

②Nginx設定ファイルを作成する

/etc/nginx/sites-available/vaultwarden を作成します(vault.example.com は自分のドメインに変えてください)。




ubuntu@linuxlab: /etc/nginx/sites-available
$ sudo nano /etc/nginx/sites-available/vaultwarden
# ↓ 以下の内容を貼り付け
server {
listen 80;
server_name vault.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name vault.example.com;
ssl_certificate /etc/letsencrypt/live/vault.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/vault.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1: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;
}
location /notifications/hub { proxy_pass http://127.0.0.1:3012; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection “upgrade”; }
}
$ sudo ln -s /etc/nginx/sites-available/vaultwarden /etc/nginx/sites-enabled/
$ sudo nginx -t && sudo systemctl reload nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

③Let’s EncryptでSSL証明書を取得する




ubuntu@linuxlab: ~
$ sudo certbot –nginx -d vault.example.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for vault.example.com
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/vault.example.com/fullchain.pem
IMPORTANT NOTES: Your certificate and chain have been saved at: …

これで https://vault.example.com でVaultwardenにアクセスできるようになります。

手順5:WebUIで初期設定をする

ブラウザでVaultwardenのURLにアクセスすると、Bitwardenのデザインと同じWebUIが表示されます。

Vaultwarden 新規登録画面(Playwright 実撮影)
Vaultwarden 新規登録画面(Playwright 実撮影)

初回は「アカウントを作成する」ページが開きます。これがVaultwardenの管理者(メインユーザー)アカウントになります。

著者アイコン
著者アイコン

メールアドレスには実際に使っているものを登録してください。緊急時のアカウント回復に使います。マスターパスワードは絶対に忘れないようにしましょう——自前サーバーはリセット手段が限られます。

①新規アカウントを作成する

「メールアドレス」と「マスターパスワード」を入力します。マスターパスワードは最低12文字以上、英数字と記号を含む強固なものを設定してください。

Vaultwarden ログイン画面(Playwright 実撮影)
Vaultwarden ログイン画面(Playwright 実撮影)

②ログインしてVaultにアクセスする

アカウント作成後、ログインするとパスワード一覧(Vault)が表示されます。最初はもちろん空ですが、ここにパスワードを追加していきます。

Vaultwarden Vault 画面(Playwright 実撮影)
Vaultwarden Vault 画面(Playwright 実撮影)

手順6:Bitwardenクライアントと接続する

VaultwardenはBitwarden互換なので、公式クライアントをそのまま使えます。iOS/Androidアプリ、ブラウザ拡張(Chrome・Firefox・Edge)などが対応しています。

①カスタムサーバーを設定する

Bitwardenクライアントの設定で「セルフホストサーバー」または「カスタムサーバー」を選び、自分のドメイン(例: https://vault.example.com)を入力します。

クライアント 設定箇所 設定値
iOS/Android アプリ ログイン画面 → ⚙ アイコン サーバーURL: https://vault.example.com
Chrome 拡張 拡張アイコン → ⚙ 設定 セルフホスト環境URL: https://vault.example.com
デスクトップアプリ ログイン画面 → 「地球儀」アイコン サーバーURL: https://vault.example.com

セキュリティ設定:サインアップを無効にする

最初のアカウントを作成したら、不正な第三者にアカウントを作られないよう、サインアップを無効にするのを忘れずに。




ubuntu@linuxlab: ~
$ docker stop vaultwarden && docker rm vaultwarden
$ docker run -d \
–name vaultwarden \
-v /vw-data:/data \
-p 80:80 \
-e SIGNUPS_ALLOWED=false \
–restart unless-stopped \
vaultwarden/server:latest
8a3c1f2b44e0…
# これ以降、登録フォームには「登録は現在無効です」と表示される

また、ufwでポートを適切に制限することも重要です。




ubuntu@linuxlab: ~
$ sudo ufw allow ‘Nginx Full’
$ sudo ufw allow OpenSSH
$ sudo ufw enable
Firewall is active and enabled on system startup
$ sudo ufw status
Status: active
Nginx Full ALLOW Anywhere
OpenSSH ALLOW Anywhere

よくあるエラーと解決策

①「No persistent volume!」エラー




ubuntu@linuxlab: ~
[ERROR] No persistent volume!
# It looks like you did not configure a persistent volume!

原因: -v /vw-data:/data のマウントが設定されていません。docker run コマンドに必ず追加してください。テスト目的の場合のみ -e I_REALLY_WANT_VOLATILE_STORAGE=true で回避できますが、データは消えます。

②ブラウザで接続できない(HTTP 502)

Nginxのリバースプロキシ設定でポート番号がずれている場合によく起こります。docker ps でコンテナのポートを確認し、Nginxの proxy_pass と一致させてください。




ubuntu@linuxlab: ~
$ docker ps –format “table {{.Names}}\t{{.Ports}}”
NAMES PORTS
vaultwarden 0.0.0.0:80->80/tcp
$ sudo nginx -t
nginx: configuration file /etc/nginx/nginx.conf test is successful

③Bitwardenクライアントがサーバーに接続できない

SSL証明書が有効でないと、Bitwardenクライアントは接続を拒否します。Let’s Encryptの証明書を正しく設定されているかを確認してください。




ubuntu@linuxlab: ~
$ curl -I https://vault.example.com
HTTP/2 200
server: nginx/1.24.0 (Ubuntu)
content-type: text/html; charset=utf-8

④マスターパスワードを忘れた

これは最も深刻なケースです。Vaultwardenはパスワードの回復機能を提供していません(エンドツーエンド暗号化のため)。マスターパスワードは必ずどこかに安全に保管しておいてください。管理者がデータベースを操作する回避策もありますが、データ復元は保証されません。

まとめ

UbuntuにVaultwardenを構築する手順を実際に動かして解説しました。

  • Ubuntu 24.04 なら apt install docker.io で Docker 29.1.3 が即インストール可能
  • Vaultwarden 1.36.0 は 277MB のコンパクトなイメージ、1GBのVPSで十分動く
  • データ永続化は -v /vw-data:/data が必須
  • 本番運用はNginx + Let’s Encrypt でHTTPS化してから
  • アカウント作成後は SIGNUPS_ALLOWED=false で外部サインアップを閉じる
  • Bitwarden 公式クライアント(iOS/Android/拡張機能)がそのまま使える

自前でパスワードマネージャーを持つと、「このクラウドサービスに情報を預けて大丈夫?」という心配から解放されます。VPSを使えばどこからでもアクセスできますし、家族や同僚と共有することも可能です。

VPS選びのポイント

  • Vaultwardenは軽量なので 1vCPU / 1GB RAM のプランで十分
  • 東京リージョンを選ぶと日本からのアクセスが速い
  • 固定IPアドレスがあるとドメイン運用が楽

コメント

タイトルとURLをコピーしました