云函数自建 Vaultwarden 密码管理器: 稳定、低成本、高可用、安全

云函数自建 Vaultwarden 密码管理器: 稳定、低成本、高可用、安全

admin
2024-08-10 / 0 评论 / 92 阅读 / 正在检测是否收录...

最近看到 Chrome 密码管理器出现问题了,虽然没有波及到我,但感觉用谷歌浏览器的密码管理器还是不太安全,所以准备自建。

自建目标

  • 稳定
  • 低成本
  • 高可用
  • 安全

经过考虑, 选择了 Vaultwarden,并用阿里云函数通过 docker 部署。

Vaultwarden 简介

Vaultwarden 是一款开源密码管理器, 通过 Rust 编写并基于 Bitwarden API 实现。客户端仍使用 Bitwarden, 只需对接 Vaultwarden 的 API 即可。

准备工作

  1. 一个阿里云账号(腾讯云不知道有没有 docker 部署)
  2. 本地 docker 环境或具有 docker 环境的 VPS (最好是国内的, 传输更快)

部署步骤

1. 创建阿里云容器镜像服务实例

  • 登录阿里云账号, 进入容器镜像服务控制台
  • 开通免费个人实例
  • 创建命名空间 (名称随意)
  • 创建名为 "vaultwarden" 的镜像仓库
  • 设置访问凭证密码

2. 登录 Docker 到阿里云

docker login --username=xxxxxxxxxxxx registry.cn-shenzhen.aliyuncs.com

xxxxx 是你的阿里云账号,就是右上角头像那里,看清楚不是 id,一般新用户是 “aliyun” 开头的,改了的自己看清楚

登录密码就是上面访问凭证设置的密码

3. 准备并上传 Docker 镜像

# 拉取官方镜像
docker pull vaultwarden/server:latest
 # 查看镜像ID
docker images
 # 标记镜像
docker tag 9ae942f38c7c registry.cn-shenzhen.aliyuncs.com/space/vaultwarden:2024.8.5
 # 推送镜像到阿里云
docker push registry.cn-shenzhen.aliyuncs.com/space/vaultwarden:2024.8.5

这一步很重要,是为了上传镜像到阿里云(阿里不允许从公用 hub 直接 pull)

cn-shenzhen 是地域,自己换成自己开的地域,space 是上面设置的命名空间,vaultwarden 就是上面设置的你准备上传到阿里的镜像仓库名称,2024.8.5 是 tag,自己随便设置就行,我喜欢设置日期,方便后面更新的时候对比。

4. 创建阿里云函数

  • 打开函数计算控制台
  • 创建 Web 函数, 选择自定义容器镜像
  • 选择刚才上传的镜像
  • 设置监听端口为 80
  • 配置 CPU 和内存 (0.25 CPU, 256MB 内存),个人使用是够了的,别开高了,等会内存泄漏,反薅
  • 设置单实例并发为 100
  • 选择上海时区

5. 配置函数

  • 开启专有网络 (自动配置)
  • 开通 NAS 文件系统 (自动配置),会挂载一个点,自己看挂载的目录
  • 添加环境变量:

    # 数据目录
    DATA_FOLDER=/mnt/vaultwarden
    # 这个不解释,自己搜索
    ENABLE_DB_WAL=false
  • 部署函数

6. 临时访问设置

自己在阿里云有已经备案过的域名可以跳过 6 和 7 步,直接绑定自己的。

由于近期云函数整改, 需要通过以下步骤实现临时访问:

  1. 创建新的 Flask 应用获取 30 天有效域名
  2. 将该域名绑定到 Vaultwarden 函数,在进行 web 操作

7. 后续操作

  • 在 30 天域名过期前, 通过 Web 导入密码库
  • 之后直接使用函数原始 URL 调用 API

成本估算

免费套餐结束后, 个人使用年费用预计在几块钱左右,小 cpu 加冷启动会更便宜

云函数正价、nas 存储的成本自己去看阿里云的价格表

注意别让反薅了

1

评论

博主关闭了所有页面的评论