• {{ item.name }}
  • Home
  • Linux
  • Programming
    • Python
  • Life
  • Other
  • Tools
  • 投资者该如何参与优秀的区块链项目- NuLink社区圆桌会议
  • 什么是NuLink?- 项目中文社区与项目研究组成员 Rookie 对话实录
  • NuLink 融资 400 万美元用于开发隐私保护技术
  • NuLink的零知识证明介绍(1)
  • 用bitwarden_rs搭建属于自己的密码管理器
  • 修复 CentOS vps 网卡失效
  • 记录用mac给Nexus6P刷Android10的错误
  • Centos 6.8启用 TCP BBR拥塞控制算法
  • Nginx 启用HTTP2功能
  • Mac 安装adb工具
  • WordPress 默认编辑器代码按钮

用bitwarden_rs搭建属于自己的密码管理器

  • iansiu
  • 2021-09-22
  • 0

以前用过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

© 2023 laowang's blog
Theme by Wing