【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 |
|