CloudFlare 部署 Vaultwarden Web(Warden Worker)
本文将介绍如何通过 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 数据库
- 登录 Cloudflare Dashboard
- 导航至 Workers & Pages → D1
- 点击 Create database
- 名称建议填写:
warden - 创建成功后,复制数据库 ID(database_id)
- 名称建议填写:
2.3 修改配置文件
在你的 Fork 仓库中,编辑 wrangler.jsonc,将 d1_databases 部分的 database_id 替换为你的 D1 数据库 ID:
1 | { |
2.4 配置 GitHub Secrets
进入你的 Fork 仓库 Settings → Secrets and variables → Actions,添加以下 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 | # 安装 Wrangler CLI(如未安装) |
3. 部署方式二:Wrangler CLI
适用于需要在本地调试或自定义构建的高级用户。
3.1 前置条件
- 安装 Rust:前往 https://www.rust-lang.org/tools/install
- 安装 Node.js / pnpm
- 安装 Wrangler CLI:
pnpm install -g wrangler
3.2 克隆项目
1 | git clone https://github.com/qaz741wsd856/warden-worker.git |
3.3 创建并配置 D1 数据库
1 | # 创建数据库 |
将输出中的 database_id 填入 wrangler.jsonc。
3.4 编译为 WASM 并部署
1 | # 初始化数据库 |
💡 如果部署失败,可先安装
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 | wrangler secret put JWT_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. 绑定自定义域名
- 在 Cloudflare Dashboard 进入 Workers & Pages
- 点击刚才部署的 Worker
- 进入 Triggers → Custom Domains
- 点击 Add Custom Domain
- 输入你的域名(如
vault.example.com),Cloudflare 会自动添加 DNS 记录- ⚠️ 代理状态必须为 Proxied(橙色云图标)
6. 客户端配置与使用
6.1 Web 端访问
直接访问你的 Worker 域名即可看到 Bitwarden Web Vault 登录界面,注册账号后即可使用。
6.2 Bitwarden 客户端配置
在 Bitwarden 浏览器扩展 或 移动端 App 中:
- 点击左上角 设置 ⚙️
- 找到 自托管环境 或 Self-hosted Environment
- 将服务器地址改为你的 Worker 域名
- 使用刚才注册的邮箱和主密码登录
6.3 WebSocket 实时同步
Warden Worker 默认启用 WebSocket 推送,多端同步即时生效。如需配置移动端推送通知:
1 | wrangler secret put PUSH_INSTALLATION_ID |
推送相关配置参考 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
- 关注上游仓库的 Releases
- 在 GitHub 上同步你的 Fork
- 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.