【Bitwarden】自建密码管理服务
本文最后更新于:2022年11月4日 晚上
Bitwarden 是一款自由且开源的密码管理服务,用户可在加密的保管库中存储敏感信息(例如网站登入凭据)。Bitwarden平台提供有多种客户端应用程序,包括网页用户界面、桌面应用,浏览器扩展、移动应用以及命令行界面。 Bitwarden 提供云端托管服务,并支持自行部署解决方案。
本文将讲解如何自建你的 Bitwarden 服务器。
相关链接
前期准备
- Linux 服务器,内存最低 2 GB
系统最低要求
如果你达不到系统配置最低要求,建议转战 vaultwarden。
目前镜像暂不支持 arm 架构。
| 最低 | 推荐 | |
|---|---|---|
| 处理器 | x64, 1.4GHz | x64, 2GHz dual core |
| 内存 | 2GB RAM | 4GB RAM |
| 硬盘 | 12GB | 25GB |
| Docker 版本 | Engine 19+ and Compose 1.24+ | Engine 19+ and Compose 1.24+ |
太长不看版
安装步骤的简要概括:
- 配置域名,设置
DNS解析,打开服务器80和443端口 - 安装
Docker和Docker Compose - 创建一个 Bitwarden 用户和目录来完成安装
- 从 https://bitwarden.com/host 检索安装 ID 和密钥以用于安装
ID 和 密钥 是用来做什么的请参考 What are my installation id and installation key used for?
- 安装 Bitwarden
- 编辑 ./bwdata/env/global.override.env 中的设置来配置环境
至少需要配置
globalSettings__mail__smtp...变量来设置电子邮件服务器,从而邀请和验证用户。(如果你不打算开放注册就无需配置) - 启动实例
- 打开域名网站测试安装是否成功
- 部署后,建议定期备份并检查系统更新
域名解析
默认情况下, Bitwarden 通过 80 和 443 来提供服务。请先在服务器防火墙放行这些端口。
如果需要提供网络服务的话,建议将域名解析到服务器。而不是用 IP 访问。
这部分非常基础。如果你还不会的话建议搜索学习下。
安装 Docker 和 Docker Compose
Bitwarden 官方提供了 Docker 镜像。
本站安装教程:
Docker 和 Docker Compose 安装
Docker 官方安装教程:
创建 Bitwarden 本地用户和目录
建议使用专用的 bitwarden 用户而不是 root 来配置 Linux 服务器,以便安装和运行 Bitwarden。 这样做会将 Bitwarden 实例与服务器上运行的其他应用程序隔离开来。
- 创建新用户:
1
sudo adduser bitwarden - 为用户设置密码 (强密码):
1
sudo passwd bitwarden - 创建 docker 组 (如果之前没创建过的话):
1
sudo groupadd docker - 将 bitwarden 用户加入 docker 组:
1
sudo usermod -aG docker bitwarden - 创建 bitwarden 目录:
1
sudo mkdir /opt/bitwarden - 为
/opt/bitwarden目录设置权限:1
sudo chmod -R 700 /opt/bitwarden - 设置
/opt/bitwarden目录所有者:1
sudo chown -R bitwarden:bitwarden /opt/bitwarden
上面是官方的配置,我一般不给这种用户设置密码且禁止登录,可用下面这条取代上面的步骤1和步骤2:
1 | |
使用下面的命令查看是否有 docker 组:
1 | |
使用下面命令查看是否成功将 bitwarden 加入 docker 组:
1 | |
官方脚本安装 Bitwarden
安装
Bitwarden 官方提供了脚本,用于在 Linux 和 macOS (Bash) 或 Windows (PowerShell) 上轻松安装。 完成以下步骤以使用 shell 脚本安装 Bitwarden
好处是小白也会用,坏处是脚本把反代也包揽了,需要你之前没有占用 80 或者 443 端口。如果你还想运行自己的反代服务,或者在服务器上运行其他网站,就不太方便。
如果您已创建 Bitwarden 用户和目录,请以 /opt/bitwarden 目录中的 bitwarden 用户身份完成以下操作。
切换用户和目录:
1
su bitwarden && cd /opt/bitwarden下载安装脚本 (
bitwarden.sh) 到服务器上:1
curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh && chmod 700 bitwarden.sh运行脚本,
bitwarden.sh脚本同目录下,会创建一个./bwdata目录1
./bitwarden.sh install在命令行完成交互(输入 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 然后把证书放到
- 你想要创建一个自签名证书吗(y/n)?
- 输入 y 来使用自签名证书。浏览器并不会信任该证书。建议仅在测试的时候使用!
- 输入 n 你的实例不会使用 SSL 证书。需要自己前置处理 https,否则
Bitwarden无法正常运行。
- 输入你
多服务器配置
对于服务器上想运行其他网站/服务的,建议按照我下面的处理:
1 | |
编辑 docker-compose.yml :
1 | |
这里 8080 和 8443 就是你要用 nginx 反代的两个端口。
启动
1 | |
配置
配置环境需要对两个文件进行更改。一个环境变量文件和一个安装文件。
环境变量(必须)
Bitwarden 的某些功能不是由 bitwarden.sh 脚本配置的。 通过编辑位于 ./bwdata/env/global.override.env 的环境文件来配置这些设置。 至少,您应该替换以下值:
1 | |
对于按照本文说的没有配置 SSL 证书的,需要把环境变量中的 globalSettings__baseServiceUri__vault 改为 https:
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |