最近总觉得账号密码容易混淆,而且太多了不容易记住,一部分存密码存在浏览器也觉得不太安全,所以打算自己搭建一个存储密码的服务,Bitwarden可以通过自己搭建来配合浏览器使用,也可以通过App进行管理,不过这个服务必须使用HTTPS,我这里是申请的免费证书,如果在本地搭建的话需要自建证书,结尾我会加上自建证书的部署教程推荐

拉取容器

直接拉取最新版

docker pull vaultwarden/server:latest
创建持久化目录

毕竟是要存储密码的重要服务,所以对数据进行持久化是很有必要的

mkdir /data/bitwarden/data
启动容器

因为我们还没有账户,所以先启动一次容器进行注册以后,再删掉容器重建一个容器并关闭注册功能,因为做了持久化所以数据不会丢失,之前容器注册的数据依然可用

## 第一次启动
docker rum -d --name bitwarden -p 3700:80 -p 3012:3012 -e WEBSOCKET_ENABLED=true -v /data/bitwarden/data/:/data/ vaultwarden/server:latest
## 我这里把80映射到3700了,因为以后要用nginx反向代理,所以没映射80,可以根据需求进行更改

完成后我们去配置nginx,我这里是申请的免费域名证书,所以直接放到对应目录写配置文件就可以了

#bitwarden的nginx配置文件
upstream warden-default {
   server 127.0.0.1:3700 weight=10 max_fails=2 fail_timeout=2;
}
upstream warden-ws {
   server 127.0.0.1:3012 weight=10 max_fails=2 fail_timeout=2;
}



server
{
    listen 443 ssl;
    server_name 你的URL;

    ssl_certificate   cert/bitwarden.pem; #证书
    ssl_certificate_key  cert/bitwarden.key; #密钥
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
 
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent; #强制443
    }

 
    location / {         
           proxy_pass  http://warden-default;         
           proxy_redirect off;
           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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
           proxy_max_temp_file_size 0;
           proxy_connect_timeout 90;
           proxy_send_timeout 90;
           proxy_read_timeout 90;
           proxy_buffer_size 4k;
           proxy_buffers 4 32k;
           proxy_busy_buffers_size 64k;
           proxy_temp_file_write_size 64k;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "upgrade";
    }
    location /notifications/hub {
           proxy_pass  http://warden-ws;
           proxy_redirect off;
           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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
           proxy_max_temp_file_size 0;
           proxy_connect_timeout 90;
           proxy_send_timeout 90;
           proxy_read_timeout 90;
           proxy_buffer_size 4k;
           proxy_buffers 4 32k;
           proxy_busy_buffers_size 64k;
           proxy_temp_file_write_size 64k;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "upgrade";
    }

}

配置完成后测试是否可用

nginx -t

配置文件没有问题就重载nginx

systemctl reload nginx

接着登陆以后注册

创建完成后登陆一次,测试账户是否可用,如果没有问题我们就把这个容器先删了,再重建一个并且把注册功能禁用

##删除容器
docker stop bitwarden
docker rm bitwarden
##重建容器
docker run -d --name bitwarden -p 3700:80 -p 3012:3012 -e WEBSOCKET_ENABLED=true -e SIGNUPS_ALLOWED=false -v /data/bitwarden/data/:/data/ vaultwarden/server:latest
##SIGNUPS_ALLOWED=false表示禁用注册

到这里服务就已经搭建完成了,在浏览器里添加插件或者下载bitwarden的App配置自己的地址或者域名就可以使用了

自建证书方式教程推荐