本小白最近在折腾自托管的 Vaultwarden,部署在 1Panel 上。
发现一个痛点: 多端同步不及时。
比如在电脑端改了密码,手机端必须手动“下拉刷新”才能看到;或者手机改了,电脑端需要手动点击同步密码库。
在哈基米3的帮助下终于搞定,实现了WebSocket 实时通讯和移动端官方推送。踩了几个 1Panel 配置文件的坑,特此记录分享一下。
原理简述
- 电脑/插件端:依赖 WebSocket 长连接,需要反向代理(Nginx)开启
Upgrade头支持。 - 手机端 (iOS/Android):依赖 Bitwarden 官方的 Push 服务,需要去官方申请一个免费的中转 Key,并配置到 Docker 环境变量中。
一、 开启移动端官方推送 (解决手机必须下拉刷新)
Vaultwarden v1.29.0 以后支持使用 Bitwarden 官方的中转服务器进行推送。为了安全和规范,推荐将敏感信息配置在 环境变量 (.env) 中
-
获取授权 Key
访问 https://bitwarden.com/host,输入任意邮箱,获取INSTALLATION_ID和INSTALLATION_KEY。
建议选择bitwarden.com (United States)
-
配置环境变量 (.env)
在 1Panel 应用详情页 → 点击 “环境” 标签页。
在输入框的末尾追加以下内容(填入你刚才获取的 ID 和 Key):PUSH_ENABLED=true PUSH_INSTALLATION_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx PUSH_INSTALLATION_KEY=xxxxxxxxxxxxxxxxxxxx配置截图:
-
修改容器编排 (docker-compose.yml)
切换到 “容器”-“编排” 标签页,找到environment部分,修改为引用刚才定义的变量:environment: - SIGNUPS_ALLOWED=false # --- 引用 .env 中的配置 --- - PUSH_ENABLED=${PUSH_ENABLED} - PUSH_INSTALLATION_ID=${PUSH_INSTALLATION_ID} - PUSH_INSTALLATION_KEY=${PUSH_INSTALLATION_KEY}配置截图:
- 重建容器
点击右下角的 “确认” 保存编排,然后点击 “重建” 按钮使配置生效。
第二步:配置 Nginx 反代 (解决电脑端延迟问题)
这一步是为了让 WebSocket 正常工作。我们一般采用 1Panel 的反向代理功能,这里我踩了个路径的坑。
- 找到正确的配置文件
网站的配置文件中最后有一行include,它引用了proxy目录下的配置。我们必须修改这个配置文件。
文件路径:
/opt/1panel/www/sites/你的域名/proxy/
或者在 1Panel 文件管理器中依次点击:根目录 →
opt→1panel→www→sites→[你的域名]→proxy→ 编辑里面的.conf文件 (通常叫root.conf)。
-
添加 WebSocket 支持
打开文件后,在location ^~ / { ... }代码块中,找到proxy_pass这一行,在它下面添加以下配置:location ^~ / { proxy_pass http://127.0.0.1:40031; # ... 其他原有配置 ... # === 核心部分:开启 WebSocket === proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; # ============================= # ... 其他原有配置 ... }
示例(可以直接用这个替换你的root.conf):
location ^~ / {
proxy_pass http://127.0.0.1:40031;
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 REMOTE-HOST $remote_addr;
# --- WebSocket 标准配置 ---
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# -----------------------
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
# 这一行通常不需要,如果遇到 502 可以删掉试试,但在 1Panel 里通常保留即可
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
add_header Strict-Transport-Security "max-age=31536000";
}
第三步:客户端重置 (重要)
配置好服务端后,客户端不会立马生效,必须操作:
- 手机端:进入设置 → 注销 (Log out) → 重新登录。这一步是为了向服务器注册推送 ID。
- 电脑端:建议也注销重登一次。
效果验证
- 测试推送:电脑浏览器新增一个笔记/登录 → 保存 → 拿起手机(不要手动刷新) → 内容自动变化。
- 测试 WebSocket:手机改笔记 → 电脑浏览器插件自动更新。
希望能帮到同样使用 1Panel 部署 Vaultwarden 的佬友们!
方案仅供大家参考,如果有更优雅的配置姿势,或者有什么疏漏,欢迎各位大佬指正!