Bitwarden_rs服务器搭建

2020-09-11

前言

Bitwarden是一款开源密码管理工具,我之前也一直在用它。但使用官方的服务器不仅网速有点慢,而且数据在别人那里,万一它跑路了,就啥都登不进了。既然自己有个服务器,那就自己搭一个bitwarden的服务端吧。 自行搭建官方的Bitwarden服务端需要去官网申请,可不知道什么原因总是504,可能是官方把接口关闭了吧。因此这里使用非官方的服务端Bitwarden_rs(Github地址),用的是Rust,不过用Docker封装了,安装使用还是挺方便的。官方给的教程用的是Caddy服务器,因为我不怎么熟,所以就自己研究了一下nginx的配置。

搭建过程

  1. 创建文件夹mkdir bitwarden && cd bitwarden

  2. 创建文件docker-compose.yml 内容如下:

    version: '3'
    
    services:
      bitwarden:
        image: vaultwarden/server:latest
        restart: always
        volumes:
          - ./bw-data:/data
        ports:
          - 3011:80
          - 3012:3012
        environment:
          WEBSOCKET_ENABLED: 'true' # Required to use websockets
          SIGNUPS_ALLOWED: 'true'
          WEB_VAULT_ENABLED: "true" #是否开启Web客户端
    

这里映射了两个端口,容器的80和3012端口要用到,因此映射出来,一会要用到。

  1. 修改nginx配置

    内容如下:

    #bitwarden
    server {
        listen       443 ssl;
        server_name  [你的域名];
        ssl_certificate      [你的证书];
        ssl_certificate_key  [你的证书私钥];
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        location / {
            proxy_pass                          http://127.0.0.1:3011;
            proxy_set_header Upgrade            $http_upgrade;
            proxy_set_header Connection         "upgrade";
            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;
            proxy_set_header X-Forwarded-Host   $host;
            proxy_set_header X-Forwarded-Port   $server_port;
        }
        location /notifications/hub {
            proxy_pass                          http://127.0.0.1:3012;
            proxy_set_header Upgrade            $http_upgrade;
            proxy_set_header Connection         "upgrade";
            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;
            proxy_set_header X-Forwarded-Host   $host;
            proxy_set_header X-Forwarded-Port   $server_port;
        }
        location /notifications/hub/negotiate {
            proxy_pass                          http://127.0.0.1:3011;
            proxy_set_header Upgrade            $http_upgrade;
            proxy_set_header Connection         "upgrade";
            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;
            proxy_set_header X-Forwarded-Host   $host;
            proxy_set_header X-Forwarded-Port   $server_port;
        }
        location /admin {
            proxy_pass                          http://127.0.0.1:3011;
            proxy_set_header Upgrade            $http_upgrade;
            proxy_set_header Connection         "upgrade";
            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;
            proxy_set_header X-Forwarded-Host   $host;
            proxy_set_header X-Forwarded-Port   $server_port;
        }
    }
    

    注意把上面的端口号改成刚才设置的。没有证书的可以免费去申请。

  2. 进入docker-compose.yml所在的目录,执行docker-compose up就会开始下载bitwarden_rs服务器并启动了。也可以用docker-compose up -d后台启动。要停止只要docker-compose stop就行了。

  3. 启动nginx。一切顺利的话,用浏览器打开https://[你的IP]就可以看到bitwarden的网页端了。由于它的网页版是SPA,所以加载可能有点慢,稍微等一下吧。再把原来的密码库导入就可以正常使用啦。

下面是一些推荐的做法,爱折腾的可以做一下