NAS部署Bitwarden/Vaultwarden密码管理器和申请HTTPS证书
概述
近期 Bitwarden 强制要求配置 HTTPS 证书才能正常使用,所以给大家分享一下我的方案。也可以观看我的视频版本https://www.youtube.com/watch?v=P_lPfvz5sKI&t=1s
这个方法前提是你得需要有一个域名才行,当然免费的域名也可以,或者自行买一个自己喜欢的,也不贵,一年几十块。然后使用 Nginx Proxy Manager 工具来做反代理和 HTTPS 证书申请,实现本地内网访问,不在家的时候再结合 VPN 远程连接。
准备工作
我就用群晖 NAS 为例,我们需要用 Docker 来进行部署,如果不熟悉的话可以看一下其他 YouTuber 或 B 站的视频,大家部署的时候可以直接用 NAS 自带的面板进行操作,但我个人不太习惯那个方式,所以我这里使用的 Docker Compose 来部署的,需要提前开启 NAS 的 SSH 功能。
开启SSH部署 Vaultwarden
打开 NAS 的文件管理,在 docker 目录中创建一个 bitwarden 文件夹,当然这个名字随意,再创建一个 docker-compose.yml 文件和 data 文件夹,需要创建空的 data 文件夹,否则容器启动会报错。

我的 docker-compose.yml 配置如下:
services:
vaultwarden:
image: vaultwarden/server:alpine
container_name: vaultwarden
restart: unless-stopped
volumes:
- ./data:/data
environment:
- SIGNUPS_ALLOWED=false
- TZ=Asia/Shanghai
ports:
- 3080:80
或者直接使用官方的配置 https://github.com/dani-garcia/vaultwarden#docker-compose
配置文件准备好之后,我们右键 docker 文件夹查看目录位置,然后通过 SSH 连上 NAS,建议使用 root 账户登录,不然可能会出现 docker 权限不足的问题,找到刚才的目录:
cd /volume1/docker/bitwarden
# 运行容器
docker-compose up -d
如果是我的配置那么是 3080 端口,如果是官方的那么是 8000 端口。

如果能访问,那么说明 Vaultwarden 部署成功了,中间的提示文案也说了需要 HTTPS 才能搞事,所以接下来开始申请 HTTPS 证书。
申请 HTTPS 证书
我的域名托管在 cloudflare中的,就以 cloudflare 为例
域名解析

注意,这个 IP 地址写 NAS 的 内网 IP,不是公网 IP,比如我的是 192.168.88.5,我们只在内网访问。
设置 DNS API Token
打开 cloudflare,找到自己的域名

滑动到底部


创建后这个令牌只会显示一次,记得保存好。部署 Nginx Proxy Manager
还是在 docker 目录下,创建一个 nginx-proxy-manager 文件夹,同样在里面创建 docker-compose.yml 和 一个空的 config 文件夹。
进入 ssh 启动容器
cd /volume1/docker/nginx-proxy-manager
docker-compose up -d
打开浏览器访问 8181 端口,如:http://192.168.88.5:8181
创建一个登录账号,右上角可以切换成中文
这个就是管理面板,很简洁申请证书
我们点击证书列表点击添加证书,选择 Let's Encrypt DNS 验证,域名填写刚才解析的域名,DNS 提供者选 Cloudflare,然后在凭据里填 dns_cloudflare_api_token 输入你刚刚申请的 API 令牌

刚刚申请的 API 令牌
证书申请成功,证书有效期是 3 个月,不过不用担心,Nginx Proxy Manager 会自动续期。
配置反代理
接下来回到仪表盘点击代理服务进行添加,域名填解析的域名,转发 IP 填 NAS 的 内网 IP,比如 192.168.88.5,端口填我们 Vaultwarden 映射的 3080。设置域名和 NAS 的 IP 和端口,如果用的官方的 Vaultwarden,那么端口就是 8000。切换到 SSL 标签,选择刚刚申请的证书,勾选强制 SSL、和 HTTP2,最后保存。
配置反代理
切换SSL,选择刚刚申请的证书
配置完成现在直接浏览器访问,HTTPS 证书正常,Vaultwarden 也就能正常使用了。

这样就通过域名指向了本地的 NAS 服务,并且还添加了证书,那么我们在异地就可以通过 VPN 的方式进行连接了。
VPN 远程连接
那在外部网络怎么连接呢?我的方案是不做端口映射、不搞内网穿透,而是通过 VPN 连回家里的内网,不管是 Tailscale、ZeroTier、EasyTier、NetBird 等,都可以实现。
总结
其实整个流程捋下来很简单 Vaultwarden 负责密码管理,Nginx Proxy Manager 帮我们搞定 HTTPS。把域名解析到内网,再通过 VPN 远程连接,全程不暴露任何端口到公网,数据掌握在自己手里,随时随地都能用。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
