以前用过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
Leave a Reply
You must be logged in to post a comment.