🚀 使用 Docker Compose 部署 Vaultwarden
🚀 使用 Docker Compose 部署 Vaultwarden
Vaultwarden(原名 Bitwarden_RS)是一个采用 Rust 编写的非官方 Bitwarden 服务器实现。它与所有官方 Bitwarden 客户端完全兼容(包括浏览器扩展、桌面应用和移动 App),但资源占用极低,非常适合在家庭服务器、NAS 或小型 VPS 上自托管。
📦 项目简介
Vaultwarden 的出现,解决了官方 Bitwarden 服务器对资源要求较高的问题。它保留了 Bitwarden 的核心功能,让你可以完全掌控自己的密码数据。
为了让你快速了解 Vaultwarden 与官方版的区别,请看下表:
| 特性 | Vaultwarden | Bitwarden 官方版 |
|---|---|---|
| 资源占用 | 极低(约 10MB 内存) | 较高(至少 2GB 内存) |
| 数据库 | SQLite(支持 MySQL/PostgreSQL) | MSSQL |
| 开发语言 | Rust | .NET |
| 核心功能 | 免费使用 TOTP、附件等高级功能 | 高级功能需付费 |
| 企业功能 | 不支持目录同步、SSO 等 | 支持完整企业功能 |
主要功能亮点: * 安全存储:加密存储密码、信用卡信息、私人笔记等敏感数据。 * 跨平台同步:支持在多个设备间实时同步密码库。 * TOTP 双重验证:支持生成和存储两步验证令牌,并可配置 U2F 和 FIDO2 WebAuthn 身份验证。 * 密码共享:通过"Send"功能安全分享加密信息。 * 紧急访问:设置紧急联系人,在需要时可访问你的密码库。
⚙️ 部署前准备
-
环境要求
- 已安装 Docker 和 Docker Compose(推荐使用较新版本)。
- 系统内存:至少 512MB(1GB 以上更佳)。
- 磁盘空间:根据密码库大小而定,建议预留 1GB 以上空间。
-
环境检查 在终端中执行以下命令,确认 Docker 环境正常:
bash docker --version docker-compose --version -
创建项目目录 创建一个独立的目录来管理 Vaultwarden 的所有文件,这有助于日后管理和备份。
bash mkdir -p /opt/docker/vaultwarden cd /opt/docker/vaultwarden
🛠️ 配置 Docker Compose
基于你提供的配置并参考最佳实践,创建 docker-compose.yml 文件:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
#DOMAIN: https://vw.domain.tld
DOMAIN: https://vw.clxr-25.top # 你的域名,务必包含 https:// 前缀
#先用官网链接创建账号,再用反代https来登录账号自建使用。
# SIGNUPS_ALLOWED: "false" # 初始设置后建议设为 false 禁止公开注册
# ADMIN_TOKEN: "your_secret_token_here" # 可选:设置管理员令牌
# 服务域名(需替换为你的域名,后续需配置HTTPS)
# 提示:先用服务器IP:3017创建账号,再通过HTTPS反代登录使用
volumes:
- ./vw-data:/data # 持久化存储配置和数据
ports:
- "3017:80" # 主机端口:容器端口 # 端口映射:服务器3017端口 -> 容器80端口(容器内默认HTTP端口)
deploy:
resources:
limits: # 资源限制(防止占用过多服务器资源)
cpus: '1.0' # 限制CPU使用,可根据实际情况调整
memory: 1G # 限制内存使用,可根据实际情况调整
关键配置说明:
| 配置项 | 说明与建议 |
|---|---|
DOMAIN |
必须设置为你的域名,且包含 https:// 前缀。这对于 WebAuthn 等安全功能的正常工作至关重要。 |
volumes |
./vw-data:/data 用于持久化存储Vaultwarden 的数据库和配置,务必确保数据安全。 |
ports |
"3017:80" 将容器内的 80 端口映射到主机的 3017 端口。你可以根据需要修改主机端口(前面的3017),但容器端口(后面的80)请保持不变。 |
SIGNUPS_ALLOWED |
初始设置时可设为 true 以便注册账户,创建账户后强烈建议设为 false 禁止公开注册。 |
ADMIN_TOKEN |
(可选)设置后可通过 https://你的域名/admin 访问管理页面,令牌需使用强密码。 |
注意:如果你使用子路径(如
https://domain.com/vault)而非子域名,DOMAIN 环境变量需要设置为完整的 URL 路径,例如DOMAIN: "https://domain.com/vault"。
🚀 启动与验证
-
启动服务 在
docker-compose.yml文件所在目录执行:bash docker-compose up -d此命令会拉取镜像并在后台启动容器。 -
检查服务状态
bash docker-compose ps如果看到vaultwarden容器的状态为Up,就表示部署成功了。 -
查看实时日志(可选) 如果遇到问题,可以通过以下命令查看容器日志来排查:
bash docker-compose logs -f vaultwarden -
访问 Web 界面 打开浏览器,访问
http://你的服务器IP:3017。- 如果一切正常,你将看到 Vaultwarden 的 Web 界面。
- 注意:此时使用的是 HTTP 连接,某些功能(如 WebAuthn)可能需要 HTTPS。在生产环境中,强烈建议配置反向代理并启用 HTTPS。
⚙️ 基础配置与使用
-
创建账户
- 首次访问 Web 界面,点击"创建账户"。
- 输入邮箱和主密码(务必使用强密码并妥善保管)。
- 成功后系统会自动登录。
-
安全加固
- 禁用公开注册:在
docker-compose.yml中设置SIGNUPS_ALLOWED: "false",然后运行docker-compose up -d重启服务。 - 启用两步验证:在账户设置中启用 TOTP 或 WebAuthn 双重验证。
- 配置管理员页面(可选):如设置了
ADMIN_TOKEN,可通过https://你的域名/admin访问管理界面。
- 禁用公开注册:在
-
配置客户端
- 浏览器扩展:安装官方 Bitwarden 扩展,在设置中选择"自托管",输入你的服务器 URL。
- 移动端 App:安装 Bitwarden App,在设置中填写你的服务器 URL。
- 桌面客户端:同样在设置中配置自托管服务器地址。
🔒 维护与管理
-
服务管理:
- 停止服务:
docker-compose down - 重启服务:
docker-compose restart - 查看服务状态:
docker-compose ps
- 停止服务:
-
数据备份:
- 定期备份
vw-data目录,这里包含了所有用户数据和配置。 - 备份你的
docker-compose.yml文件。
- 定期备份
-
版本更新: Vaultwarden 活跃更新,建议定期升级:
bash # 进入 docker-compose.yml 所在目录 docker-compose down docker-compose pull # 拉取最新镜像 docker-compose up -d docker image prune # 可选:清理旧的镜像文件
🌐 进阶配置(可选)
配置反向代理和 HTTPS 要启用 HTTPS 并实现更安全的访问,可以配置 Nginx 或 Caddy 作为反向代理。
以下是一个简单的 Nginx 配置示例:
server {
listen 443 ssl;
server_name vw.clxr-25.top; # 你的域名
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
location / {
proxy_pass http://localhost:3017; # 转发给 Vaultwarden
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;
}
}
🐛 常见问题排查 (FAQ)
| 问题现象 | 可能原因与解决方法 |
|---|---|
| 无法访问 Web 界面 | 1. 检查防火墙/安全组是否放行了你设置的主机端口(例如 3017)。 2. 确认容器是否正常运行: docker-compose ps。3. 查看容器日志: docker-compose logs vaultwarden。 |
| WebAuthn/U2F 不工作 | 1. 确认 DOMAIN 环境变量设置为 https:// 开头。2. 确认已配置有效的 SSL 证书。 |
| 客户端连接失败 | 1. 检查客户端中配置的服务器 URL 是否正确。 2. 确认反向代理配置正确(如果使用)。 |
| 数据丢失 | 检查是否正确配置了持久化卷 ./vw-data:/data,确保数据目录有写入权限。 |
| 使用子路径时资源加载错误 | 确保 DOMAIN 变量包含完整路径,且反向代理配置正确处理了路径转发。 |
💡 提示:部署完成后,务必禁用公开注册(除非你需要开放注册),并定期备份你的数据。
希望这份教程能帮助你顺利完成 Vaultwarden 的部署,享受安全、私有的密码管理体验!