Bitwarden自建密码存储系统全指北

为什么需要一个密码系统?

现如今,密码管理是一个令人头疼的问题,不仅要记得住,还要保证密码的安全和不泄露。为了避免撞库,所有账号用同一个密码显然不是一个好方法,那么今天介绍的 Bitwarden 或许可以提供一个新思路。
Bitwarden 开源免费跨平台,支持 iOS / Android,并且提供多款主流浏览器扩展,可以在任何设备上同步使用和管理你的密码,它的工作方式介于 1Password 和 LastPass 之间,它先使用高强度的 AES256 算法对你的个人数据进行本地加密,然后再传输到云端服务器来实现网络同步。
更厉害的是它可以搭建在自己的私人服务器上,安全性上自然要比放在微软、Google、苹果、华为等等任何服务提供商手里都要安全得多,毕竟像苹果”艳照门“那种事儿大家都不想的嘛=。=

相比于1Password,Bitwarden自建密码存储系统好处有三点:

一是不用支付“高额”的费用,1Password一年需要35美元的费用,有这个钱买个视频网站会员不香吗?而且自己买服务器要更省钱得多,而且除了搭建这个之外,还可以用来干别的;
二是Bitwarden提供了全平台的插件,电脑PC端、手机APP、Chrome、Firefox等插件,自动填充功能和1Password相差无异;
三是安全性掌握在自己手里,再也不用担心1Password“删库跑路”了。

今天,就来介绍如何用自己的VPS搭建Bitwarden密码存储系统。

一、Bitwarden密码管理系统搭建前期准备

1、开源地址

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

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

而bitwarden_rs采用 Rust 实现了 Bitwarden服务器,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。此外,官方服务器中需要付费订阅的一些功能,在这个实现中是免费的。

2、需要的准备

一台VPS主机、一个域名。
我刚好在腾讯云活动时买了4年的升配,还是很便宜的。

3、安装好Docker

你需要在VPS主机上先安装好 Docker CE (社区版)和Docker Compose,官网如下

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

以下命令基于Cent OS7.6系统演示:
安装Docker CE (社区版):

[root@VM-4-5-centos sbin]# yum-config-manager \
>     --add-repo \
>     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@VM-4-5-centos sbin]# yum install docker-ce docker-ce-cli containerd.io
从 https://mirrors.aliyun.com/docker-ce/linux/centos/gpg 检索密钥
导入 GPG key 0x621E9F35:
 用户ID     : "Docker Release (CE rpm) <docker@docker.com>"
 指纹       : 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
 来自       : https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
是否继续?[y/N]:y
完毕!
[root@VM-4-5-centos sbin]# sudo systemctl start docker
[root@VM-4-5-centos sbin]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete 
Digest: sha256:9f6ad537c5132bcce57f7a0a20e317228d382c3cd61edae14650eec68b2b345c
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:

[root@VM-4-5-centos sbin]# curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   633  100   633    0     0    555      0  0:00:01  0:00:01 --:--:--   555
100 12.1M  100 12.1M    0     0   774k      0  0:00:16  0:00:16 --:--:--  358k
[root@VM-4-5-centos sbin]# chmod +x /usr/local/bin/docker-compose
#检测一下是不是成功安装
[root@VM-4-5-centos sbin]# docker-compose --version
docker-compose version 1.29.2, build 5becea4c

二、安装Bitwarden密码管理系统

1、做好DNS解析

在域名DNS管理处添加好A记录,将你的域名解析到你的VPS主机上。

三、Bitwarden密码管理系统运行

0、生成管理后台所需admin_token

# 生成admin_token
[root@VM-4-5-centos ~]# openssl rand -base64 30
TOYKzjH/sZURLEtCFUHL1Zsv2EDZYysRkMbrxWhe

之后域名后加 /admin 即可进入管理后台。

1、Bitwarden运行与配置

#部署Bitwarden
docker run -d --name bitwarden \
  -e SIGNUPS_ALLOWED=true \
  -e WEBSOCKET_ENABLED=true \
  -e ADMIN_TOKEN=TOYKzjH/sZURLEtCFUHL1Zsv2EDZYysRkMbrxWhe \
  -e LOG_FILE=/data/bitwarden.log \
  -p 20001:80 \
  -v /www/wwwroot/password.linjoey.cn/:/data/ \
  vaultwarden/server:latest

# 说明:
# SIGNUP_ALLOWED:是否允许注册
# LOG_FILE:日志保存文件路径

2、Bitwarden服务停止与启动

# 停止服务
docker stop bitwarden
# 启动服务
docker start bitwarden
# 查看运行容器
docker ps
# 列出所有容器
docker ps -a
# 删除某个容器
docker rm <CONTAINER ID|NAME>

3、Bitwarden禁止注册

为了保证bitwarden服务器的稳定,你可以禁止bitwarden注册新用户。

# 重新拉取镜像
docker pull vaultwarden/server:latest
# 停止原容器
docker stop bitwarden
#删除原容器
docker rm bitwarden
# 重新运行 docker run 命令
docker run -d --name vaultwarden \
  -e SIGNUPS_ALLOWED=false \
  -e WEBSOCKET_ENABLED=true \
  -e ADMIN_TOKEN=TOYKzjH/sZURLEtCFUHL1Zsv2EDZYysRkMbrxWhe \
  -e LOG_FILE=/data/bitwarden.log \
  -p 20001:80 \
  -p 20002:20002 \
  -v /vw-data/:/data/ \
  vaultwarden/server:latest
# 查看镜像文件
docker image ls
# 删除原镜像文件,
docker image rm $ID

4、Bitwarden升级命令

# 重新拉取镜像
docker pull vaultwarden/server:latest
# 停止原容器
docker stop bitwarden
#删除原容器
docker rm bitwarden
# 重新运行 docker run 命令
docker run -d --name bitwarden \
  -e SIGNUPS_ALLOWED=true \
  -e WEBSOCKET_ENABLED=true \
  -e ADMIN_TOKEN=TOYKzjH/sZURLEtCFUHL1Zsv2EDZYysRkMbrxWhe \
  -e LOG_FILE=/data/bitwarden.log \
  -p 20001:80 \
  -v /www/wwwroot/password.linjoey.cn/:/data/ \
  vaultwarden/server:latest
# 查看镜像文件
docker image ls
# 删除原镜像文件,
docker image rm $ID

四、Bitwarden密码管理系统使用

详细介绍跳转:自建超级安全密码管理服务Bitwarden保姆级使用教程

五、Bitwarden导入导出与备份

1、导入

打开你的Bitwarden网页端,选择“工具”下的“导入数据”,即可导入1Password等不同密码库的数据。

2、导出

打开你的Bitwarden网页端,选择“工具”下的“导出密码库”即可。

3、备份

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

文章目录