Bitwarden自建密码存储系统图文教程-开源免费的bitwarden_rs安装与使用

之前已经分享过一次用bitwarden_rs自建密码存储系统方法了,经过一段时间的试用发现Bitwarden自建密码存储系统确实可以完美替代1Password等付费的密码管理服务了。好处有三点:一是不用支付“高额”的费用,虽然说1Password一年仅需要35美元。

但是对于我们这样的“穷站长”来说35美元可以够自己买一台VPS主机了;二是Bitwarden提供了全平台的插件,电脑PC端、手机APP、Chrome、Firefox等插件,自动填充功能和1Password相差无异;三是安全性掌握在自己手里,再也不用担心1Password“删库跑路”了。

Bitwarden自建密码存储系统图文教程-开源免费的bitwarden_rs安装与使用

这篇就来分享一下利用VPS主机安装与搭建Bitwarden密码存储系统,作为一名草根站长,要让自己手里的VPS主机“发光发热”,自建RSS在线阅读、相册以及主机监控才是省钱第一大法宝:

  1. Chevereto免费相册程序安装与使用-免费自建图床和公共图片相册
  2. 自建RSS阅读器Tiny Tiny RSS安装和配置自动更新,全文RSS,更换主题,手机RSS登录
  3. 利用ServerStatus自建VPS主机和服务器性能和宕机监控平台-效果美化和自定义

PS:更新记录

1、支持WebDAV同步的密码管理软件,可以和各类网盘整合:Buttercup开源免费的密码管理器-支持网盘WebDAV同步/跨平台/手机APP。2022.11.14

2、如果你觉得付费的密码管理软件太贵,也可以试试免费的密码管理软件,汇总专题:密码管理软件整理汇总-好用免费和付费的密码管理软件推荐。2022.4.8

3、如果不想自己折腾,愿意花钱购买付费服务,请参考:密码管理软件1password使用-自动填充密码支持各大浏览器和手机应用。2022.3.22

一、Bitwarden密码管理系统准备

网站:

  1. 官网:https://bitwarden.com/
  2. 第三方项目:https://github.com/dani-garcia/vaultwarden

Bitwarden官方推荐使用Docker镜像安装,但是Bitwarden 服务器使用 .Net 开发,如果使用 Docker 来部署,镜像体积过大;此外它使用 MSSQL 数据库,部署这个数据库对服务器配置要求比较高。而是bitwarden_rs是第三方开发的Bitwarden安装镜像。

PS:2022年12月更新,bitwarden_rs已经于2021年8月更换名称为vaultwarden,见:https://github.com/dani-garcia/vaultwarden/discussions/1642。本篇文章所有的安装方法已经更新为Vaultwarden。教程:Vaultwarden(原Bitwarden_RS)自建密码库教程-安装方法 绑定域名 Https证书

1.1 准备一台VPS主机

VPS主机配置不用太高,512MB内存足够了,国内和国外的VPS主机都可以,不过为了后期使用域名访问建议你购买国外的VPS主机,除非你有BA域名。参考:VPS主机排行榜单

Bitwarden准备一台VPS

1.2 准备一个域名

可选项,Bitwarden安装好了后可以直接使用IP访问,且端口可以自定义,国内的VPS主机不用80、443等端口都可以使用。但是为了安全起见,建议绑定上域名,然后使用Https访问,域名注册参考:域名服务

Bitwarden准备一个域名

1.3 配置好Nginx

建议使用Oneinstack或者LNMP一键包,一键安装好Nginx。特别提醒:Bitwarden不影响VPS建站,你可以在你的Web服务器上运行Bitwarden,这也是节省成本的原因了。当然不习惯使用命令的朋友,也可以使用宝塔面板,宝塔面板后台自带了反代。参考:

  1. BT宝塔面板安装与使用-DirectAdmin空间平滑迁移至VPS主机的过程
  2. Oneinstack从入门到精通-Oneinstack安装与使用教程收集整理

二、Bitwarden密码管理系统安装

2.1 安装好Docker

你需要在VPS主机上先安装好 Docker CE (社区版)和Docker Compose,以下命令是基于Ubuntu系统的演示,如果你是Debian参考:安装好Docker,其它的请参考官网:

  1. 安装 Docker CE (社区版):https://docs.docker.com/install/linux/docker-ce/ubuntu/
  2. 安装 Docker Compose:https://docs.docker.com/compose/install/#install-compose

Ubuntu系统安装Docker CE 如下:

sudo apt-get remove docker docker-engine docker.io containerd runc

sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

#测试一下有没有成功
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]

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

#验证一下是不是正确安装
sudo docker run hello-world
#有以下反馈就表示正确安装
root@localhost:~# sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:4cf9c47f86df71d48364001ede3a4fcd85ae80ce02ebad74156906caff5378bc
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/

Ubuntu系统安装 Docker Compose如下:

#安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

#检测一下是不是成功安装
docker-compose --version

最后,安装好bitwarden_rs用以下命令:

#安装
docker pull vaultwarden/server:latest

