Self Hosted Bitwarden + Cloudfare HTTPS

a min to read

配置

bitwarden_rs 是一个用于本地搭建 Bitwarden 服务器的第三方开源 Docker 项目,目前bitwarden_rs 已经更名为 vaultwarden。

Docker 启动实例:首次启动允许注册,注册完自己的帐号之后禁用新帐号注册:

docker run -d --name vaultwarden \
-e SIGNUPS_ALLOWED=false \
-e WEBSOCKET_ENABLED=true \
-v $(pwd)/vw-data/:/data/ \
-p 8080:80 -p 9090:3012 \
vaultwarden/server:latest

启动之后只有 HTTP 的话,桌面客户端能连接使用,但手机客户端必须使用 HTTP。这里介绍使用 cloudfare 配置 HTTPS。在 cloudfare 切换到 SSL/TLS 下找到“源服务器”然后创建证书(可以使用自己的私钥和CSR或者由 cloudfare 生成)。

image-20210814163343770

生成完毕后将 CSR 填入/etc/nginx/ssl/example.com.crt,私钥填入 /etc/nginx/ssl/example.com.key。然后修改SSL/TLS 加密模式为“完全(严格)”。

image-20210814163313069

然后使用 Nginx(或者Caddy)配置反向代理到

server
{
  listen 443 ssl http2;
  ssl_certificate /etc/nginx/ssl/example.com.crt;
  ssl_certificate_key /etc/nginx/ssl/example.com.key;
  server_name example.com;

  client_max_body_size 128M;
  location / {
    proxy_pass http://127.0.0.1:8080;
    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://127.0.0.1:9090;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

  location /notifications/hub/negotiate
  {
    proxy_pass http://127.0.0.1:8080;
  }
}

配置完毕后校验 HTTPS 是否配置正确

openssl s_client -showcerts -connect example.com:443

参考