跳转到内容

Vaultwarden 自建密码管理服务完整部署指南

适用环境:Ubuntu / Fedora / Arch / CentOS
部署方式:Docker Compose
目标域名:vw.isrv.cn
HTTPS:acme.sh 证书
作者:Luo Xingding


本文介绍如何使用 Docker Compose 在服务器上部署 Vaultwarden(Bitwarden 的轻量化自托管实现),并通过 Nginx + HTTPS 实现安全访问,附带完整配置、环境变量和安全加固建议。

Vaultwarden 提供了与官方 Bitwarden 客户端兼容的 API,可搭配浏览器扩展、桌面端、移动端使用,数据完全保存在本地或自有服务器。


Terminal window
/opt/docker/vaultwarden/
├── docker-compose.yml
├── .env
└── data/

Terminal window
sudo mkdir -p /opt/docker/vaultwarden
cd /opt/docker/vaultwarden
Terminal window
sudo apt install docker.io docker-compose -y # Ubuntu/Debian
# 或
sudo dnf install docker docker-compose -y # Fedora

用于保存敏感变量(推荐使用 Argon2 哈希形式的管理员密码)。

Terminal window
VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$cmFuZG9tX3NhbHRfbWluaW11bV84X2NoYXJhY3RlcnM$oesx9INQVL9HGd/wBTLj3zZSXYqEZifnTcx01oZOgmA'
Terminal window
echo -n your_admin_password | argon2 "random_salt_minimum_8_characters" -e -id -k 65540 -t 3 -p 4

💡 只需记住 your_admin_password 作为登录后台密码。
.env 文件中保存的只是哈希值,不会泄露明文密码。


version: '3'
services:
vaultwarden:
container_name: vaultwarden
image: vaultwarden/server:latest
restart: unless-stopped
ports:
- "16210:80"
volumes:
- ./data:/data
environment:
- DOMAIN=https://vw.isrv.cn
- LOGIN_RATELIMIT_MAX_BURST=10
- LOGIN_RATELIMIT_SECONDS=60
- ADMIN_RATELIMIT_MAX_BURST=10
- ADMIN_RATELIMIT_SECONDS=60
- ADMIN_SESSION_LIFETIME=20
- ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}
- SENDS_ALLOWED=true
- EMERGENCY_ACCESS_ALLOWED=true
- WEB_VAULT_ENABLED=true
- SIGNUPS_ALLOWED=true

Terminal window
docker compose up -d

查看运行状态:

Terminal window
docker ps

确认端口监听:

Terminal window
sudo ss -tlnp | grep 16210

文件路径:/etc/nginx/conf.d/vaultwarden.conf

server {
listen 80;
server_name vw.isrv.cn;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name vw.isrv.cn;
ssl_certificate /etc/nginx/ssl/vw.isrv.cn/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/vw.isrv.cn/vw.isrv.cn.key;
location / {
proxy_pass http://127.0.0.1:16210;
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 https;
}
# 管理后台访问控制
location /admin {
allow 192.168.0.0/16; # 本地内网
allow 1.94.254.213; # 管理IP
deny all;
proxy_pass http://127.0.0.1:16210/admin;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

重新加载 Nginx:

Terminal window
sudo nginx -t
sudo systemctl reload nginx

功能地址
前端登录https://vw.isrv.cn
管理后台https://vw.isrv.cn/admin

首次访问时,使用你在生成 token 时设置的 明文密码 登录 /admin


Vaultwarden 数据目录:/opt/docker/vaultwarden/data/

文件功能说明
db.sqlite3用户数据库
rsa_key.pem / rsa_key.pub.pem加密密钥
attachments/附件存储目录
Terminal window
tar czvf /backup/vaultwarden_$(date +%F).tar.gz /opt/docker/vaultwarden/data

恢复时仅需解压覆盖即可。


操作命令
查看日志docker logs -f vaultwarden
停止容器docker compose down
更新版本docker compose pull && docker compose up -d
查看状态docker ps

  1. 使用 Argon2 哈希 token,禁止明文存储密码。

  2. 限制 /admin 路径访问,仅允许内网或特定 IP。

  3. 强制 HTTPS 访问,关闭 HTTP 明文访问。

  4. 单用户使用建议

    - SIGNUPS_ALLOWED=false
  5. 定期备份数据目录


至此,Vaultwarden 服务部署完成。
你现在拥有一个 完全私有、安全、可控 的密码管理系统,
兼容 Bitwarden 全平台客户端(浏览器扩展、桌面、手机),
同时所有数据均由你掌控。


📌 标签: #Vaultwarden #Bitwarden #Docker #自建服务 #密码管理
📦 目录:02_Nginx与网站/03_Vaultwarden部署指南.md