Skip to content

🚀 使用 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"功能安全分享加密信息。 * 紧急访问:设置紧急联系人,在需要时可访问你的密码库。

⚙️ 部署前准备

  1. 环境要求

    • 已安装 DockerDocker Compose(推荐使用较新版本)。
    • 系统内存:至少 512MB(1GB 以上更佳)。
    • 磁盘空间:根据密码库大小而定,建议预留 1GB 以上空间。
  2. 环境检查 在终端中执行以下命令,确认 Docker 环境正常: bash docker --version docker-compose --version

  3. 创建项目目录 创建一个独立的目录来管理 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"

🚀 启动与验证

  1. 启动服务docker-compose.yml 文件所在目录执行: bash docker-compose up -d 此命令会拉取镜像并在后台启动容器。

  2. 检查服务状态 bash docker-compose ps 如果看到 vaultwarden 容器的状态为 Up,就表示部署成功了。

  3. 查看实时日志(可选) 如果遇到问题,可以通过以下命令查看容器日志来排查: bash docker-compose logs -f vaultwarden

  4. 访问 Web 界面 打开浏览器,访问 http://你的服务器IP:3017

    • 如果一切正常,你将看到 Vaultwarden 的 Web 界面。
    • 注意:此时使用的是 HTTP 连接,某些功能(如 WebAuthn)可能需要 HTTPS。在生产环境中,强烈建议配置反向代理并启用 HTTPS

⚙️ 基础配置与使用

  1. 创建账户

    • 首次访问 Web 界面,点击"创建账户"。
    • 输入邮箱和主密码(务必使用强密码并妥善保管)。
    • 成功后系统会自动登录。
  2. 安全加固

    • 禁用公开注册:在 docker-compose.yml 中设置 SIGNUPS_ALLOWED: "false",然后运行 docker-compose up -d 重启服务。
    • 启用两步验证:在账户设置中启用 TOTP 或 WebAuthn 双重验证。
    • 配置管理员页面(可选):如设置了 ADMIN_TOKEN,可通过 https://你的域名/admin 访问管理界面。
  3. 配置客户端

    • 浏览器扩展:安装官方 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 的部署,享受安全、私有的密码管理体验!