简述

什么是Bitwarden

Bitwarden是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息(例如网站登录凭据)。Bitwarden平台提供有多种客户端应用程序,包括网页用户界面、桌面应用,浏览器扩展、移动应用以及命令行界面。

通俗点讲就是和lasspast、1password一样的一款密码管理工具。

部署

环境部署

Docker安装:https://docs.docker.com/engine/install/centos/
Docker compose安装:https://docs.docker.com/compose/install/

Bitwarden部署

因为官方的Bitwarden服务器使用MSSQL数据库,我部署的时候mssql容器报错:This program requires a machine with at least 2000 megabytes of memory,意思就是服务器内存不能低于2GB。无奈敝人服务器Total Memory才1GB。google之后,发现有大神用 Rust 实现了 Bitwarden 服务器,项目叫 Bitwarden_rs,并且提供了 Docker 镜像,对服务器配置的要求很低,并且 Docker 镜像体积很小,个人用很合适。

Bitwarden_rs项目地址:https://github.com/dani-garcia/bitwarden_rs

我这里用nginx反代Bitwarden后端,为了方便操作,我直接做成一个docker-compose.yml。

version: "3"

services:
  nginx:
    image: openresty:v1
    ports:
      - "80:80"
      - "443:443"
    restart: always
    volumes:
      - /data/nginx/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf
      - /data/nginx/conf.d/:/etc/nginx/conf.d/
      - /data/ssl/:/usr/local/openresty/nginx/ssl/
    depends_on:
      - bitwarden
  bitwarden:
    image: bitwardenrs/server
    container_name: bitwardenrs
    restart: always
    ports:
        - "8000:80" #将8000端口映射到镜像80端口
        - "3012:3012"
    volumes:
      - /data/bw-data:/data
    environment:
      WEBSOCKET_ENABLED: "true" #开启WebSocket
      SIGNUPS_ALLOWED: "true" #开启注册,自己注册后改成fale
      WEB_VAULT_ENABLED: "true" #web客户端

反代

.....
location / {
            proxy_pass http://bitwarden:80;
            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://bitwarden:3012;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

     location /notifications/hub/negotiate {
            proxy_pass http://bitwarden:80;
      }

.....

参考资料:韩艺博的博客

文章目录