1Password是去年搞活动入手的,之前一直在用KeePass,但是KeePass在浏览器和安卓手机上使用体验不是很好,用过了1Password之后发现密码管理服务做得真的是非常好了。不过有一个不好的地方就是1Password太贵了,一年至少需要35美元。
而且1Password还只能使用信用卡付款,像Paypal也不支持,这让很多想尝试1Password的朋友“望而却步”了。这篇文章主要分享一下在功能上和使用体验上媲美1Password的免费开源密码管理系统Bitwarden,自建Bitwarden,再也不用担心1Password删库“跑路”了。

一、bitwarden_rs安装教程
网站:
- 官网:https://bitwarden.com/
- 第三方项目:https://github.com/dani-garcia/bitwarden_rs
Bitwarden官方推荐使用Docker镜像安装,但是Bitwarden 服务器使用 .Net 开发,如果使用 Docker 来部署,镜像体积过大;此外它使用 MSSQL 数据库,部署这个数据库对服务器配置要求比较高。而是bitwarden_rs是第三方开发的Bitwarden安装镜像。

bitwarden_rs采用 Rust 实现了 Bitwarden服务器,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。此外,官方服务器中需要付费订阅的一些功能,在这个实现中是免费的。512MB内存机子也能完美运行bitwarden_rs。
1.1 安装前准备
一台VPS主机。bitwarden_rs使用Docker镜像来安装,需要使用一台VPS主机,配置不用太高,我自己用512MB内存也能跑起来,而且非常地流畅。

一个域名。虽然有市面上有少的免费域名,但是建议还是使用付费的域名,密码这个东西比较重要,一旦确定要自建密码管理系统的话就要保证可以长期使用。

1.2 安装好Docker
你需要先安培安装 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
1.3 安装好Nginx
bitwarden_rs官方可以选择使用Caddy来搭建Web服务,但是这里使用Nginx来搭建Web。主要原因有:一你的VPS可以用来建站,bitwarden与你的网站不会相冲突;二Nginx安装和备份的教程多,使用起来简单。推荐使用Oneinstack或者LNMP一键脚本,当然你也可以使用VPS主机面板。

1.4 bitwarden_rs安装
bitwarden_rs安装只需要一句代码就可以搞定:
- docker pull bitwardenrs/server:latest
二、bitwarden_rs配置方法
挖站否用的启用命令如下(相关的解释如下):
- docker run -d --name bitwarden \
- -e SIGNUPS_ALLOWED=true \
- -e WEBSOCKET_ENABLED=true \
- -e LOG_FILE=/data/bitwarden.log \
- -p 8880:80 \
- -p 3012:3012 \
- -v /bw-data/:/data/ \
- bitwardenrs/server:latest
2.1 启动bitwarden
启动bitwarden也很简单,我们只需要执行以下代码即可:
- docker run -d --name bitwarden -v /bw-data/:/data/ -p 8880:80 bitwardenrs/server:latest
- #或者直接使用80端口,不过这样的话你原来建有网站的话80端口就被占用了。
- docker run -d --name bitwarden -v /bw-data/:/data/ -p 80:80 bitwardenrs/server:latest
2.2 设置Nginx
配置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已经可以正常访问了。

2.3 禁止注册
为了保证bitwarden服务器的稳定,你可以禁止bitwarden注册新用户(这一项可以放在最后,否则你自己都无法注册了)。禁止新用户注册:
docker run -d --name bitwarden \ -e SIGNUPS_ALLOWED=false \ -v /bw-data/:/data/ \ -p 80:80 \ bitwardenrs/server:latest
2.4 关闭重启
启动和关闭:
stopped by docker stop bitwarden
, a reboot or any other reason you can just start it up again by using
- docker start bitwarden
2.5 升级
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
2.6 其它设置
启用日志记录:
- -e LOG_FILE=/data/bitwarden.log
启用WebSocket notifications:
- -e WEBSOCKET_ENABLED=true
三、Docker Compose配置
这一步可选。使用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: bitwardenrs/server
- container_name: bitwardenrs
- 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管理密码
4.1 网页版bitwarden
网页版的bitwarden管理密码也是非常地方便。以下是bitwarden的界面,有中文:(点击放大)

这是bitwarden的设置页面。

可以自己设置两步验证,加强安全性。

4.2 浏览器bitwarden
bitwarden提供了Chrome、Firefox等浏览器插件,直接安装就可以启用。

在插件设置中填入你自己的bitwarden地址(否则是进入到官方的地址)

bitwarden的Chrome浏览器插件界面如下:(点击放大)

bitwarden浏览器设置页面。

bitwarden浏览器插件支持手动添加登录。

同时,bitwarden浏览器插件也会提示保存密码。如下图:

bitwarden浏览器插件还有一个非常好用的功能就是自动加载密码。

4.3 bitwarden电脑客户端
bitwarden有电脑客户端,操作类似于网页版。

bitwarden用起来和1Password一样,如果你是1Password重度用户不会陌生的。

4.4 bitwarden手机客户端
bitwarden手机APP用户起来非常地方便,如下图:

bitwarden支持指纹解锁,以及自动填充密码等。

五、bitwarden导入1Password
bitwarden支持市面上绝大多数的密码管理器的数据导入,例如KeePass、Enpass、Avast Passwords、LastPass、Chrome、SafeInCloud、Zoho Vault等:
- https://help.bitwarden.com/article/import-data/
如果是导入1Password,先打开你的1Password电脑桌面客户端,选择导出。

格式选择CSV,打开你的bitwarden网页版,点击工具下的数据导入。

选择1Password类型,点击导入即可。

六、bitwarden备份与恢复
6.1 手动备份
bitwarden备份最关键的就是sqlite3数据库文件了,你可以直接进入到bw-data目录下,将sqlite3数据库保存下来。当然你也可以将bw-data目录下所有的包括附件文件夹、图标缓存文件夹、密钥等文件备份下来。

6.2 自动备份
利用定时任务执行bitwarden备份,首先新建一个文件夹:mkdir /bw-data/db-backup
,然后执行数据库备份任务。代码如下:
- sqlite3 /bw-data/db.sqlite3 ".backup '/bw-data/db-backup/backup.sqlite3'"
6.3 恢复备份
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 bitwarden \
- -e SMTP_HOST=<smtp.domain.tld> \
- -e SMTP_FROM=<bitwarden@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 \
- bitwardenrs/server:latest
文章出自:挖站否 https://wzfou.com/bitwarden-rs/,版权所有。部分内容参考自:bitwarden_rs Wiki。