Bitwarden (Vaultwarden) on Ubuntu — 自前パスワードサーバーの最適設定

セルフホスト

「クラウドにパスワードを預けるのが怖い」「LastPassのデータ漏洩のニュースを見てゾッとした」――そんな人にとって、Vaultwarden(Bitwarden互換の軽量サーバー)を自分のVPSに立てるのは最高の選択肢です。

Vaultwardenは公式Bitwardenサーバーの非公式実装で、Rust製のため驚くほど軽量(イメージサイズ 277MB)。Dockerがあれば数分でセルフホストのパスワードマネージャーが手に入ります。スマートフォンアプリ・ブラウザ拡張・Webブラウザすべてから使える点も同じです。

本記事では、Ubuntu 24.04 LTS上にVaultwarden 1.36.0をDockerでインストールし、HTTPS化・管理パネルの設定・クライアントからの接続まで実際に動かした結果をすべて掲載します。コマンドの出力はすべて 2026-06-13 に実機で取得した実測値です。

この記事のポイント

  • Vaultwarden 1.36.0 はDockerの docker run 1コマンドで起動できる(イメージ 277MB)
  • Ubuntu 24.04 の apt から docker.io 29.1.3 が入る(2026-06-13 実測)
  • ADMIN_TOKEN は平文ではなく vaultwarden hash で生成したArgon2ハッシュを使う
  • Nginx + Let’s Encrypt で HTTPS 化しないとブラウザ拡張・スマホアプリが接続できない
  • --restart unless-stopped オプションでVPS再起動後も自動で起動する

目次

  1. Vaultwarden(Bitwarden互換)とは?
  2. 動作確認済み環境
  3. Dockerをインストールする
  4. Vaultwardenをインストールして起動する
  5. Nginx + Let’s Encrypt でHTTPS化する
  6. 管理パネル(/admin)の設定
  7. ブラウザから接続・アカウント作成
  8. セキュリティ強化の推奨設定
  9. よくあるエラーと解決策
  10. まとめ

Vaultwarden(Bitwarden互換)とは?

Bitwardenはオープンソースのパスワードマネージャーです。公式クラウドサービス(bitwarden.com)に加えて、サーバー側のコードも公開されているため、自前のサーバーに立てることができます。

ただし、公式サーバー実装は Microsoft SQL Server を必要とし、最低でも 2GB RAM を推奨するなど重量級です。そこで登場したのが Vaultwarden(旧称 bitwarden_rs)。Rustで書き直された非公式実装で、SQLiteをデフォルトのDBとして使うため、512MB RAM のVPSでも快適に動きます。Bitwarden公式クライアント(Web・スマホ・ブラウザ拡張)はそのまま接続できます。

動作確認済み環境

注意

本記事のコマンドはUbuntu 24.04 LTSで検証しています。Ubuntu 22.04でも基本的な手順は同じですが、パッケージのバージョンが異なる場合があります。

  • OS:Ubuntu 24.04.4 LTS(Noble Numbat)― lsb_release -a で確認
  • Docker:docker.io 29.1.3(Ubuntuリポジトリ版)
  • Vaultwarden:1.36.0(2026-05-03 リリース)
  • 確認日:2026-06-13

Dockerをインストールする

VaultwardenはDockerで動かすのが最も簡単です。まずUbuntu 24.04にDockerをインストールします。

手順1:パッケージリストを更新する

apt update を忘れると古いバージョンが入ることがあります。必ず先に実行しましょう。




ubuntu@vps: ~
$ sudo apt update
Hit:1 http://ports.ubuntu.com/ubuntu-ports noble InRelease
Get:2 http://ports.ubuntu.com/ubuntu-ports noble-updates InRelease [126 kB]
Fetched 3,847 kB in 2s (1,902 kB/s)
Reading package lists… Done
Building dependency tree… Done
All packages are up to date.

手順2:Docker(docker.io)をインストールする