2.2 做好DNS解析

到你的域名DNS管理处添加好A记录,将你的域名解析到你的VPS主机上。(注意:如果你只想使用IP访问,关于域名解析和绑定、反代等部分可以直接跳过)

Bitwarden做好域名DNS解析

2.3 绑定域名并反代

如果你用的是Oneinstack,使用命令添加虚拟主机绑定好你的域名,然后打开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;
    }
  
  
}

如果你用的是宝塔面板,你可以直接在后台添加网站,绑定域名。然后在网站设置中反代域名(详情请看宝塔面板教程),如下图:

Bitwarden宝塔面板绑定域名

如果你用的是Caddy,在/usr/local/caddy/Caddyfile里输入下面的内容即可(教程:Caddy最容易上手的Web Server-自动化HTTPS一分钟部署网站\网盘

xx.wzfou.com {
  gzip
  tls freehao123@gmail.com
  proxy / 127.0.0.1:8880 {
   websocket
   header_upstream -Origin
  }
  proxy /notifications/hub 127.0.0.1:3012 {
   websocket
   header_upstream -Origin
  }
  proxy /notifications/hub/negotiate 127.0.0.1:8880 {
   websocket
   header_upstream -Origin
  }
}

三、Bitwarden密码管理系统运行

3.1 Bitwarden运行关闭

使用以下命令可以运行Bitwarden:

#简单
docker run -d --name vaultwarden -v /bw-data/:/data/ -p 8880:80 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 stop vaultwarden

docker start vaultwarden

3.2 Bitwarden禁止注册

为了保证bitwarden服务器的稳定,你可以禁止bitwarden注册新用户(这一项可以放在最后,否则你自己都无法注册了)。

docker run -d --name vaultwarden \
  -e SIGNUPS_ALLOWED=false \
  -e WEBSOCKET_ENABLED=true \
  -e LOG_FILE=/data/vaultwarden.log \
  -p 8880:80 \
  -p 3012:3012 \
  -v /bw-data/:/data/ \
  vaultwarden/server:latest

3.3 Bitwarden发送邮件

如果你的Bitwarden是多用户使用的话,那么你可以配置一下SMTP发邮件了(免费的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

四、Bitwarden密码管理系统使用

4.1 Bitwarden注册用户

在最Bitwarden最开始运行时候不要关闭注册,因为管理员也需要在第一次运行注册账号。

Bitwarden注册账号

4.2 Bitwarden操作界面

以下就是Bitwarden的使用界面了,非常地简洁。

Bitwarden操作界面

在Bitwarden“设置”页面中可以对程序进行一定的设置。

Bitwarden程序设置

你可以开启Bitwarden的两步验证。

Bitwarden两步验证

4.3 浏览器扩展插件

Bitwarden提供了Firefox、Chrome等常用浏览器扩展插件,安装好了插件,先点击“设置”。

Bitwarden插件设置

填写你的Bitwarden域名地址。

Bitwarden填写服务器地址

Bitwarden的浏览器扩展插件操作如下:

Bitwarden扩展界面

Bitwarden自带了密码生成器。

Bitwarden密码生成器

4.4 Bitwarden手机APP

这是Bitwarden手机APP操作界面:

Bitwarden手机APP

Bitwarden支持手机自动填充。

Bitwarden自动填充

Bitwarden支持手机指纹登录。

Bitwarden手机登录

4.5 Bitwarden电脑PC端

这是Bitwarden电脑PC端的界面,基本上和1password差不多。(点击放大)

Bitwarden电脑PC端

五、Bitwarden导入导出与备份

5.1 导入导出

以1Password导入到Bitwarden密码管理系统为演示,首先到你的1Password电脑客户端选择导出密码。格式选择1pif即可。

Bitwarden导出格式

然后打开你的Bitwarden网页端,选择“工具”下的导入1Password即可。

Bitwarden导入数据

5.2 Bitwarden备份

关于在VPS主机上打包备份的教程,你可以参考:一个命令让Linux定时打包备份指定目录文件夹并同步备份到各大网盘

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

Bitwarden数据备份

六、总结

这篇文章我们用的是bitwarden_rs来搭建Bitwarden密码存储系统,为了可以让手机APP和浏览器扩展能够正常使用Bitwarden自建密码存储系统,我们需要用到反代域名,如果这些都不需要直接执行启动命令使用IP登录即可。

bitwarden运行命令相关的参数还有如下:

# 运行 bitwarden_rs 容器
docker run -d --name vaultwarden \
    -e SIGNUPS_ALLOWED=false \
    -e INVITATIONS_ALLOWED=false \
    -e ADMIN_TOKEN=step2_generated_token \
    -e ROCKET_TLS='{certs="/data/xxx.crt",key="/data/xxx.key"}' \
    -e DOMAIN=https://bwh.vioe.cc/ \
    -e LOG_FILE=/path/to/log \
    -e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \
    -e DATA_FOLDER=/path/to/data/folder \
    -p 443:80 \
    -v /path/to/host/ssl/:/path/to/docker/ssl/
    -v /path/to/host/data/folder:/path/to/docker/data/folder \
    vaultwarden/server:latest

说明如下:

SIGNUP_ALLOWED:是否允许注册
INVITATIONS_ALLOWED:是否允许组织邀请注册
ADMIN_TOKEN:用户管理界面 (/admin),可用于删除用户及邀请用户注册
ROCKET_TLS:ssl 证书信息,同时需要配置 -v /path/to/host/ssl/:/path/to/docker/ssl/ 卷,前者为宿主机 ssl 证书的位置,后者为容器证书位置
DOMAIN:域名
LOG_FILE、LOG_LEVEL、EXTENDED_LOGGING:日志保存文件路径以及日志等级定义
DATA_FOLDER:docker 容器数据保存文件夹(默认为 /data),除了定义这个文件夹之外,还可以定义附件、图标缓存、数据库等参数
DATABASE_URL:数据库路径
ATTACHMENT_FOLDER:附件路径
ICON_CACHE_FOLDER:图标缓存路径

容器操作命令如下:

# 启动容器
docker start $name
# 停止容器
docker stop $name
# 删除容器
docker rm $name
# 查看运行容器
docker ps -as

bitwarden升级命令如下:

# 重新拉取镜像
docker pull vaultwarden/server:latest
# 停止原容器
docker stop vaultwarden
#删除原容器
docker rm vaultwarden
# 重新运行 docker run 命令
docker run -d --name vaultwarden \
  -e SIGNUPS_ALLOWED=false \
  -e WEBSOCKET_ENABLED=true \
  -e LOG_FILE=/data/vaultwarden.log \
  -p 8880:80 \
  -p 3012:3012 \
  -v /bw-data/:/data/ \
  vaultwarden/server:latest

# 查看镜像文件
docker image ls
# 删除原镜像文件,
docker image rm $ID

文章出自:挖站否 https://wzfou.com/bitwarden-mima/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。


分享到:
Avatar for Qi
关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。
已有 18 条评论
  1. Avatar for nyf666 nyf666

    前面反向dl的时候用的端口是8880,文章最后变成了8380了。

    2022年4月24日 00:15 回复
    • Avatar for Qi Qi

      感谢,已经更正。

      2022年4月24日 00:28 回复
  2. Avatar for xdl xdl

    现在在用这个备份工具,感觉还行 https://github.com/ttionya/BitwardenRS-Backup

    2021年4月8日 17:46 回复
  3. 去年2020看Qi发这篇文章的时候,我还在想干嘛自建系统啊。然后今年2021Lastpass说要收费,我赶紧跑来抄作业。[嘻嘻]

    2021年2月24日 02:171 回复
    • Avatar for Qi Qi

      听说 Microsoft Authenticator不错,可以试试。

      2021年2月24日 08:39 回复
  4. 安装打开打开提示:
    502 Bad Gateway
    nginx

    打不开

    2020年12月30日 12:04 回复
    • Avatar for Qi Qi

      那应该是安装失败了。

      2020年12月30日 14:17 回复
  5. Avatar for vidawang vidawang

    直接用密码生成器多好,现在需要输密码的时候越来越少,其实需要的只是 新注册的账号在几个月之后再次登录能知道密码就行了

    2020年10月13日 03:00 回复
    • Avatar for vidawang vidawang

      虽然没有无聊的黑客去攻击你vps只是为了你的密码数据库,但是只要保存了,总有丢失的可能,用生成器最大的好处就是密码不存储在任何地方,而是使用时实时生成

      2020年10月13日 03:07 回复
      • Avatar for Qi Qi

        每次不一样的密码,如何登录?

        2020年10月13日 12:411 回复
        • Avatar for kid kid

          他应该说的是类似动态密码那种.那种安全性高..缺点就是手上没设备的情况下无法知道密码登录.

          2021年2月20日 12:43 回复
  6. Avatar for Noe Noe

    好像恢复是一个问题。

    2020年10月11日 18:15 回复
  7. Avatar for Noeo Noeo

    确实不错,用了半年了,自动备份到网盘。

    2020年10月10日 21:18 回复
  8. 自己在VPS上搭建了,这个使用是方便,但是我在使用的过程中遇到一个问题。使用bitwarden谷歌浏览器插件,填入自己bitwarden的网址,登录插件时有时会提示密码错误。但是在网页版是完正常的!。。。有时登录网页版之后,再登录插件就正常!不知道什么原因!求解答!!!

    2020年10月10日 14:34 回复
    • Avatar for Qi Qi

      是提示密码错误还是提示出现问题?猜测应该是网络不通的问题。我也遇到过。

      2020年10月10日 15:40 回复
  9. Avatar for 那一夜 那一夜

    域名+VPS一年下来也得不少钱呀[挖鼻屎]

    2020年10月9日 20:56 回复
  10. Avatar for 老手 老手

    沙发[可怜]

    2020年10月9日 17:57 回复

Login

Welcome! Login in to your account

Remember me Lost your password?

Don't have account. Register

Lost Password

Register