项目/工具
工具 · 运行中 · AI 自动收录

Vaultwarden 自建密码库部署

Vaultwarden 自建密码库部署

在 NAS 用 Docker 部署 Vaultwarden,经 Cloudflare、frpc、NPM 提供 HTTPS 密码库。

约 4 分钟阅读
VaultwardenDocker密码管理NASNPMHTTPS
← 返回列表

Vaultwarden 是兼容 Bitwarden 客户端的轻量密码库服务。本项目在 NAS(.164)上用 Docker 部署 vaultwarden/server:latest(1.37.4),将宿主机 8091 映射到容器 80,数据保存在 /opt/web/vaultwarden-data,并接入 sync.sh 每日备份。对外通过 Cloudflare 灰云 A 记录、frpc 的 web-https/web-http 代理和 NPM 反向代理提供 https://vault.xiejun-server.top 访问,复用 Let's Encrypt 多域名证书,支持 WebSocket,上传体积上限 525M。这样可把 NPM、Gitea、Memos、PhotoPrism、Open WebUI、博客后台、Windows 主机和路由器等重复/弱密码集中改为随机强密码,并逐步启用 TOTP。当前站点与 API 已验证正常,首个账号已注册,SIGNUPS_ALLOWED 已关闭,仅保留邀请注册;主密码更换和服务密码迁移仍在待办。

功能

  • 自建 Bitwarden 兼容密码库,Web Vault 与 API 已验证正常
  • Docker 部署,数据目录持久化并纳入每日备份
  • Cloudflare、frpc、NPM 全链路 HTTPS 访问
  • NPM 反代支持 WebSocket,上传体积上限 525M
  • 管理面板通过 ADMIN_TOKEN 登录
  • 注册关闭后保留邀请注册能力

技术栈

VaultwardenDockerCloudflarefrpcNginx Proxy ManagerLet's EncryptSQLite

使用 / 部署教程

部署与使用步骤

  1. DNS:在 Cloudflare 为 vault 添加 A 记录指向 38.76.200.139,保持 DNS only(灰云)。
  2. 容器:在 NAS .164 准备数据目录 /opt/web/vaultwarden-data,使用镜像 vaultwarden/server:latest,端口映射 8091:80。环境变量设置 DOMAIN=https://vault.xiejun-server.top、SIGNUPS_ALLOWED=true(首次注册用)、INVITATIONS_ALLOWED=true、TZ=Asia/Shanghai,并将 ADMIN_TOKEN 放入 /root/.vaultwarden-admin-token(权限 600)。具体启动命令按现有 Docker 配置执行。
  3. 反向代理:在 NPM 新建代理,80 端口走 ACME,443 反代到 127.0.0.1:8091,开启 WebSocket,设置 client_max_body_size 525M;配置文件位于 /opt/web/npm-data/nginx/proxy_host/23-vault.conf。
  4. 内网穿透:在 .164 的 frpc.toml 中为 web-https / web-http 加入 vault.xiejun-server.top。
  5. 证书:复用 xiejun-server.top 的 Let's Encrypt 多域名证书,配置 renew_hook 执行 docker exec npm nginx -s reload。
  6. 验证与初始化:访问 https://vault.xiejun-server.top/ 应返回 200,检查 /api/config 的 domain;注册首个账号后,将 SIGNUPS_ALLOWED 改为 false 并重启容器。管理面板访问 /admin,用 ADMIN_TOKEN 登录。
  7. 使用:把现有服务密码逐个改为随机强密码并存入 Vaultwarden,重要服务开启 TOTP;每周确认备份包含 vaultwarden-data。

常见问题

如何登录 Vaultwarden 管理面板?

访问 https://vault.xiejun-server.top/admin,使用 /root/.vaultwarden-admin-token 中的 ADMIN_TOKEN 登录。

现在还能公开注册新账号吗?

不能。首个账号注册后 SIGNUPS_ALLOWED=false 已生效,当前仅保留 INVITATIONS_ALLOWED=true 的邀请注册。

密码库数据如何备份?

数据目录为 /opt/web/vaultwarden-data,已加入 sync.sh 每日备份;建议每周确认备份包含该目录。

主密码暴露后应该怎么处理?

尽快在 Web Vault 的「安全设置 → 修改主密码」更换,之后不再外发;同时继续完成各服务密码迁移与 TOTP 2FA。

注意

  • 资料显示主密码曾在聊天中暴露,应尽快在 Web Vault「安全设置 → 修改主密码」更换,之后不再外发。
  • 注册完成后必须将 SIGNUPS_ALLOWED 改为 false 并重启容器,保留 INVITATIONS_ALLOWED=true 以便邀请注册。
  • 备份依赖 sync.sh 每日同步,需每周确认 vaultwarden-data 在备份范围内;证书续期后依赖 renew_hook reload NPM。

评论

加载中…