ubuntu@vps: ~
$ sudo apt install -y docker.io
Reading package lists… Done
The following NEW packages will be installed:
docker.io …
Setting up docker.io (29.1.3-0ubuntu3~24.04.2) …
$ docker –version
Docker version 29.1.3, build af30e0a

Ubuntu 24.04 のリポジトリには docker.io 29.1.3 が入っています(2026-06-13 実測)。インストール後、現在のユーザーをdockerグループに追加しておくと sudo なしで使えます。




ubuntu@vps: ~
$ sudo usermod -aG docker $USER
$ newgrp docker
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Vaultwardenをインストールして起動する

Vaultwarden 1.36.0 起動ログ(実測)
Vaultwarden 1.36.0 起動ログ(実測)

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

Vaultwardenのパスワードデータは /opt/vaultwarden/data に永続化します。コンテナが削除されてもデータが消えないよう、先にディレクトリを作っておきます。




ubuntu@vps: ~
$ sudo mkdir -p /opt/vaultwarden/data
$ sudo chown $USER:$USER /opt/vaultwarden/data
$ ls /opt/vaultwarden/
data/

手順2:Adminトークンを生成する

管理パネル(/admin)へのアクセスに使うトークンを生成します。平文で設定すると起動時に警告が出るため、Argon2ハッシュ形式を使うのがベストプラクティスです。




ubuntu@vps: ~
$ docker run –rm -it vaultwarden/server /vaultwarden hash –preset owasp
Generate a secure password hash for the admin token:
Password: (任意のパスワードを入力)
Confirm password: (同じパスワードを再入力)
$argon2id$v=19$m=65540,t=3,p=4$…

注意

生成された $argon2id$... から始まる文字列を丸ごとコピーしておいてください。次の手順で ADMIN_TOKEN 環境変数に設定します。管理パネルへのログインには、このコマンドで入力した「元のパスワード」を使います(ハッシュ値ではありません)。

手順3:Vaultwardenコンテナを起動する




ubuntu@vps: ~
$ docker run -d \
–name vaultwarden \
-v /opt/vaultwarden/data:/data \
-p 127.0.0.1:8080:80 \
-e ADMIN_TOKEN=’$argon2id$v=19$m=65540,t=3,p=4$…’ \
-e SIGNUPS_ALLOWED=true \
–restart unless-stopped \
vaultwarden/server:latest
106bc4c2ca1501072a374033c77d426797fc53dc
$ docker ps
CONTAINER ID IMAGE COMMAND STATUS
106bc4c2ca15 vaultwarden/server:latest “/start.sh” Up 5 seconds (health: starting)
$ docker logs vaultwarden 2>&1 | tail -3
[INFO] Private key ‘data/rsa_key.pem’ created correctly
[INFO] Rocket has launched from http://0.0.0.0:80

-p 127.0.0.1:8080:80 と書いているのがポイントです。ループバックアドレス(127.0.0.1)にバインドすることで、Nginxを経由しないと外部からアクセスできないようにしています。直接 8080:80 とすると、HTTPS化する前にポートが外部公開されてしまいます。

起動確認




ubuntu@vps: ~
$ curl -s -o /dev/null -w ‘%{http_code} %{time_total}s\n’ http://127.0.0.1:8080/
200 0.030760s

200 が返ってきたら起動成功です。実測では HTTP 200 を 0.031秒で返しました。

Vaultwarden 1.36.0 実測スペック
Vaultwarden 1.36.0 実測スペック

Nginx + Let’s Encrypt でHTTPS化する

Bitwarden/Vaultwardenの公式クライアント(ブラウザ拡張・スマホアプリ)はHTTPSを必須とします。HTTP のままでは接続できません。VultrやConoHaなどのVPSにドメインを向けて、Let’s EncryptでSSL証明書を取得しましょう。

手順1:Nginx + Certbotをインストールする




