1Password是去年搞活动入手的,之前一直在用KeePass,但是KeePass在浏览器和安卓手机上使用体验不是很好,用过了1Password之后发现密码管理服务做得真的是非常好了。不过有一个不好的地方就是1Password太贵了,一年至少需要35美元。
而且1Password还只能使用信用卡付款,像Paypal也不支持,这让很多想尝试1Password的朋友“望而却步”了。这篇文章主要分享一下在功能上和使用体验上媲美1Password的免费开源密码管理系统Bitwarden,自建Bitwarden,再也不用担心1Password删库“跑路”了。
如果你是一名站长的话,其实很多的付费服务都是可以通过免费开源的程序来自我搭建的,例如:
PS:更新记录.
1、如果你觉得付费的密码管理软件太贵,也可以试试免费的密码管理软件,汇总专题:密码管理软件整理汇总-好用免费和付费的密码管理软件推荐。2022.4.8
2、如果不想自己折腾,愿意花钱购买付费服务,请参考:密码管理软件1password使用-自动填充密码支持各大浏览器和手机应用。2022.3.22
网站:
Bitwarden官方推荐使用Docker镜像安装,但是Bitwarden 服务器使用 .Net 开发,如果使用 Docker 来部署,镜像体积过大;此外它使用 MSSQL 数据库,部署这个数据库对服务器配置要求比较高。而是bitwarden_rs是第三方开发的Bitwarden安装镜像。
bitwarden_rs采用 Rust 实现了 Bitwarden服务器,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。此外,官方服务器中需要付费订阅的一些功能,在这个实现中是免费的。挖站否在512MB内存上机子完美运行bitwarden_rs。
PS:2022年12月更新,bitwarden_rs已经于2021年8月更换名称为vaultwarden,见:https://github.com/dani-garcia/vaultwarden/discussions/1642。本篇文章所有的安装方法已经更新为Vaultwarden。教程:Vaultwarden(原Bitwarden_RS)自建密码库教程-安装方法 绑定域名 Https证书。
一台VPS主机。bitwarden_rs使用Docker镜像来安装,需要使用一台VPS主机,配置不用太高,我自己用512MB内存也能跑起来,而且非常地流畅。购买VPS主机请参考:VPS主机排行榜单。
一个域名。虽然有市面上有少的免费域名,但是建议还是使用付费的域名,密码这个东西比较重要,一旦确定要自建密码管理系统的话就要保证可以长期使用。参考:域名服务。
你需要先安培安装 Docker CE (社区版)和Docker Compose,以下命令是基于Debian系统的演示,如果你是CentOS、Ubuntu,请参考官网:
安装 Docker CE (社区版):https://docs.docker.com/install/linux/docker-ce/ubuntu/
安装 Docker Compose:https://docs.docker.com/compose/install/#install-compose
Debian系统安装Docker CE 和Docker Compose如下:
#卸载 sudo apt-get remove docker docker-engine docker.io containerd runc #SET UP THE REPOSITORY sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - #检测是否安装成功 sudo apt-key fingerprint 0EBFCD88 #有以下输出就表示成功添加Docker’s official GPG key: root@hostfbc9e58d73:~# sudo apt-key fingerprint 0EBFCD88 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S] #添加stable repository sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable" #开始安装 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io #验证 Docker Engine - Community是否安装正确 sudo docker run hello-world #有以下输出就表示正确安装 root@hostfbc9e58d73:~# sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:b8ba256769a0ac28dd126d584e0a2011cd2877f3f76e093a7ae560f2a5301c00 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/ #安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose #检测是否安装成功 docker-compose --version #有输出即表示成功 docker-compose version 1.24.1, build 4667896b #如果提示命令不存在,可以手动创建链接 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
bitwarden_rs官方可以选择使用Caddy来搭建Web服务,但是这里使用Nginx来搭建Web。主要原因有:一你的VPS可以用来建站,bitwarden与你的网站不会相冲突;二Nginx安装和备份的教程多,使用起来简单。推荐使用Oneinstack或者LNMP一键脚本,当然你也可以使用VPS主机面板。
bitwarden_rs安装只需要一句代码就可以搞定:
docker pull vaultwarden/server:latest
挖站否用的启用命令如下(相关的解释如下):
docker run -d --name vaultwarden \ -e SIGNUPS_ALLOWED=true \ -e WEBSOCKET_ENABLED=true \ -e LOG_FILE=/data/vaultwarden.log \ -p 8880:80 \ -p 3012:3012 \ -v /bw-data/:/data/ \ vaultwarden/server:latest
启动bitwarden也很简单,我们只需要执行以下代码即可:
docker run -d --name vaultwarden -v /bw-data/:/data/ -p 8880:80 vaultwarden/server:latest #或者直接使用80端口,不过这样的话你原来建有网站的话80端口就被占用了。 docker run -d --name vaultwarden -v /bw-data/:/data/ -p 80:80 vaultwarden/server:latest
配置Nginx反向代理目的是为了可以使用域名来访问bitwarden,首先我们用Oneinstack安装好了Nginx并且配置好了域名、SSL等,现在打开Nginx域名配置文件,参考下方的内容直接替换即可:
server { listen 80; listen 443 ssl http2; ssl_certificate /usr/local/nginx/conf/ssl/mima.wzfou.net.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/mima.wzfou.net.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_timeout 10m; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_buffer_size 1400; add_header Strict-Transport-Security max-age=15768000; ssl_stapling on; ssl_stapling_verify on; server_name mima.wzfou.net; if ($ssl_protocol = "") { return 301 https://$host$request_uri; } client_max_body_size 128M; location / { proxy_set_header Host 'mima.wzfou.net'; proxy_pass http://127.0.0.1:8880; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 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:8880; } }
重启Nginx,刷新一下浏览器,你可以看到bitwarden已经可以正常访问了。
为了保证bitwarden服务器的稳定,你可以禁止bitwarden注册新用户(这一项可以放在最后,否则你自己都无法注册了)。禁止新用户注册:
docker run -d --name vaultwarden \ -e SIGNUPS_ALLOWED=false \ -v /bw-data/:/data/ \ -p 80:80 \ vaultwarden/server:latest
启动和关闭:
stopped by docker stop bitwarden
, a reboot or any other reason
you can just start it up again by using
docker start vaultwarden
you just need to pull
the latest image, stop
and
rm
the current container and then start a new one the same way as
before:
# Pull the latest version docker pull bitwardenrs/server:latest # Stop and remove the old container docker stop bitwarden docker rm bitwarden # Start new container with the data mounted docker run -d --name bitwarden -v /bw-data/:/data/ -p 80:80 bitwardenrs/server:latest
#或者是
docker run -d --name bitwarden -v /bw-data/:/data/ -p 8880:80 bitwardenrs/server:latest
启用日志记录:
-e LOG_FILE=/data/vaultwarden.log
启用WebSocket notifications:
-e WEBSOCKET_ENABLED=true
这一步可选。使用Docker Compose配置可以方便你管理Docker,不用也可以。
在bitwarden
目录创建docker-compose.yml
文件
vim docker-compose.yml
在docker-compose.yml
写入一下配置,参考官方wiki(https://github.com/dani-garcia/bitwarden_rs/wiki/Using-Docker-Compose)
version: "3" services: bitwarden: image: vaultwarden/server container_name: vaultwarden restart: always ports: - "127.0.0.1:8880:80" #将8880端口映射到镜像80端口 - "127.0.0.1:3012:3012" volumes: - ./bw-data:/data environment: WEBSOCKET_ENABLED: "true" #开启WebSocket SIGNUPS_ALLOWED: "true" #开启注册,自己注册后改成fale WEB_VAULT_ENABLED: "true" #web客户端
运行服务
docker-compose up -d #运行服务 docker-compose down #关闭服务 docker-compose restart #重启服务
网页版的bitwarden管理密码也是非常地方便。以下是bitwarden的界面,有中文:(点击放大)
这是bitwarden的设置页面。
可以自己设置两步验证,加强安全性。
bitwarden提供了Chrome、Firefox等浏览器插件,直接安装就可以启用。
在插件设置中填入你自己的bitwarden地址(否则是进入到官方的地址)
bitwarden的Chrome浏览器插件界面如下:(点击放大)
bitwarden浏览器设置页面。
bitwarden浏览器插件支持手动添加登录。
同时,bitwarden浏览器插件也会提示保存密码。如下图:
bitwarden浏览器插件还有一个非常好用的功能就是自动加载密码。
bitwarden有电脑客户端,操作类似于网页版。
bitwarden用起来和1Password一样,如果你是1Password重度用户不会陌生的。
bitwarden支持市面上绝大多数的密码管理器的数据导入,例如KeePass、Enpass、Avast Passwords、LastPass、Chrome、SafeInCloud、Zoho Vault等:
如果是导入1Password,先打开你的1Password电脑桌面客户端,选择导出。
格式选择CSV,打开你的bitwarden网页版,点击工具下的数据导入。
选择1Password类型,点击导入即可。
bitwarden备份最关键的就是sqlite3数据库文件了,你可以直接进入到bw-data目录下,将sqlite3数据库保存下来。当然你也可以将bw-data目录下所有的包括附件文件夹、图标缓存文件夹、密钥等文件备份下来。
利用定时任务执行bitwarden备份,首先新建一个文件夹:mkdir /bw-data/db-backup
,然后执行数据库备份任务。代码如下(关于定时任务说明参考:Linux Crontab命令定时任务基本语法与操作教程):
sqlite3 /bw-data/db.sqlite3 ".backup '/bw-data/db-backup/backup.sqlite3'"
bitwarden要恢复备份的话也很简单,直接将sqlite3数据库重写替换就可以了,其它的几个文件夹可以覆盖,也可以保留新的,不影响。如果你的数据库路径与原来的不一致,可以手动指定,代码示例:
docker run -d --name bitwarden \ -e DATABASE_URL=/database/bitwarden.sqlite3 \ -v /bw-data/:/data/ \ -v /bw-database/:/database/ \ -p 80:80 \ bitwardenrs/server:latest
bitwarden作为一款开源的密码管理器,其本身支持平台之多,功能之全面,是替代1Password的理想品。bitwarden安装简单,采用Docker镜像,特别适合已经有了VPS建站的朋友,在不影响建站的情况下正常使用bitwarden。
bitwarden可以支持多用户注册使用,如果想要让bitwarden发送邮件的话,可以使用SMTP发邮件,参考代码如下:
docker run -d --name vaultwarden \ -e SMTP_HOST=<smtp.domain.tld> \ -e SMTP_FROM=<vaultwarden@domain.tld> \ -e SMTP_PORT=587 \ -e SMTP_SSL=true \ -e SMTP_USERNAME=<username> \ -e SMTP_PASSWORD=<password> \ -v /bw-data/:/data/ \ -p 80:80 \ vaultwarden/server:latest
文章出自:挖站否 https://wzfou.com/bitwarden-rs/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。部分内容参考自:bitwarden_rs Wiki。
文章更新于: %s = human-readable time difference 下午8:08
查看评论
你好,我备份的时候 db.sqlite3 .backup bak
显示 Text file busy.
权限如下: -rwxr-xr-x 1 root root 208896 today db.sqlite3*
请问有遇到过这种情况吗
我想知道docker容器里面的nginx路径 跟配置更改
这个貌似需要查看官方的文档。
为啥注册点提交没反应
qi,你好,请问文章可以转载吗?我记性太差了,步骤太多,转载到自己博客以后更方便看,万一那天你跑路了,哈哈
可以的,没有问题。
前面设置时事用的 -p 8880:80 \
后面的参数都用 -p 80:80 \ ,这个没问题吗?
或者后面的那些设置有必要带 -p 的参数吗?
P是端口的意思,可以根据自己的需要来设置,如果直接使用80端口,前后都用80端口即可。
这个bitwarden-rs是真心好用,再也不愁记一大堆密码了。。另外我还折腾了下fail2ban登录防爆破和自动备份
https://mashaji.cc/post/bitwarden_rs_docker/
这个不错。
这个我也要折腾一下
自建的是可以直接用全功能还是只能用免费用户功能?
是全部功能。
干货文章 [good],对于新手,我担忧的是,个人精力有限, vps安全和维护精力不多,1Password 虽说贵了点,但从安全和易容方面比自建要好的多,总之,各有优缺点 [挤眼]
很有道理[偷笑]
是的,VPS+域名,一年下来也得几十美元。
Qi姐,这是折腾啥呢?chrome的密码管理相当好用啊?火狐官方也不错啊,还有手机端。[神马]
火狐还有客户端?