Bitwarden 是 1Password 的最佳平替产品,全平台自动填充密码、无规律密码生成、支付卡、身份 ID、笔记词条管理等。功能和体验丝毫不输 1Password。

相比于 1Password 最低 $35 一年的价格,Bitwarden 只需要一台免费的 AWS 服务器,数据完全私有化。

Bitwarden Logo

Bitwarden 是一个开源产品,官方提供了桌面客户端、手机移动端(iOS、Android)、网页端 & 浏览器插件。各端产品除了可以使用官方提供的服务,也可以使用自建的服务,这篇文章就是为了记录自建 Bitwarden 服务的细节。

注意:不要直接安装 Bitwarden,官方发布的 Bitwarden 是基于 .NET 开发的程序,并且使用了 MySQL,对服务器的配置要求比较高。

除官方发布的版本,还有第三方采用 Rust 实现的 Bitwarden RS 版本,对比官方原版,做了非常多的优化,并且一些在官方服务中需要付费订阅的功能,在这个版本里也是免费的。

在安装之前,请确保已经具备了这些东西:

  1. 一台 VPS 主机(需要用到 Docker 镜像安装,机器配置不需要太高,512M 内存就足够了)
  2. 一个域名(Bitwarden 需要使用 HTTPS,拥有域名并解析到 VPS 上是必须的)
  3. 具备一点点操作 Linux 终端的能力(最低要求是知道使用文本编辑器如:Vim、Nano 等)

安装 Docker CE & Docker Compose

你需要在服务器上安装 Docker CE 以及 Docker Compose(Docker Compose 是可选的,主要是为了方便对 Docker 镜像写配置)

当然,如果之前已经安装过 Docker 了,可以略过这一步,直接安装 Bitwarden。

安装 Bitwarden RS

安装 Bitwarden RS 非常简单,只要已经正确安装了 Docker,那你只需要敲下面这一行代码:

1
docker pull bitwardenrs/server:latest

启动它也非常的简单,只需要执行以下代码即可:

1
2
3
4
5
6
7
8
docker run -d --name bitwarden \  
-e SIGNUPS_ALLOWED=true \
-e WEBSOCKET_ENABLED=true \
-e LOG_FILE=/data/bitwarden.log \
-p 8880:80 \
-p 3012:3012 \
-v /bw-data/:/data/ \
bitwardenrs/server:latest

使用 Docker Compose 配置

Docker Compose 是用于定义和运行多容器 Docker 程序的工具,通过使用 Docker Compose,就可以使用 yml 文件来配置程序所需要的服务,通过使用 docker-compose 命令,就可以从 yml 配置中创建并启动服务。

首先,我们创建一个用来放置 bitwarden 配置的文件夹:

1
mkdir ~/bitwarden

进入此文件夹,并创建一个 docker-compose.yml 文件

1
cd ~/bitwarden && vim docker-compose.yml

在 docker-compose 配置文件里,写入以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: "3"  
services:
bitwarden:
image: bitwardenrs/server
container_name: bitwardenrs
restart: always
ports:
- "127.0.0.1:8880:80" #将8880端口映射到镜像80端口
- "127.0.0.1:3012:3012"
volumes:
- ./bw-data:/data
environment:
WEBSOCKET_ENABLED: "true" #开启WebSocket
SIGNUPS_ALLOWED: "true" #开启注册,自己注册后改成fale
WEB_VAULT_ENABLED: "true" #web客户端

在保存配置文件之后,通过以下指令控制 docker 应用状态

1
2
3
docker-compose up -d   #运行服务  
docker-compose down #关闭服务
docker-compose restart #重启服务

关于配置文件的详细信息,可以参考官方文档:Using Docker Compose

配置网页代理

上述内容操作完成以后,Bitwarden 程序就已经处于运行的状态了,但此时前端还不能访问,我们需要给它配置一个 Web 服务,这里推荐使用 Caddy2 来搭建 Web 服务。

关于安装 Caddy2,请参考这片文章:Caddy2 安装

Caddy2 安装完成以后,在 Caddyfile 中填入这几条配置:

1
2
3
4
5
example.com {  
reverse_proxy 127.0.0.1:8880
reverse_proxy /notifications/hub 127.0.0.1:3012
reverse_proxy /notifications/hub/negotiate 127.0.0.1:8880
}

此时访问站点(刷新一下浏览器),你就可以看到 Bitwarden 在正常使用了

参考链接

本文 Docker & 其相关的概念,大多来自 Docker 的 Gitbook 里,感兴趣不妨去关注一下