自托管 Bitwarden (Vaultwarden) 完美通车

作者:JAY 发布时间: 2026-07-12 阅读量:4 评论数:0

本教程采用 本地 NAS (飞牛 OS) 原生 Docker 部署最新服务端 + 公网 VPS 运行 Nginx Proxy Manager (NPM) 进行 SSL 反向代理 + frp 内网穿透 的架构,彻底解决新版客户端(2026.6+)登录时报 MasterPasswordUnlock 意外错误以及证书不信任的死锁问题。

📋 架构与数据流向

为了让你看清全链路,流量是这样走的:

客户端 (插件/手机 App) $\xrightarrow{\text{HTTPS:4443}}$ VPS (NPM 反代 + Let's Encrypt 证书) $\xrightarrow{\text{frp 隧道}}$ 本地 NAS (frpc) $\xrightarrow{\text{局域网:8507}}$ Vaultwarden 官方最新 Docker 容器

🛠️ 第一部分:准备工作

1. 彻底关闭飞牛自带应用

  • 登录 飞牛 OS 网页后台 $\rightarrow$ 应用中心 $\rightarrow$ 已安装

  • 找到飞牛自带的 Vaultwarden(或 Bitwarden),点击 停止卸载(必须停用,释放 8507 端口)。

2. 清理浏览器插件缓存(关键)

  • 在 Chrome 浏览器右上角,右键点击 Bitwarden 插件图标 $\rightarrow$ 选择 “从 Chrome 中删除”

  • 提示:先不要重新安装,等服务器端部署完成后再安装。

🛠️ 第二部分:本地 NAS (飞牛 OS) 命令行全新部署

请通过 SSH 连上你的飞牛 NAS,切换到 root 权限。

1. 创建独立的数据存放目录

确保以后应用升级、重装时,你的密码数据永远安全不丢失:

Bash

mkdir -p /vol1/1000/docker/vaultwarden/data

(注:此处采用飞牛默认存储路径,如果你有自己的习惯,可将 /vol1/1000/docker/vaultwarden/data 改为你的实际存储路径。)

2. 用最新官方镜像启动容器

运行以下命令,直接从 Dani Garcia 官方拉取最新镜像,开启长连接并绑定内网端口:

Bash

docker run -d \
  --name vaultwarden-official \
  -v /vol1/1000/docker/vaultwarden/data:/data \
  -p 8507:80 \
  -e WEBSOCKET_ENABLED=true \
  --restart always \
  vaultwarden/server:latest

3. 检查 frp 穿透状态

确保你 NAS 上运行的 frpc 容器或服务中,本地配置对应的仍然是 127.0.0.1:8507。因为我们新容器完美复用了 8507 端口,所以 frp 不需要做任何修改。

🛠️ 第三部分:公网 VPS 反向代理 (NPM) 精确配置

由于你的 VPS 上的 443 端口已被其他服务(如 VLESS)占用,NPM 必须使用网桥模式(端口映射),强行将公网的 4443 映射为 NPM 内部的 443

1. 在 VPS 上建立/检查 NPM 容器

请连接你的 VPS 终端,确保 NPM 容器是以网桥模式运行的:

Bash

# 如果之前 NPM 卡死或占用了宿主机网络,先删掉
docker rm -f nginx-proxy-manager

# 用网桥模式重新建立 NPM,对外暴露 4443 加密端口
docker run -d \
  --name nginx-proxy-manager \
  -p 81:81 \
  -p 4443:443 \
  -v /root/npm/data:/data \
  -v /root/npm/letsencrypt:/etc/letsencrypt \
  --restart always \
  jc21/nginx-proxy-manager:latest

2. 登录 NPM 后台修改 cstg.cc 主机配置

打开浏览器,登录 http://你的VPS_IP:81,找到 cstg.cc 这一行,点击右侧的 三点 $\rightarrow$ Edit

🔹 ① Details 标签页

  • Domain Names: cstg.cc

  • Scheme: http

  • Forward Hostname / IP: 172.17.0.1 (由于处于 Docker 网桥隔离模式,NPM 必须通过这个默认网关 IP 才能访问到 VPS 宿主机上的 frp 服务)

  • Forward Port: 8507

  • Websockets Support: 开启(变绿)

🔹 ② SSL 标签页

  • SSL Certificate: 选择你申请好的 Let's Encrypt 证书。

  • HSTS Enabled: 开启(变绿) (Bitwarden 客户端强制要求严格安全策略)

🔹 ③ Advanced(高级)标签页

点击顶栏最右侧的 齿轮 ⚙️ 图标,在弹出的黑色文本框中清空原有内容,原封不动地粘贴入以下代码:

Nginx

location / {
    proxy_pass http://172.17.0.1:8507;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

location /notifications/hub {
    proxy_pass http://172.17.0.1:8507;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

location /notifications/hub/negotiate {
    proxy_pass http://172.17.0.1:8507;
}

粘贴完成后,点击右下角绿色的 Save 保存。

🛠️ 第四部分:客户端重新连接与登录

1. 重新安装并设置浏览器插件

  1. 前往 Chrome 应用商店,重新下载并安装 Bitwarden 插件。

  2. 打开插件,在输入邮箱前,先点击左上角的 齿轮 ⚙️(环境设置)

  3. 服务器 URL 填写

    • 在最上面的“自托管环境 / 服务器 URL”总框里,输入:

      Plaintext

      https://cstg.cc:4443
      
    • ⚠️ 死命令:往下滚动,确认“网页密码库服务器 URL”、“API 服务器 URL”等那 4 个独立的自定义框全部留空,一个字都不要填

  4. 点击右上角 保存

2. 丝滑登录

回到登录主界面,输入你的邮箱 juedui738@qq.com 和你的主密码,点击 继续/登录

🏁 大功告成

现在,由于你的本地 NAS 服务端直接使用了官方 2026 最新代码,加解密协议完美合规;同时公网 NPM 通过高级策略透传了所有安全头部和 WebSockets 流量。插件和手机 App 握手时再也不会遇到障碍,直接通车亮起绿锁!

评论