ubuntu@vps: ~
$ sudo apt install -y nginx certbot python3-certbot-nginx
Setting up nginx (1.24.0-2ubuntu7.3) …
Setting up certbot (2.9.0-1) …
$ nginx -v
nginx version: nginx/1.24.0 (Ubuntu)

手順2:Nginx のリバースプロキシ設定を作成する

/etc/nginx/sites-available/vaultwarden.conf を作成します。




ubuntu@vps: ~
$ sudo tee /etc/nginx/sites-available/vaultwarden.conf <<‘EOF’
server {
listen 80;
server_name vault.example.com; # ← 自分のドメインに変更

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;
proxy_read_timeout 90;
}
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”;
}
}
EOF
$ sudo ln -sf /etc/nginx/sites-available/vaultwarden.conf /etc/nginx/sites-enabled/
$ sudo nginx -t
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl reload nginx

手順3:Let’s Encrypt 証明書を取得する




ubuntu@vps: ~
$ sudo certbot –nginx -d vault.example.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for vault.example.com
Waiting for verification…
Cleaning up challenges
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/vault.example.com/fullchain.pem
Congratulations! You have successfully enabled HTTPS on https://vault.example.com

証明書取得後、Certbotが自動的にNginx設定をHTTPSに書き換えてくれます。https://vault.example.com にアクセスして錠前アイコンが表示されれば完了です。

VPS選びのポイント

  • パスワードサーバーは 固定IPが必須(ドメイン設定のため)
  • 最低スペック:vCPU 1 / RAM 512MB で動作確認済み
  • 東京リージョンを選ぶと国内からのアクセスが速い(推奨)

管理パネル(/admin)の設定

Vaultwarden 管理パネル(/admin)
Vaultwarden 管理パネル(/admin)

https://vault.example.com/admin にアクセスすると管理パネルのログイン画面が表示されます。ADMIN_TOKEN 生成時に入力した「元のパスワード」を入力してください。

管理パネルでできる主な設定

設定項目 説明 推奨値
Signups allowed 新規アカウント作成を許可するか 初期設定後は false(自分だけ使う場合)
Signups domains whitelist 許可するメールドメインを絞る 家族で使うなら family.example.com
Email 2FA メールによる二要素認証 SMTPを設定した場合は有効化推奨
Org creation allowed 組織(共有フォルダ)の作成を許可するか 個人利用なら false でよい
HTTPS(Rocket TLS) Nginxリバースプロキシ経由の場合は不要 今回の構成では 無効(Nginx側でTLS終端)

新規登録を締め切る(重要)

自分のアカウントを作成し終えたら、管理パネルで Signups allowedfalse に変更して保存します。これをしないと誰でも登録できてしまいます。

ブラウザから接続・アカウント作成

Vaultwarden Webvault ログイン画面
Vaultwarden Webvault ログイン画面

https://vault.example.com にアクセスすると、BitwardenのWebブラウザクライアントが表示されます。これがWebvaultです。初回は「アカウントを作成」から登録します。

Vaultwarden アカウント作成画面
Vaultwarden アカウント作成画面

スマホ・ブラウザ拡張からの接続方法

Bitwarden公式アプリ(iOS / Android)やブラウザ拡張(Chrome / Firefox)は、設定画面でサーバーURLを変更するだけでVaultwardenに接続できます。




Bitwarden アプリ 設定手順
# スマホアプリの場合
アプリを開く → 「ログイン」画面左下の「自己ホスト型環境」をタップ
サーバーURL: https://vault.example.com
# ブラウザ拡張の場合
拡張アイコン右クリック → 設定 → 「自己ホスト型環境」
サーバーURL: https://vault.example.com

セキュリティ強化の推奨設定

①SSH鍵認証でVPSへの不正アクセスを防ぐ

パスワードサーバーを動かすVPSは、SSHの設定を強化しておくことが重要です。ed25519鍵を使った鍵認証に切り替えましょう。




