自建Bitwarden(跨平台密码管理器)服务端
官方教程:[Install and Deploy - Linux](https://bitwarden.com/help/article/install-on-premise-linux/) # 准备 ## 系统 项目 | 最低 | 推荐 ---|---|--- CPU | x64 1.4GHz | x64 2GHz 双核 内存 | 2GB | 4GB 存储 | 10GB | 25GB Docker 版本 | Engine 19+<br>Compose 1.24+ | Engine 19+<br>Compose 1.24+ > PS:笔者购买腾讯云的`1C2G`服务器,实际系统只有`1837MB`内存,而搭建时使用的`mssql`服务至少需要`2000MB`内存,因此不能正常部署。笔者又切换到`2C4G`配置的服务器上运行,`mssql`却只占用`500MB`,整个服务加起来占用`1GB`。哎~该死的`mssql` ## 域名、证书和端口 部署完成后的服务一定是`https`协议访问 - 域名: - 有:设置域名解析 - 无:使用IP - `SSL` 证书 - 有域名且可用 `80 + 443` 端口:可以选择使用 `Let's Encrypt` 自动创建证书(参考:[Certificate Options](https://bitwarden.com/help/certificates/)) - 有域名时:申请一个免费的`https`证书,阿里云、腾讯云都有,一年有效期,到期需手动更换 - 无域名时:初始化脚本会提示创建一个系统生成的`SSL`证书 - 端口 - `80 + 443` :使用 `Let's Encrypt` 必须为该端口 - 其他情况下任意 > 综上所述,下文中会有如下选择的情况 选择 | 域名 | 证书 | 端口 :-: | :-: | :-: | :-: A | 有 | `Let's Encrypt` | `80 + 443` B | 有 | 免费 | 任意 C | 无 | 系统生成 | 任意 ## 安装ID和密钥 > 每个自建的`bitwarden`服务端在安装时都需要一对唯一的`id`和`key`。 浏览器打开`https://bitwarden.com/host/`,输入个人邮箱并提交,之后将`id`和`key`记录下来 ## 邮箱 服务端需要设置一个邮箱的账户密码,用于发送注册通知等 # 安装 ## 系统环境 > 本文基础系统环境:`CentOS7` - Docker:[CentOS7安装docker-ce(阿里源)](https://maxqiu.com/article/detail/24) - Docker-Compose:[Linux下Docker安装docker-compose](https://maxqiu.com/article/detail/36) ## 服务端安装 ### 创建文件夹与下载脚本 > PS:官方文档建议创建一个独立用户,使`Bitwarden`实例与服务器上运行的其他应用程序隔离开来,本文直接使用`root`用户 ```bash # 创建文件夹 mkdir -p /work/bitwarden # 进入该文件夹 cd /work/bitwarden # 下载脚本并授予执行权限(如果出现下载不了的,建议自己电脑上科学上网进行下载,完成上传) curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh && chmod 700 bitwarden.sh ``` ### 初始化 > 执行初始化脚本 ```bash ./bitwarden.sh install ``` 初始化过程中会有如下提示: 1. `Enter the domain name for your Bitwarden instance (ex. bitwarden.example.com):`<br>输入自己的域名或IP 2. `Do you want to use Let's Encrypt to generate a free SSL certificate? (y/n):`<br>是否使用 `Let's Encrypt` 自动创建证书 - **选择A**输入`y` - **选择B**输入`n` - **选择C**输入`n` 3. `Enter your email address (Let's Encrypt will send you certificate expiration reminders):`<br>填写用于接收证书过期提醒的邮箱 - **选择A**输入自己常用的邮箱 - **选择B**没有这一步 - **选择C**没有这一步 4. `Enter the database name for your Bitwarden instance (ex. vault):`<br>输入数据库的名称,建议`vault` 5. `Enter your installation id (get at https://bitwarden.com/host):`<br>输入准备阶段获取的`id` 6. `Enter your installation key:`<br>输入准备阶段获取的`key` 7. `Do you have a SSL certificate to use? (y/n):`<br>是否拥有一个`SSL`证书 - **选择A**没有这一步 - **选择B**输入`y` - **选择C**输入`n` 8. `Is this a trusted SSL certificate (requires ca.crt, see docs)? (y/n):`<br>这是一个受信任的SSL证书吗? - **选择A**没有这一步 - **选择B**输入`y` - **选择C**没有这一步 9. `Do you want to generate a self-signed SSL certificate? (y/n):`<br>是否创建一个系统生成的`SSL`证书 - **选择A**没有这一步 - **选择B**没有这一步 - **选择C**输入`y` ## 服务端配置 ### 端口 > 默认选择下,服务会使用 `80 + 443` 端口 - **选择A**:`80 + 443` 不能修改 - **选择B**:`80` 可关闭,`443` 可以修改为其他端口,如 `8443` - **选择C**:`80` 可关闭,`443` 可以修改为其他端口,如 `8443` 编辑配置文件 ```bash vim ./bwdata/config.yml ``` 修改如下配置 ``` http_port: https_port: 8443 ``` 重新编译 ```bash ./bitwarden.sh rebuild ``` ### 证书 **选择B** 时,进入证书申请的网站,将证书下载下来,需要下载 `Nginx` 和 `根证书` ,并解压  - 将 `Nginx` 下的 `xxx.crt` 重命名为 `certificate.crt` - 将 `Nginx` 下的 `xxx.key` 重命名为 `private.key` - 将 `根证书` 下的 `xxx.crt` 重命名为 `ca.crt` 之后将以上文件上传至服务器的 `/work/bitwarden/bwdata/ssl/[你的域名或IP]` 文件夹下 ### 邮箱 编辑配置文件 ```bash vim bwdata/env/global.override.env ``` 修改如下配置 ``` globalSettings__mail__replyToEmail=xxx@xxx.com globalSettings__mail__smtp__host=xxxxxx globalSettings__mail__smtp__port=465 globalSettings__mail__smtp__ssl=true globalSettings__mail__smtp__username=xxx@xxx.com globalSettings__mail__smtp__password=xxxxxx adminSettings__admins=xxx@xxx.com ``` - `replyToEmail`:回件邮箱(一般同发件人) - `host`:邮箱服务器地址 - `port`:邮箱服务器端口 - `ssl`:设置为`true` - `username`:发件人邮箱地址 - `password`:发件人邮箱密码 - `admins`:管理员邮箱(如有多个,用 `,` 隔开) ## 服务端启动 启动服务时需要下载镜像且比较大,耐心等待 ```bash ./bitwarden.sh start ``` > 启动完成后访问`https://域名或IP:端口`,即可访问登录注册页面 # 其他配置 ## 管理端 1. 浏览器访问`https://域名或IP:端口/admin`打开管理端 2. 输入管理员邮箱(即之前配置的管理员邮箱)并提交 3. 查看邮箱的收件箱,点击`Log In Now`进入管理界面 ## 禁用注册 编辑配置文件 ```bash vim bwdata/env/global.override.env ``` 修改如下配置 ``` globalSettings__disableUserRegistration=true ``` 重启服务端 ```bash ./bitwarden.sh restart ``` 此时再次打开登录页面,虽然有注册按钮,但是不能提交注册 # 客户端 打开下载地址`https://bitwarden.com/download/`,下载对应客户端即可,这里不做介绍