[bitwarden]使用bitwarden_rs搭建自己的密码管理服务器

写在前面

一直以来1password付费密码管理,从最早的时候一次性购买,到apple推出订阅制之后,它也搞订阅制了,每月好多个美元,吃不消

Lastpass使用免费的当然也可以使用,但是谁知道什么时候来给你掐了,那就尴尬了。

最近github上找到一个bitwarden_rs,可以自己搭建密码管理服务器,自己的密码自己管理,太方便了。

让我们来看看bitwarden_rs要如何搭建

我个人喜欢使用debian9系统,其他系统自行参考研究

搭建docker环境

官方Debian存储库中提供的Docker安装包可能不是最新版本。 为了确保我们获得最新版本,我们将从官方Docker存储库安装Docker。 为此,我们将添加一个新的包源,从Docker添加GPG密钥以确保下载有效,然后安装该包。

首先,更新现有的包列表:

apt update

接下来,安装一些必备软件包,这些软件包允许通过HTTPS使用软件包:

apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

然后将官方Docker存储库的GPG密钥添加到您的系统:

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

将Docker存储库添加到APT源:

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

接下来,使用新添加的repo中的Docker包更新包数据库:

apt update

确保您要从Docker repo而不是默认的Debian repo安装:

apt-cache policy docker-ce

虽然Docker的版本号可能不同,但您会看到这样的输出:

docker-ce:
  Installed: (none)
  Candidate: 18.06.1~ce~3-0~debian
  Version table:
     18.06.1~ce~3-0~debian 500
        500 https://download.docker.com/linux/debian stretch/stable amd64 Packages

请注意,未安装docker-ce ,但安装的候选者来自Debian 9的Docker存储库( stretch )。

最后,安装Docker:

apt install docker-ce

现在应该安装Docker,守护进程启动,并启用进程启动进程。 检查它是否正在运行:

systemctl status docker

输出应类似于以下内容,表明该服务处于活动状态并正在运行:

● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago
     Docs: https://docs.docker.com
  Main PID: 21319 (dockerd)
   CGroup: /system.slice/docker.service
           ├─21319 /usr/bin/dockerd -H fd://
           └─21326 docker-containerd --config /var/run/docker/containerd/containerd.toml

安装bitwarden_rs

使用 docker-compose 来管理服务,参考 docker-compose 的官方文档来安装。在 Linux 上可以一行命令安装:

curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

如果要更新 docker-compose,也可以直接使用这条命令,只需要修改版本号为最新的 docker-compose 版本号。

配置文件

假设你准备在主目录中存放数据,新建一个目录:

cd ~ && mkdir bitwarden && cd bitwarden
pwd
# 应当输出 /home/username/bitwarden

准备一个配置文件:

cat >> config.env <<EOF
SIGNUPS_ALLOWED=true
DOMAIN=https://example.com 
DATABASE_URL=/data/bitwarden.db
ROCKET_WORKERS=10
WEB_VAULT_ENABLED=true
EOF
# https://example.com这个改成你自己的域名即可

以上配置文件的说明:

  • SIGNUPS_ALLOWED 控制是否开放用户注册,因为你必须先注册才能存储数据,所以暂且先打开;
  • DOMAIN 填入你准备分配给 Bitwarden 服务使用的域名;
  • DATABASE_URL 设置数据库在容器内的路径,你可以不设置,默认位于 /data/db.sqlite3
  • ROCKET_WORKERS 设置服务器使用几个线程。10 是默认值,你可以根据机器性能和个人需求适当调整;
  • WEB_VAULT_ENABLED 设置是否开启 Web 客户端。如果开启,可以通过访问你的域名来打开 Web 客户端,用户登录后即可通过网页管理密码。因为注册用户需要,所以也暂且先打开;

准备服务描述文件

cat >> docker-compose.yml <<EOF
version: '3'

services:
  bitwarden:
    image: mprasil/bitwarden:latest
    container_name: bitwarden
    restart: always
    volumes:
      - ./data:/data
    env_file:
      - config.env
    ports:
      - "6666:80"
EOF

这个文件主要描述了这些内容:

  • bitwarden 现在是唯一一个服务;
  • image: mprasil/bitwarden:latest 指定使用 Docker Hub 的 mprasil/bitwarden 最新镜像;
  • volumes 中指定将容器内的 /data 目录挂载到宿主机的当前目录下的 data 目录,这样你可以在宿主机上执行数据库的备份操作;
  • ports 指定将容器内的 80 端口映射到了宿主机的 6666 端口;

以后对 bitwarden 服务做的所有操作,都需要预先进入这两个配置文件所在的目录内。

反向代理和 HTTPS、启动服务

因为服务描述文件中将 bitwarden 服务的 80 端口映射到了宿主机的 6666 端口,你可以在宿主机上使用 nginx 或其他反向代理,为你的域名配置对应的代理规则,使得访问域名时,流量可以经由 bitwarden 服务来处理。

个人比较菜,喜欢使用宝塔面板管理vps,但是也很方便

新建一个站点,配置一下免费的ssl,然后在反向代理中设置如下:

最后启动服务:

docker-compose up -d

用户注册和数据导入

启动服务后,通过浏览器访问你配置好的域名,应当看到下图所示的登录界面。

点击下方”创建账号”链接进入注册页面。

注册完毕之后不需要验证邮箱(bitwarden_rs 目前没有实现邮件相关的功能),直接登录。登录之后在左侧栏的「工具」菜单中找到数据导入页面,如图。

常规的几个密码管理软件,通吃。

关闭用户注册、关闭 web vault

现在你的 Bitwarden 服务器允许任何人注册帐号使用,你可能希望关闭这个功能。在前面生成的 config.env 中,调整以下两项值:

SIGNUPS_ALLOWED=false
WEB_VAULT_ENABLED=false

修改之后,需要重启 bitwarden 服务才生效。运行以下命令来删除并重新创建容器。不必担心,因为指定了 volume 映射,你的数据不会被删除。

docker-compose down && docker-compose up -d

这样就关闭了用户注册功能,并禁用了 web vault 的访问。密码数据之后还是可以在客户端中进行编辑的。

客户端的使用

安装配置好服务端后,还需要在客户端上登录,将数据同步过来,才能使用自动填充等功能。Bitwarden 的客户端界面都大同小异,这里以iOS为例。(各个平台都有)

上面截图是chrome扩展插件,从中也可以看到也有Andriod的app

下面是iOS的,从apple App store免费下载

首先在登录界面,点击左上角齿轮图标的设置按钮。

输入之前自己设置的域名

回登录界面后,点击登录

输入设置的邮箱地址和主密码,登录

app界面

GOOD LUCKS!

END