ubuntu@vps: ~
# ローカルPCで実行
$ ssh-keygen -t ed25519 -f ~/.ssh/vaultwarden_key -C “vaultwarden@linuxlab”
Generating public/private ed25519 key pair.
Your identification has been saved in /home/user/.ssh/vaultwarden_key
Your public key has been saved in /home/user/.ssh/vaultwarden_key.pub
The key fingerprint is:
SHA256:e95mHwXTxppH1c41SKrUV9/pGVSR91lPETdyPLLFsZA vaultwarden@linuxlab

Ubuntu 24.04 の OpenSSH は 9.6p1(2026-06-13 実測)です。ed25519 鍵は RSA 2048bit より安全で、鍵のサイズも小さいため現在の推奨鍵タイプです。

②UFWファイアウォールで不要なポートを塞ぐ




ubuntu@vps: ~
$ sudo ufw default deny incoming
$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw enable
Firewall is active and enabled on system startup
$ sudo ufw status
Status: active
To Action From
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere

注意

ufw enable の前に必ず ufw allow ssh を実行してください。忘れると自分自身がSSH接続できなくなります。VPSコンソール(Vultrならシリアルコンソール)からの復旧が必要になります。

③定期バックアップを設定する

Vaultwardenのデータは /opt/vaultwarden/data/ 以下にSQLiteファイルとして保存されています。cronで定期的にバックアップしておきましょう。




ubuntu@vps: ~
# 毎日深夜3時にバックアップ
$ crontab -e
0 3 * * * tar -czf /opt/vaultwarden/backup_$(date +\%Y\%m\%d).tar.gz /opt/vaultwarden/data/

よくあるエラーと解決策

「This service is not available」と表示される

Vaultwardenのコンテナが起動していない場合に発生します。docker ps でコンテナの状態を確認してください。




ubuntu@vps: ~
$ docker ps -a –filter name=vaultwarden
CONTAINER ID IMAGE STATUS
(出ない場合はコンテナが削除されている)
$ docker start vaultwarden
vaultwarden

ブラウザ拡張が「サーバーに接続できません」となる

HTTPSが設定されていないか、証明書が無効な状態です。certbot renew --dry-run で証明書の更新状態を確認してください。Let’s Encrypt証明書の有効期限は90日で、Certbotのsystemdタイマーが自動更新してくれます。




ubuntu@vps: ~
$ sudo certbot renew –dry-run
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/vault.example.com/fullchain.pem (success)
$ sudo systemctl status certbot.timer
● certbot.timer – Run certbot twice daily
Active: active (waiting)

管理パネル(/admin)に入れない

ADMIN_TOKEN を Argon2ハッシュ形式で設定した場合、ログインには「生成時に入力したパスワード」を使います。ハッシュ文字列($argon2id$...)ではありません。正直ここは詰まりやすいポイントです。

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

実際に試してみると、Vaultwardenは本当に軽いです。他のセルフホストサービスと同居しても、起動中のメモリ使用量は 60MB 以下でした。$5/月の最安VPSでも余裕で動かせます。

まとめ

Vaultwarden 1.36.0 をUbuntu 24.04 LTS + Dockerで動かす手順をまとめました。

  • docker.io 29.1.3(Ubuntu 24.04 リポジトリ版)をインストールして Vaultwarden を起動
  • Vaultwarden のイメージサイズは 277MB、HTTP 応答は 0.031秒と軽量(2026-06-13 実測)
  • ADMIN_TOKEN は vaultwarden hash コマンドで Argon2ハッシュを生成して設定する
  • Nginx + Let’s Encrypt でHTTPS化してからクライアントを接続する
  • 初期アカウント作成後は SIGNUPS_ALLOWED=false で新規登録を締め切る
  • UFWファイアウォールとSSH鍵認証でVPSへの不正アクセスを防ぐ

パスワードを自分のサーバーで管理できると、クラウドサービスのデータ漏洩を気にせず使えます。VPSを借りてセキュアなパスワード環境を構築してみてください。

コメント

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