- 本文地址: https://www.yangdx.com/2021/08/197.html
- 转载请注明出处
1、前言
在互联网上冲浪,我们经常需要注册各种账号,日积月累,账号越来越多。如果密码都设置一样,某个网站被攻破则其他网站账号也跟着泄露;而如果密码设置成不一样,又怕时间久了自己忘记。于是,我们就需要一款密码管理软件来帮我们记录账号密码。
我最近试用了 1Password,在 Edge 浏览器上的体验还不错。半个月试用期很快就到了,虽然可以继续使用,但不能再进行编辑。
在网上寻找同类软件,找到了开源的 Bitwarden。它的管理界面跟 1Password 类似,操作体验区别不大。最重要的是,Bitwarden 除了官网提供的付费服务外,还支持自建服务器。
2、搭建 Bitwarden 私有服务器
今天使用的 Docker 镜像是 Vaultwarden,由 Bitwarden_rs 更名而来。它使用 Rust 编写,与官方 Bitwarden 客户端兼容,并改用 SQLite 数据库,相对于官方版使用 MSSQL 数据库体积要小很多,更省内存。
文件 docker-compose.yml 如下:
version: "3"
services:
vaultwarden:
container_name: vaultwarden
image: vaultwarden/server:latest
restart: always
ports:
- 8880:80
- 3012:3012
environment:
ADMIN_TOKEN: "NdEe49VWt3V9DjCnnBVA4a5nrm5Yg4qScv8Vejaa" #访问/admin的token
WEBSOCKET_ENABLED: "true" #开启WebSocket
volumes:
- ./vw-data:/data
环境变量 ADMIN_TOKEN 设置用于登系统管理后台的凭证,建议设长一点,以增加暴力破解难度。
执行 docker-compose up -d
启动服务,然后就可以通过 http://127.0.0.1:8880
去访问 Web 控制台了,但这样很不安全。我们需要配置独立域名和 SSL 证书,让数据加密传输。
假设我使用 vault.yangdx.com
域名,nginx 作为代理,配置如下:
server {
listen 443 ssl http2;
server_name vault.yangdx.com;
access_log /var/log/nginx/vault.log main;
ssl_certificate /etc/nginx/cert/fullchain.pem;
ssl_certificate_key /etc/nginx/cert/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";
location / {
proxy_pass http://127.0.0.1:8880;
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;
}
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,浏览器打开 https://vault.yangdx.com
就可以看到 Vaultwarden 的登录界面了,点击“创建账号”按钮来注册一个账号。
登录后,主界面跟 1Password 有些相似:
接着再打开 https://vault.yangdx.com/admin
,输入前面设置的 token 进行登录,修改一下配置:
如果需要使用邮件功能,则填写 SMTP 邮件配置,下面是 QQ 邮箱配置示例:
注意,上面的 Password 不是 QQ 登录密码,而是发件授权码,需要到 QQ 邮箱单独获取:
3、安装 Bitwarden 客户端
Bitwarden 的桌面客户端支持 Windows、macOS、Linux,浏览器扩展支持 Chrome、Firfox、Edge、Safari 等,在 iPhone、Android 手机上也有相应的 App 支持。
下载地址见 https://bitwarden.com/download/
我安装的是 Edge 浏览器扩展,安装完毕后点击扩展图标,在登录之前要填写一下私人服务器 URL:
Bitwarden 的浏览器扩展在操作体验上跟 1Password 有区别。
1Password 是当用户名/密码输入框获得焦点时,自动弹出匹配的账号列表,同时输入框右边会显示 1Password 小图标。
而 Bitwarden 是在扩展图标处显示匹配的账号数量,点击扩展图标则显示匹配的账号列表。就这两天使用体验来讲,我个人更喜欢 Bitwarden 这种非侵入式的设计。
4、备份
前面搭建 Vaultwarden 服务的时候,宿主机的 ./vw-data 目录跟容器的 /data 目录做了映射,又因为 Vaultwarden 使用的是 SQLite 数据库,所以备份数据的时候,直接打包 vw-data 目录即可。只要不忘记主密码,把这个 vm-data 目录放到其他服务器上,就可以继续使用。
快来评论一下吧!
发表评论