麦克斯仇
Think different
159
文章
27969
阅读
首页
INDEX
文章
ARTICLE
关于
ABOUT
自建Bitwarden(跨平台密码管理器)服务端
创建日期:
2022/01/03
修改日期:
2024/06/15
Linux
Docker
Bitwarden
官方教程:[Install and Deploy - Linux](https://bitwarden.com/help/article/install-on-premise-linux/) # 准备 ## 系统 | 项目 | 最低 | 推荐 | | ----------- | ---------------------- | ---------------------- | | CPU | x64 1.4GHz | x64 2GHz 双核 | | 内存 | 2GB | 4GB | | 存储 | 12GB | 25GB | | Docker 版本 | Engine 26+ and Compose | Engine 26+ and Compose | > PS:笔者购买腾讯云的 `1C2G` 服务器,实际系统只有 `1837MB` 内存,而搭建时使用的 `mssql` 服务至少需要 `2000MB` 内存,因此不能正常部署。笔者又切换到 `2C4G` 配置的服务器上运行, `mssql` 却只占用 `500MB` ,整个服务加起来占用大约 `1GB` 。哎~ ## 域名、证书和端口 部署完成后的服务一定是 `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/](https://bitwarden.com/host/) ,输入个人邮箱,`Data Region` 选择 `bitwarden.com (United States)` 并提交,之后将 `id` 和 `key` 记录下来 ## 邮箱 服务端需要设置一个邮箱的账户密码,用于发送注册通知等 # 安装 ## 系统环境 > 本文基础系统环境: `CentOS7` [CentOS7 安装 Docker-CE](https://maxqiu.com/article/detail/24) ## 服务端安装 ### 创建文件交接 ```bash # 创建用户 adduser bitwarden # 创建 docker 用户组(如果还未创建的情况下执行) groupadd docker # 将 bitwarden 用户添加到 docker 用户组 usermod -aG docker bitwarden ``` ### 下载脚本 ```bash # 创建文件夹 mkdir -p /work/bitwarden # 修改文件夹权限 chmod -R 700 /work/bitwarden chown -R bitwarden:bitwarden /work/bitwarden # 进入该文件夹 cd /work/bitwarden # 切换到 bitwarden 用户 su bitwarden # 下载脚本并授予执行权限(如果出现下载不了的,建议自己电脑上科学上网进行下载,完成上传) curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" && 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. `(!) Enter your region (US/EU) [US]:`<br>输入 `US` 即可 8. `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` ## 服务端配置 ### 证书 **选择B** 时,进入证书申请的网站,将证书下载下来,需要下载 `Nginx` 和 `根证书` ,并解压 ![](https://cdn2.maxqiu.com/upload/33da5891553646cf8e34d23822b0b769.jpg) - 将 `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`:管理员邮箱(如有多个,用 `,` 隔开) ### 端口 > 默认选择下,服务会使用 `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 ``` ## 服务端启动 启动服务时需要下载镜像且比较大,耐心等待 ```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/](https://bitwarden.com/download/) ,下载对应客户端即可,这里不做介绍
159
全部评论