【Bitwarden】自建密码管理服务

本文最后更新于:2022年11月4日 晚上

Bitwarden 是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息(例如网站登入凭据)。Bitwarden平台提供有多种客户端应用程序,包括网页用户界面、桌面应用,浏览器扩展、移动应用以及命令行界面。 Bitwarden 提供云端托管服务,并支持自行部署解决方案。

本文将讲解如何自建你的 Bitwarden 服务器。

相关链接

前期准备

  • Linux 服务器,内存最低 2 GB

系统最低要求

如果你达不到系统配置最低要求,建议转战 vaultwarden

目前镜像暂不支持 arm 架构。

最低推荐
处理器x64, 1.4GHzx64, 2GHz dual core
内存2GB RAM4GB RAM
硬盘12GB25GB
Docker 版本Engine 19+ and Compose 1.24+Engine 19+ and Compose 1.24+

太长不看版

安装步骤的简要概括:

  1. 配置域名,设置 DNS 解析,打开服务器 80443 端口
  2. 安装 DockerDocker Compose
  3. 创建一个 Bitwarden 用户和目录来完成安装
  4. https://bitwarden.com/host 检索安装 ID 和密钥以用于安装

    ID 和 密钥 是用来做什么的请参考 What are my installation id and installation key used for?

  5. 安装 Bitwarden
  6. 编辑 ./bwdata/env/global.override.env 中的设置来配置环境

    至少需要配置 globalSettings__mail__smtp... 变量来设置电子邮件服务器,从而邀请和验证用户。(如果你不打算开放注册就无需配置)

  7. 启动实例
  8. 打开域名网站测试安装是否成功
  9. 部署后,建议定期备份并检查系统更新

域名解析

默认情况下, Bitwarden 通过 80443 来提供服务。请先在服务器防火墙放行这些端口。

如果需要提供网络服务的话,建议将域名解析到服务器。而不是用 IP 访问。

这部分非常基础。如果你还不会的话建议搜索学习下。

安装 Docker 和 Docker Compose

Bitwarden 官方提供了 Docker 镜像。

本站安装教程:
Docker 和 Docker Compose 安装

Docker 官方安装教程:

创建 Bitwarden 本地用户和目录

建议使用专用的 bitwarden 用户而不是 root 来配置 Linux 服务器,以便安装和运行 Bitwarden。 这样做会将 Bitwarden 实例与服务器上运行的其他应用程序隔离开来。

  1. 创建新用户:
    1
    sudo adduser bitwarden
  2. 为用户设置密码 (强密码):
    1
    sudo passwd bitwarden
  3. 创建 docker 组 (如果之前没创建过的话):
    1
    sudo groupadd docker
  4. 将 bitwarden 用户加入 docker 组:
    1
    sudo usermod -aG docker bitwarden
  5. 创建 bitwarden 目录:
    1
    sudo mkdir /opt/bitwarden
  6. /opt/bitwarden 目录设置权限:
    1
    sudo chmod -R 700 /opt/bitwarden
  7. 设置 /opt/bitwarden 目录所有者:
    1
    sudo chown -R bitwarden:bitwarden /opt/bitwarden

上面是官方的配置,我一般不给这种用户设置密码且禁止登录,可用下面这条取代上面的步骤1和步骤2:

1
2
# 创建无密码不能登录的新用户
adduser --disabled-login bitwarden

使用下面的命令查看是否有 docker 组:

1
cat /etc/group | grep docker

使用下面命令查看是否成功将 bitwarden 加入 docker 组:

1
groups bitwarden

官方脚本安装 Bitwarden

安装

Bitwarden 官方提供了脚本,用于在 LinuxmacOS (Bash) 或 Windows (PowerShell) 上轻松安装。 完成以下步骤以使用 shell 脚本安装 Bitwarden

好处是小白也会用,坏处是脚本把反代也包揽了,需要你之前没有占用 80 或者 443 端口。如果你还想运行自己的反代服务,或者在服务器上运行其他网站,就不太方便。

