1256 字
6 分钟
零成本搭建 Vaultwarden:基于 ClawCloud 与 Supabase 的免费部署与自动备份方案

引言#

随着通行密钥的兴起以及越来越多的软件开始引入 2FA 安全机制,我开始使用密码管理工具。

原本使用的是 Microsoft Edge 加 Microsoft Authenticator 的组合,但微软砍刀部发力,Authenticator 的自动填充功能被删除了,Edge 也天天出问题,我没法登录账号,所以换密码管理器已经是板上钉钉的事了。 一开始看了好多个密码管理器,感觉订阅费都挺贵。虽然 Bitwarden 可以免费使用,但 2FA 相关功能需要付费,所以也很犹豫。不过在网上看到 Bitwarden 能自建,而且有一个轻量化的自建客户端叫 Vaultwarden,配置很低也可以搭建,还可以解锁很多付费功能。

NOTE

如果不想折腾自建可以参考 二叉树树的文章修改 Bitwarden 或者参考 密码管理器折腾记

挑选厨具#

原本打算在家里云里面搭建这个,但全天候开着 VPN 耗电是个问题,而且移动大内网很难拿到公网 IP,内网穿透又不稳定,最后兜兜转转还是选择了免费的容器平台。 cloudflared不稳定因素

NOTE

免费的 serverless 平台可以参考 二叉树树的盘点free-backend-hosting.md 免费的容器可以参考 free-database-hosting.md

本次搭建使用的是 ClawCloud 新加坡区Supabase 新加坡区,没有使用 App Store 自带的镜像文件搭建,这样备份更方便。 Claw界面1 注册 ClawCloud Run 账号需要使用超过 180 天的 GitHub 账号以获取每月 $5 的赠送余额。注册 Supabase 则没有要求,用自建邮箱也可以过,我使用的是 .fun 结尾的邮箱。

前置工作#

首先进入 Supabase,建立数据库。Organization Name 随便填写,英文即可。在新建 project 时根据实际联通情况选择,我选择的是新加坡区。 Supabase创建页面1

NOTE

记得勾上 Auto RLS,避免访问受限出现问题。

新建数据库时选择免费机,硬盘 1G。数据库密码可以设置,也可以生成;如果忘记保存密码,可以在 project 下选择 database/settings,并点击 Reset Database Password。 创建好以后,进入 project,选择上方的 connect,修改连接方式为 Session pooler。会得到一个链接,格式如下,将密码替换进 [YOUR-PASSWORD] 后复制备用。

postgresql://postgres.(project name):[YOUR-PASSWORD]@aws-1-ap-northeast-1.pooler.supabase.com:5432/postgres

Supabase创建页面2

如果使用 Koyeb 这种支持 IPv6 双栈的平台,可以使用 Direct Connection,否则建议 Session pooler。

然后就是去 Bitwarden 官网申请一个推送 ID 和推送 KEY,保存下来备用,具体可以参考 Vaultwarden Wiki 中文版

NOTE

不用推送 key 和 id 也可以使用,但是会影响自动同步,具体参考 Wiki 说明。

正式搭建#

之后我们进入 ClawCloud Run,点击 App Launchpad,然后点击 Create App。 Claw创建页面 镜像名字写 vaultwarden/server,我们有数据库,所以不需要配置存储,配置直接给最低,80 端口的 Public Access 打开,然后会生成一个域名,之后可以使用这个域名登入 Vaultwarden。

TIP

可以使用自定义域名来访问这个 Vaultwarden 实例,参考 ClawCloud 的文档以获取更多信息。

之后就是重头戏,环境变量的设置。在 Environment Variables 旁边点击 Add,之后按照以下格式输入。

DATABASE_URL=postgresql://postgres.(projectname):(password)@(database address):(prot)/(location)
LOG_LEVEL=error
PUSH_ENABLED=true
PUSH_INSTALLATION_ID=(填入官网获取的 id)
PUSH_INSTALLATION_KEY=(填入官网获取的 key)

之后点击保存,应该会出现如下图的界面。 Claw环境变量 点击最上方的 Deploy Application 之后,你的 Vaultwarden 实例就要上线了。 之后就可以根据个人喜好配置 Vaultwarden 了。 VW

CAUTION

由于前面的教程没有配置 SMTP 发件服务器,所以没办法使用忘记密码,请务必记得你的主账号的密码,或者使用其他的密码管理器单独记录 Vaultwarden 的主账号密码。

自动备份数据库#

在 NAS 或者其他设备上要先安装好 postgresql-client,我们需要使用里面的 pg_dump 工具。 以下是可以参考使用的自动备份脚本:

#!/bin/bash
# 配置区域
# 根据你的网络连通性,选择 Direct Connection 或 Session Pooler 的 URI
DB_URI="postgresql://postgres.[project-name]:[YOUR-PASSWORD]@[pool-address]:[port]/[location]"
BACKUP_DIR="/path/to/backups/vaultwarden"
DATE=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/vaultwarden_$DATE.dump"
# 保留最近 7 天的备份
DAYS_TO_KEEP=7
echo "开始备份 Supabase 数据库..."
# 运行 pg_dump
pg_dump "$DB_URI" -Fc -f "$BACKUP_FILE"
if [ $? -eq 0 ]; then
echo "备份成功: $BACKUP_FILE"
# 删除旧备份
find "$BACKUP_DIR" -name "vaultwarden_*.dump" -type f -mtime +$DAYS_TO_KEEP -exec rm {} \;
echo "旧备份清理完毕。"
else
echo "备份失败!"
exit 1
fi

之后只需要设置好 crontab 定时任务即可备份到指定的路径了,参考 cron 语句如下:

0 6 * * * /home/timmy/scripts/backup_db.sh >> /home/timmy/backups/vaultwarden/backup.log 2>&1
#每天早上6点备份

可以查看 /home/timmy/backups/vaultwarden/backup.log 文件以获取备份状态。

结语#

本文就此结束,享受你的密码管理工具吧~
至于如何使用Vaultwarden和恢复备份,本文不再过多赘述。

零成本搭建 Vaultwarden:基于 ClawCloud 与 Supabase 的免费部署与自动备份方案
https://www.timmyc.fun/posts/vw-free/
作者
Timmy Cheng
发布于
2026-03-21
许可协议
CC BY-NC-SA 4.0