使用Docker搭建自己的在线密码管理系统-Bitwarden
前言
因为现在网络安全问题愈发严重,黑客经常通过互联网已泄密的用户和密码信息进行撞库攻击,而且很多用户再不同的网站使用的是相同的帐号密码,所以为不同的网站设置不同的密码就非常重要。
但密码不同尤其是使用随机生成的密码,这个时候往往需要一个密码管理器软件帮助我们记住并自动填写这些密码。比如1Password,lastpass这些在线密码管理软件。但是今天给大家介绍的是Bitwarden。

推荐原因总结:
- 开源且免费
- 多平台,电脑、手机、浏览器插件均可使用
- 可以搭建在自己的服务器上
一、Docker的安装
这里不做详细介绍,可以参考我的这篇文章:或者参考官方文档:官方文档
二、使用bitwardenrs镜像
(一)镜像选择
这里没有使用Bit warden官方镜像,因Bitwarden服务器使用.Net开发,Docker镜像体积过大,此外它使用MSSQL数据库,这个数据库对服务器性能要求比较高。
所以有人利用Rust重写了一遍,根据官方项目同步更新,这个项目的Docker镜像叫做bitwardenrs,这个镜像体积比较小,对服务器性能 要求比较低,所以本次部署采用该镜像。
(二)创建容器
推荐直接使用命令行:
docker run -p 10011:80 -d -v /data/bitwardenrs:/data bitwardenrs/server
设置好端口映射和目录映射,端口映射千万别写反
同时开放对应端口
三、启用HTTPS
一般来说,我们都不希望和服务器通信的密码被截获,所以强烈建议启用https来加密客户端和服务器之前的通信。
这里采用的是Nginx反向代理,具体证书申请不做详述,下面是一个Nginx配置参考。
修改点:
server_name和301return的网址换成你的域名proxy_pass换成docker搭建的Bitwarden的ip和端口ssl_certitficate和ssl_certificate_key换成你的域名证书
server {
listen 80;
listen [::]:80;
server_name yourdomain.com;
# redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://yourdomain.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:1080;
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;
}
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /ssl/nginx/yourdomain.com.pem;
ssl_certificate_key /ssl/nginx/yourdomain.com.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
# curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam.pem
ssl_dhparam /yasin/ssl/dhparam.pem;
# intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
# verify chain of trust of OCSP response using Root CA and Intermediate certs
# ssl_trusted_certificate /etc/ssl/ethanblog.com/chain1.pem;
# replace with the IP address of your resolver
resolver 223.5.5.5 8.8.8.8;
}
四、使用说明
(一)首次使用
一般设置好后,输入你配置的服务URL,首次访问将语言设置中文,然后我们会看到下面的界面:
如果你的服务器带宽较小,第一次打开Web页面加载时间会略长。

然后点击注册按钮填写我们的邮箱和主密码
请务必牢记你的主密码,因为一旦遗失,你保存的密码就再也找不回来了。

你设置的密码信息会通过主密码进行加密,比起担心服务器数据泄露,更重要的是不能泄露主密码。
为了防止数据丢失,定期备份你的数据文件夹比如bw-data即可。
注册完毕后我们就可以在各个客户端通过配置Bitwarden的服务端URL,然后输入用户名和密码即可访问我们的密码数据。
(二)关闭注册
在我们注册好自己邮箱和密码后,如果你并不希望为其他人提供服务,请记得关闭注册功能。
# 查看容器ID
docker ps
# 停止容器
docker stop 容器ID
# 删除容器
docker rm -f 容器ID
#重新创建容器
docker run -d --name bitwarden \
-e SIGNUPS_ALLOWED=false \
-v /bw-data/:/data/ \
-p 80:80 \
bitwardenrs/server:latest

(三)PC软件使用
第一次使用,推荐使用PC软件,可以将我们的密码较快的设置完毕。
下载打开后,记住设置成我们自己搭建的Bitwarden服务器URL,否则默认使用官方的密码托管服务,手机软件和浏览器插件同理。
设置如下:

具体软件的使用这里就不详细说明了,留给大家自己去探索。
(四)浏览器插件
我们更多的使用场景应该就是网页自动填充了,所以添加一个浏览器扩展,这样匹配到你密码设置的域名网站就可以自动填充了。
这里以我用的Chrome浏览器为例,可以去应用商店中搜索Bitwarden安装即可,这个比Chrome自带的密码填充的好处是只有输入主密码才可以查看你的密码,Chrome有电脑系统用户密码就可以查看,而且索Bitwarden手机APP也可以使用。
这里推荐使用Edge浏览器下载插件。
如果有无法访问应用商店的,Chrome离线安装扩展方法可以自行搜索。
(五)手机APP
IOS和安卓都有相关软件,且免费。
安卓不能上Google Play的话,下面是2.9.1版本的百度网盘的下载地址。
安卓下载地址:点我(2022.12.4更新)
IOS不太清楚,安卓的话,如果是安卓P(安卓9)以上版本,应该都可以调用自动填充框架服务,选择Bitwarden,这样APP也可以帮我们自动填写密码。
这是我的小米手机设置参考:

五、升级
根据Bitwarden_rs官方项目wiki,当有新的版本可以升级时,可以使用下面的命令进行升级,否则可能无法使用APP对应的一些新功能:
# 拉取最新的版本
docker pull bitwardenrs/server:latest
# 停止并删除旧的容器
docker stop bitwarden
docker rm bitwarden
# 启动装载了数据的新容器
docker run -d --name bitwarden -v /bw-data/:/data/ -p 80:80 bitwardenrs/server:latest
六、Enjoy
好了,就介绍这么多,自动填充习惯后你就会发现再也回不回去了…😁
参考文章
https://blog.csdn.net/shangyexin/article/details/106804789 作者:「江山灬如画」
https://tcpgnl.com/self-build-bitwarden.html 作者:「TCPGNL」