bitwarden部署和使用记录

发布于 2024-03-19  2442 次阅读


之前自己一直在用edge保存密码,但edge密码管理器对网址的识别无法区分子域名单独进行,导致多个子网站之间的账号会串掉,用起来不太方便。经过对比尝试,最近选择了自建bitwarden服务来进行密码管理,经过一周左右的使用感觉良好,这里记录下部署和使用流程。

准备工作

整体的部署参考了bitwarden官方教程,但针对我使用的腾讯轻量云+宝塔面板的环境做了调整。

需要注意的是,bitwarden占用的服务器资源较多,请先查看下表确定自己的服务器满足需求。

Minimum Recommended
Processor x64, 1.4GHz x64, 2GHz dual core
Memory 2GB RAM 4GB RAM
Storage 12GB 25GB
Docker Version Engine 19+ and Compose 1.24+ Engine 19+ and Compose 1.24+

域名配置和证书申请

例如希望使用的域名是bitwarden.yourdomain.com,前往腾讯云解析DNS将域名 bitwarden.yourdomain.com 的 A 记录解析到自己服务器的公网 IP 地址。

然后前往腾讯云SSL证书,为bitwarden.yourdomain.com申请一个免费的SSL证书,在审核下发后,下载需要的文件,这里由于我是宝塔面板部署,因此下载的是下图标出部分的对应文件。

image.png

新建网站和证书部署

登录宝塔面板,在网站页面新建一个纯静态网站,如下所示:

image.png

点击对应域名进入网站设置页面,在SSL设置面板处,将之前下载的bitwarden.yourdomain.com.keybitwarden.yourdomain.com_bundle.pem文件的内容分别粘贴到密钥(KEY)证书(PEM格式)对应输入框内,保存并启用SSL。然后将强制HTTPS打开。

image.png

安装docker

bitwarden的一键部署需要基于docker和docker-compose,关于docker的安装请参考其它公开教程,例如:

新建用户

根据bitwarden的最佳实践推荐,首先新建一个专门的用户,按如下命令顺序操作。

# 添加新用户bitwarden
sudo adduser bitwarden
# 设置密码
sudo passwd bitwarden
# 创建docker用户组
sudo groupadd docker
# 将bitwarden用户添加至docker用户组
sudo usermod -aG docker bitwarden
# 创建目录
sudo mkdir /opt/bitwarden
# 修改访问权限
sudo chmod -R 700 /opt/bitwarden
# 修改拥有者
sudo chown -R bitwarden:bitwarden /opt/bitwarden

获取安装id和key

访问Requesting Hosting Installation ID & Key | Bitwarden,填写邮箱地址获取安装id和key,注意这里选择的region要和之后安装时一致,推荐直接选US。

bitwarden部署

一键安装

登录用户bitwarden,进入目录/opt/bitwarden,执行命令下载安装脚本

curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" && chmod 700 bitwarden.sh

然后执行命令./bitwarden.sh install进行安装,在安装过程中,会交互的进行设置,如下所示

  • Enter the domain name for your Bitwarden instance:
    这里输入在DNS解析里设置好的域名,如bitwarden.yourdomain.com
  • Do you want to use Let's Encrypt to generate a free SSL certificate? (y/n):
    由于前面我们已经通过宝塔设置好了SSL,这里选择n
  • Enter your installation id:
    输入之前获取的安装id
  • Enter your installation key:
    输入之前获取的安装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

全部选择后,等待安装完成。

文件配置

在安装完成后,首先需要修改配置文件和环境变量文件,首先修改/opt/bitwarden/bwdata/config.yml文件,如下

# 此处修改为服务器上空闲的端口,不能使用默认的80
http_port: 12345 
# 此处留空来移除https端口映射
https_port:

然后修改环境配置文件/opt/bitwarden/bwdata/env/global.override.env,如下,主要是配置SMTP服务和管理员门户访问邮箱等

# smtp服务设置,此处以163邮箱为例
globalSettings__mail__replyToEmail=example@163.com
globalSettings__mail__smtp__host=smtp.163.com
globalSettings__mail__smtp__port=465
globalSettings__mail__smtp__ssl=true
globalSettings__mail__smtp__username=example@163.com
# 此处为生成的应用密码,不是邮箱登录密码
globalSettings__mail__smtp__password=apppassword
# 是否禁用新用户注册,在自己注册了用户后,推荐改为true
globalSettings__disableUserRegistration=true
# 管理员门户访问邮箱
adminSettings__admins=example@163.com

修改完成后,使用./bitwarden.sh rebuild命令重新build一下

命令行使用

常用的命令包括如下

命令 描述
install 启动安装程序
start 启动所有容器
restart 重新启动所有容器(与启动相同)
stop 停止所有容器
update 更新所有容器和数据库
updatedb 更新/初始化数据库
updaterun 更新 run.sh 文件
updateself 更新主脚本本身
updateconf 更新所有容器,而无需重新启动正在运行的实例
uninstall 在执行此命令之前,系统会提示您保存数据库文件。选 y 将创建一个包含最新备份的数据库的 tar 文件

停止容器,删除 bwdata 目录及其所有内容,并删除临时卷。执行后,系统会询问您是否还要清除所有 Bitwarden 镜像

renewcert 续订证书
rebuild 重建从 config.yml 生成的安装文件
help 列出所有命令

服务启动和反代

此时我们可以启动服务了,执行./bitwarden.sh start命令,等待docker镜像安装和容器启动完成。这时服务运行于我们在config.yml文件中设置的http_port端口,还需要反代一下。

进入宝塔面板,点击对应域名进入网站设置页面,在配置文件设置处,添加如下反代配置,注意修改http_port为自己实际使用的端口

location / {
      proxy_pass http://127.0.0.1:http_port;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

然后移除原有配置文件中如下对应的内容

location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }

if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }

location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null;
    }

保存配置,此时访问bitwarden.yourdomain.com就可以开始正常使用了,浏览器可以安装对应的bitwarden插件,手机端下载官方app进行配置即可。