CloudFlare 部署 Vaultwarden Web(Warden Worker)

清夏晚风 Lv7

本文将介绍如何通过 Cloudflare Workers + D1 数据库部署 Warden Worker(兼容 Bitwarden 的密码管理器),实现零成本、零维护的私人密码管理服务。

1. 项目简介

Warden Worker(项目地址:https://github.com/qaz741wsd856/warden-worker)是一个自托管的、兼容 Bitwarden 协议的密码管理服务器,可完全部署在 Cloudflare Workers 免费层上。

  • 技术栈:Rust → WASM + Cloudflare Workers + Cloudflare D1(SQLite 数据库)
  • 许可证:MIT
  • 版本:v0.7.0

与传统方案对比

对比维度 传统 VPS + Vaultwarden Warden Worker(本方案)
服务器成本 最低 ¥30/月 免费(Cloudflare 免费额度)
维护工作 需定期打安全补丁、更新系统 零维护(Serverless)
可用性 单点故障风险 全球边缘网络,高可用
数据安全 端到端加密 + 自主可控 端到端加密 + 自主可控
部署门槛 需 Linux/Docker 基础 需基础 CLI 操作

支持的功能

功能 说明
核心密码库 创建、读取、更新、删除密码项和文件夹
文件附件 支持 Cloudflare KV(≤25MB)或 R2(≤100MB)
Bitwarden Send 通过链接分享加密文本或文件
设备管理 查看和撤销活跃会话
实时同步 WebSocket 推送 + 移动端推送通知
TOTP 支持 存储和生成基于时间的一次性密码
多端兼容 与官方 Bitwarden 客户端完全兼容(浏览器扩展、Android、iOS)

⚠️ 不支持:组织共享、2FA 登录(TOTP 除外)、紧急访问、管理操作等高级功能。

2. 部署方式一:GitHub Actions(推荐)

无需在本地配置 Rust 编译环境,通过 CI/CD 自动构建部署。

2.1 Fork 项目

前往 qaz741wsd856/warden-worker 点击 Fork 到你的 GitHub 账号。

2.2 创建 D1 数据库

  1. 登录 Cloudflare Dashboard
  2. 导航至 Workers & PagesD1
  3. 点击 Create database
    • 名称建议填写:warden
    • 创建成功后,复制数据库 ID(database_id)

2.3 修改配置文件

在你的 Fork 仓库中,编辑 wrangler.jsonc,将 d1_databases 部分的 database_id 替换为你的 D1 数据库 ID:

1
2
3
4
5
6
7
8
9
{
"d1_databases": [
{
"binding": "DB",
"database_name": "warden",
"database_id": "你的D1数据库ID" // ← 替换这里
}
]
}

2.4 配置 GitHub Secrets

进入你的 Fork 仓库 SettingsSecrets and variablesActions,添加以下 secrets:

Secret 名称 说明 获取方式
CLOUDFLARE_API_TOKEN Cloudflare API 令牌 Cloudflare 个人资料 → API Tokens → 创建(权限:Workers 编辑 + D1 编辑)
CLOUDFLARE_ACCOUNT_ID 账户 ID Cloudflare Dashboard 右侧栏 → Account ID

2.5 触发部署

  • 在 Actions 页面,找到 Deploy 工作流,点击 Run workflow
  • 等待约 3-5 分钟,构建和部署会自动完成
  • 部署成功后,Cloudflare 会自动分配一个 <your-worker>.workers.dev 域名

2.6 初始化数据库

部署完成后,初始化 D1 数据库表结构:

1
2
3
4
5
6
7
8
# 安装 Wrangler CLI(如未安装)
pnpm install -g wrangler

# 登录 Cloudflare
wrangler login

# 初始化数据库(执行 SQL 建表脚本)
wrangler d1 execute warden --remote --file=sql/schema_full.sql

3. 部署方式二:Wrangler CLI

适用于需要在本地调试或自定义构建的高级用户。

3.1 前置条件

3.2 克隆项目

1
2
git clone https://github.com/qaz741wsd856/warden-worker.git
cd warden-worker

3.3 创建并配置 D1 数据库

1
2
# 创建数据库
wrangler d1 create warden-sql

将输出中的 database_id 填入 wrangler.jsonc

3.4 编译为 WASM 并部署

1
2
3
4
5
6
7
8
# 初始化数据库
wrangler d1 execute warden-sql --remote --file=sql/schema_full.sql

# 编译 Rust 为 WASM
cargo build --release

# 部署到 Cloudflare Worker
wrangler deploy

💡 如果部署失败,可先安装 worker-build

1
cargo install worker-build

4. 配置安全变量(必做)

部署完成后,必须设置以下安全环境变量。通过 Wrangler CLI 或 Cloudflare Dashboard 设置:

4.1 设置白名单邮箱(防止滥用)

1
wrangler secret put ALLOWED_EMAILS

输入允许注册的邮箱地址(如 your-email@example.com),多个邮箱用逗号分隔。

4.2 设置 JWT 密钥

1
2
wrangler secret put JWT_SECRET
wrangler secret put JWT_REFRESH_SECRET

输入任意随机字符串即可,建议使用密码生成器生成 32 位以上的随机字符串。

4.3 设置两步验证加密密钥

1
wrangler secret put TWO_FACTOR_ENC_KEY

需要输入 32 字节的 Base64 编码文本。可以使用以下命令生成:

1
openssl rand -base64 32

4.4 注册后关闭注册(可选)

第一个账号注册完成后,在 Cloudflare Dashboard 中添加环境变量:

1
SIGNUPS_ALLOWED = false

5. 绑定自定义域名

  1. 在 Cloudflare Dashboard 进入 Workers & Pages
  2. 点击刚才部署的 Worker
  3. 进入 TriggersCustom Domains
  4. 点击 Add Custom Domain
  5. 输入你的域名(如 vault.example.com),Cloudflare 会自动添加 DNS 记录
    • ⚠️ 代理状态必须为 Proxied(橙色云图标)

6. 客户端配置与使用

6.1 Web 端访问

直接访问你的 Worker 域名即可看到 Bitwarden Web Vault 登录界面,注册账号后即可使用。

6.2 Bitwarden 客户端配置

Bitwarden 浏览器扩展移动端 App 中:

  1. 点击左上角 设置 ⚙️
  2. 找到 自托管环境Self-hosted Environment
  3. 将服务器地址改为你的 Worker 域名
  4. 使用刚才注册的邮箱和主密码登录

6.3 WebSocket 实时同步

Warden Worker 默认启用 WebSocket 推送,多端同步即时生效。如需配置移动端推送通知:

1
2
3
wrangler secret put PUSH_INSTALLATION_ID
wrangler secret put PUSH_INSTALLATION_KEY
wrangler secret put PUSH_ENABLED

推送相关配置参考 Bitwarden 官方 Push Relay 文档。

7. 安全加固建议

措施 操作方式 优先级
限制注册 第一个账号注册后设置 SIGNUPS_ALLOWED = false ⭐ 高
开启 2FA 访问 /demo.html 页面,启用 TOTP 双因素认证 ⭐ 高
配置 WAF 规则 Cloudflare WAF 中限制非本国 IP 访问 ⭐ 中
定期备份 通过 Bitwarden 客户端导出 .json 加密备份文件到本地 ⭐ 中
强主密码 使用 16 位以上包含大小写+数字+符号的密码 ⭐ 高

数据安全说明:Bitwarden/Vaultwarden 采用端到端加密,所有加解密操作在客户端完成,主密码不会发送到服务器。即使 Cloudflare D1 数据库被攻破,黑客拿到的也只是 AES-256 加密的密文。

8. 更新与维护

8.1 更新 Fork

  1. 关注上游仓库的 Releases
  2. 在 GitHub 上同步你的 Fork
  3. GitHub Actions 会自动构建并部署新版本

8.2 数据库备份

  • 通过 GitHub Actions:项目内置自动备份 workflow,可定期备份 D1 数据库
  • D1 Time Travel:Cloudflare D1 支持时间点恢复
  • 手动导出wrangler d1 execute warden --remote --command=".dump" > backup.sql

8.3 高级配置

环境变量 默认值 说明
PASSWORD_ITERATIONS 600000 PBKDF2 迭代次数(越高越安全)
TRASH_AUTO_DELETE_DAYS 30 回收站自动清理天数
IMPORT_BATCH_SIZE 30 导入/删除批处理大小
BASE_URL 覆盖基础 URL
DISABLE_USER_REGISTRATION true 禁用注册按钮
HEAVY_DO 将 CPU 密集型任务卸载到 Durable Objects

9. 参考链接

  • Title: CloudFlare 部署 Vaultwarden Web(Warden Worker)
  • Author: 清夏晚风
  • Created at : 2025-12-10 11:51:44
  • Updated at : 2026-07-19 01:57:11
  • Link: https://blog.yuil.cn/2025/12/10/密码管理工具/Vaultwarden Web/01.CloudFlare部署Vaultwarden Web/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments