以前用过Lastpass
密码管理器,但后来爆出过安全问题,又因为服务器不在自己手里,所以一直不能安心,遂放弃。
1Password
太贵,肯定也不在我的选择之中,现在主要是使用Enpass
,支持全平台,数据保存在各大网盘,安全性是没有问题的,我买的时候挺便宜的,是买断制终身使用,但是这个终身到底是多久谁也不知道,现在听说改为订阅制了。
为了以防万一,我找到了bitwarden
开源密码管理器,它有分免费版和收费版,个人使用免费版足够了,最主要的是它支持自建服务器,也就是把数据保存在自己的服务器,再通过各种网盘备份数据,加上本身是开源的,所以安全性应该是没有问题的。
1.拉取bitwardenrs
镜像
docker pull bitwardenrs/server:latest
2.直接通过 docker run
创建镜像
你也可以通过 docker-compose
进行管理,还能更好的保存运行参数。但我保存了 docker run
命令且图便宜就 docker run
了。
docker run -d --name bitwardenrs -v /www/wwwroot/key:/data/ -p 85:80 -p 3012:3012 -e WEBSOCKET_ENABLED=true bitwardenrs/server:latest
第一次创建这个容器请不要加 -e SIGNUPS_ALLOWED=false
参数,这个参数是禁止新用户注册的。
-v /www/wwwroot/key:/data/
参数中,前者/www/wwwroot/key是host中持久化数据的路径,后者/data/
是container
中数据保存路径
-p 85:80 -p 3012:3012
服务监听端口一般使用80
,你可以使用 lsof -i:80
查看你的系统80
端口是否有被占用,如果有使用其他端口。如果要显示通知,则加上-e WEBSOCKET_ENABLED=true
,并且多映射一个端口 -p 3012:3012
其他参数比如邮件通知相关的、日志记录文件路径相关的,可以按照你的喜好增加
--name bitwardenrs
将该容器取名为 bitwardenrs
我就这些了。
3.配置前置代理nginx
配置ssl
server { listen 80; listen 443 ssl http2; server_name *.laowang.me; index index.php index.html index.htm default.php default.htm default.html; root /home/wwwroot/*; #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; #HTTP_TO_HTTPS_START if ($server_port !~ 443){ rewrite ^(/.*)$ https://$host$1 permanent; } #HTTP_TO_HTTPS_END ssl_certificate /www/server/panel/vhost/cert/*.laowang.me/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/*.laowang.me/privkey.pem; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; error_page 497 https://$host$request_uri; location / { proxy_pass http://127.0.0.1:85; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; 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"; } location /notifications/hub/negotiate { proxy_pass http://127.0.0.1:85; } location /admin { 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_pass http://127.0.0.1:85; } access_log /www/wwwlogs/*.laowang.me.log; error_log /www/wwwlogs/*.laowang.me.error.log; }
4.禁止新用户注册
一般自建bitwarden
服务器是供个人使用,我们在注册完自己的账号后,都选择关闭注册功能,防止他人注册。
需要用到上文中的-e SIGNUPS_ALLOWED=false
参数重新启动容器。但是不能直接重新 docker run
,因为会提示你这个同名容器已经存在。
但不用担心,刚刚我们已经注册了用户了,数据库信息已经持久化到/www/wwwroot/key
这个宿主机目录中了。所以正确的步骤是
停止容器
docker container stop bitwardenrs
然后remove
容器
docker container rm bitwardenrs
再重新 docker run
启动容器,这一次要加上-e SIGNUPS_ALLOWED=false
参数
docker run -d --name bitwardenrs -v /www/wwwroot/key:/data/ -p 85:80 -p 3012:3012 -e SIGNUPS_ALLOWED=false -e WEBSOCKET_ENABLED=true bitwardenrs/server:latest
也可以禁止web登陆,进一步增强安全性。
只需在启动命令中添加:-e WEB_VAULT_ENABLED=false