之前自己一直在用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证书,在审核下发后,下载需要的文件,这里由于我是宝塔面板部署,因此下载的是下图标出部分的对应文件。
新建网站和证书部署
登录宝塔面板,在网站
页面新建一个纯静态网站,如下所示:
点击对应域名进入网站设置页面,在SSL设置面板处,将之前下载的bitwarden.yourdomain.com.key
和bitwarden.yourdomain.com_bundle.pem
文件的内容分别粘贴到密钥(KEY)
和证书(PEM格式)
对应输入框内,保存并启用SSL。然后将强制HTTPS打开。
安装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 文件
停止容器,删除 |
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进行配置即可。
Comments NOTHING