如果您已创建 Bitwarden 用户和目录,请以 /opt/bitwarden 目录中的 bitwarden 用户身份完成以下操作。

  1. 切换用户和目录:

    1
    su bitwarden && cd /opt/bitwarden
  2. 下载安装脚本 (bitwarden.sh) 到服务器上:

    1
    curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh && chmod 700 bitwarden.sh
  3. 运行脚本,bitwarden.sh 脚本同目录下,会创建一个 ./bwdata 目录

    1
    ./bitwarden.sh install
  4. 在命令行完成交互(输入 y 代表 是,n 代表 不):

    • 输入你 bitwarden 实例的域名
      比如说,bitwarden.example.com
    • 是否需要申请 Let's Encrypt 免费域名(y/n)?
    • 输入你的邮箱(用于 Let's Encrypt 发提醒邮件)
      输入n的话,下面 Do you have a SSL certificate to use? 选择 y 可用自己的证书
    • 输入你的安装 ID
    • 输入你的安装 key
    • 你有可用的 SSL 证书吗(y/n)?
      • 如果使用自己的证书,输入 y 然后把证书放到 ./bwdata/ssl/your.domain 目录下。
    • 你想要创建一个自签名证书吗(y/n)?
      • 输入 y 来使用自签名证书。浏览器并不会信任该证书。建议仅在测试的时候使用!
      • 输入 n 你的实例不会使用 SSL 证书。需要自己前置处理 https,否则 Bitwarden 无法正常运行。

多服务器配置

对于服务器上想运行其他网站/服务的,建议按照我下面的处理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
bitwarden@GreenCloud:/opt/bitwarden$ ./bitwarden.sh install
_ _ _ _
| |__ (_) |___ ____ _ _ __ __| | ___ _ __
| '_ \| | __\ \ /\ / / _` | '__/ _` |/ _ \ '_ \
| |_) | | |_ \ V V / (_| | | | (_| | __/ | | |
|_.__/|_|\__| \_/\_/ \__,_|_| \__,_|\___|_| |_|

Open source password management solutions
Copyright 2015-2022, 8bit Solutions LLC
https://bitwarden.com, https://github.com/bitwarden

===================================================

bitwarden.sh version 2022.10.0
Docker version 20.10.21, build baeda1f
Docker Compose version v2.12.2

(!) Enter the domain name for your Bitwarden instance (ex. bitwarden.example.com): 你的域名

(!) Do you want to use Let's Encrypt to generate a free SSL certificate? (y/n): n

(!) Enter the database name for your Bitwarden instance (ex. vault): bitvault

2022.10.0: Pulling from bitwarden/setup

(!) Enter your installation id (get at https://bitwarden.com/host): 你拿到的 installation id

(!) Enter your installation key: 你拿到的 installation key

(!) Do you have a SSL certificate to use? (y/n): n

(!) Do you want to generate a self-signed SSL certificate? (y/n): n

Generating key for IdentityServer.
Generating a RSA private key
.........................................................................................................................................................................................................................++++
............................................................................................................................................++++
writing new private key to 'identity.key'
-----

!!!!!!!!!! WARNING !!!!!!!!!!
You are not using a SSL certificate. Bitwarden requires HTTPS to operate.
You must front your installation with a HTTPS proxy or the web vault (and
other Bitwarden apps) will not work properly.

Building nginx config.
Building docker environment files.
Building docker environment override files.
Building FIDO U2F app id.
Building docker-compose.yml.

Installation complete

If you need to make additional configuration changes, you can modify
the settings in `./bwdata/config.yml` and then run:
`./bitwarden.sh rebuild` or `./bitwarden.sh update`

Next steps, run:
`./bitwarden.sh start`

编辑 docker-compose.yml :

1
2
3
cd /opt/bitwarden
sed -i "s/80:8080/127.0.0.1:8080:8080/" bwdata/docker/docker-compose.yml
sed -i "s/443:8443/127.0.0.1:8443:8443/" bwdata/docker/docker-compose.yml

这里 80808443 就是你要用 nginx 反代的两个端口。

启动

1
./bitwarden.sh start

配置

配置环境需要对两个文件进行更改。一个环境变量文件和一个安装文件。

环境变量(必须)

Bitwarden 的某些功能不是由 bitwarden.sh 脚本配置的。 通过编辑位于 ./bwdata/env/global.override.env 的环境文件来配置这些设置。 至少,您应该替换以下值:

1
2
3
4
5
6
7
8
9
...
globalSettings__mail__smtp__host=<placeholder>
globalSettings__mail__smtp__port=<placeholder>
globalSettings__mail__smtp__ssl=<placeholder>
globalSettings__mail__smtp__username=<placeholder>
globalSettings__mail__smtp__password=<placeholder>
...
adminSettings__admins=
...

对于按照本文说的没有配置 SSL 证书的,需要把环境变量中的 globalSettings__baseServiceUri__vault 改为 https

1
2
cd /opt/bitwarden
sed -i "s/http:\/\//https:\/\//" bwdata/env/global.override.env
1
2
```
```bash
1
2
```
```bash
1
2
```
```bash
1
2
3
```

```bash
1


【Bitwarden】自建密码管理服务
https://pawswrite.xyz/posts/ecc76498.html
作者
Rainbow
发布于
2022年11月4日
许可协议