基于宝塔 docker 部署自建 Bitwarden 密码管理服务

作者: 谢sir 分类: 分享 发布时间: 2022-08-15 23:17

服务器的使用率一直以来都不高,挂着两个不痛不痒没有任何流量的网站,恰好最近海南新冠疫情爆发,在家里的时间稍微长点,朋友的笔记本电脑放我这边,空闲时间多了就想瞎折腾点啥。平时自己手机都使用Bitwarden来记录密码,但还是和众多网友的想法一样,密码存放在别人的手里还是没有安全感,所以萌生了使用Bitwarden源码自建属于自己的密码管理站点。为此,自己查阅了很多教程,自身水平问题,很多教程都让我望而却步,直到发现博客“自得其乐”的这篇教程,让我成功搭建了,为了后期维护更方便,收藏在自己小站。

—————————-下方为转载来的原文———————–

部署过程
总体来说本文的部署方案是基于宝塔 docker 来进行部署,虽然资源的消耗多一些,但方便快捷,适合新手,而且服务器本身已经安装了宝塔来进行管理。

1. 宝塔安装 docker 管理器
如果宝塔已安装 docker 管理器,该步骤可省略。如果未安装,在宝塔面板首页左侧点击软件商店,搜索 docker,安装即可,安装完后把 首页显示 的开关打开,方便后续管理。

2. 获取镜像
打开 docker 管理器,点击镜像管理 —> 获取镜像,输入 Bitwarden_rs 的官方镜像 bitwardenrs/server 后点击获取镜像。

3. 创建容器

1.点击容器列表 —> 创建容器按钮。

2.填写端口映射中的容器端口:80(必须是 80), 服务端口:6666(6666 可以自定义)。

3.如果使用 WebSockets,实现自动同步,那么再增加一组端口映射:容器端口和服务端口都填 3012。否则可以不添这组映射。配合第 10 步其他设置一起食用。

4.填写目录映射中的服务器目录:/www/wwwroot/xxx(此处目录可自定义,但这里使用网站目录,xxx 为将来打算建立的网站域名,使用网站目录也会给后面建网页入口带来些许方便), 容器目录:/data(必须是 /data)。

5.填写内存配额,根据自己服务器情况填写,建议至少填 512MB,能填 1G 以上就填 1G 以上。

6.点击提交按钮创建容器

7.点击容器名称修改为 bitwardenrs(自己起个名字)方便记忆。

端口映射和目录映射填写完成后一定要点击 + 号进行添加!!!
端口映射和目录映射填写完成后一定要点击 + 号进行添加!!!
端口映射和目录映射填写完成后一定要点击 + 号进行添加!!!

4. 创建站点

1.宝塔创建一个网站,网站域名填写之前服务器目录设置中的 xxx,FTP、数据库均不创建,PHP 版本选择纯静态。

2.网站设置 SSL,添加证书,强制开启 HTTPS。bitwarden 要求必须使用 HTTPS,这一步不可少。

3.添加反向代理,名称随意填,目标 URL 为 http://127.0.0.1:6666,此处端口号 6666 和上面创建容器时服务器端口保持一致。

5. 开始使用

搭建完成后在宝塔安全设置中放行之前设置的服务器端口 6666 和 3012。之后访问网站即可打开 web 页面进行账号注册进行使用了。此处主密码应该设置一个有足够强度且在别处没有使用过自己能记住的密码,以后只要这个密码不失手,那么其他密码就是安全的,以后我们只需要记住这唯一的一个密码。

6. 关闭注册

一般我们自主部署只是为了自己使用或者与家人、朋友等小范围内使用,并不向外提供公众服务,因此当需要使用的人都注册完毕以后我们应该关闭注册功能。

在 docker 管理器中点击刚才创建的容器的状态绿色图标,停止容器运行,然后删除容器(删除容器后不会删除数据)。

在 VPS 中运行下面的命令重新运行容器,其中 bitwardenrs 为我们在 3.6 中给容器起的名字,SIGNUPS_ALLOWED=false 代表禁止注册,/www/wwwroot/xxx 为上面创建容器时所写的服务器目录,/data 为容器目录,6666:80 代表上面创建容器时的服务器端口:容器端口

docker run -d --name bitwardenrs \
  --restart unless-stopped \
  -e SIGNUPS_ALLOWED=false \
  -e WEBSOCKET_ENABLED=true \
  -v /www/wwwroot/xxx/:/data/ \
  -p 6666:80 \
  -p 3012:3012 \
  bitwardenrs/server:latest

运行完在容器列表里就又可以重新看到了,然后再去试下创建账号就会出现一个不能创建账号的错误提示。

后面如果想重启启用注册功能,只需把上面代码中的 false 改为 true 把第 6 步再来一遍即可。

7. 浏览器插件及客户端下载

去 Bitwarden 下载:Bitwarden

8. 客户端及插件连接自建服务

打开客户端或者插件,先不要登录,点击左上角的齿轮按钮,在服务器URL一栏中填写自建服务的域名,然后再登录。

9. 其他设置(试行)

bitwarden 默认是不会自动同步的,不管你是添加或者删除又或是修改了一条记录,都只是先保存在本地,只有当你手动点一下同步时才会进行同步。此时我们可以打开 WebSockets notifications 功能,这样手机修改后会立刻自动同步到云端,但手机端是接不到其他平台的即时修改信息的,官方就是这样弄的,没办法解决。具体设置为添加反代:

宝塔打开 /www/server/panel/vhost/nginx/proxy/xxx/*.conf 这个文件,添加如下信息(3012 是默认的 WebSocket server 端口可以通过变量 WEBSOCKET_PORT 修改,具体参见 wiki。我们可以在终端使用 docker ps 查看容器端口使用情况):

location /notifications/hub {
proxy_pass http://127.0.0.1:3012;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

location /notifications/hub/negotiate {
proxy_pass http://127.0.0.1:6666;
}

其他

账户密码信息是我们的个人无形资产,我们每个人都有必要保护好它们,一旦泄露,会给我们带来巨大的安全隐患,严重可造成个人信息泄露被人拿去利用、造成经济损失,给我们的生活带来不变。

为了保证数据安全,我们最好选择靠谱的大型云厂商,小厂商跑路、数据丢失都会给自己带来麻烦。而即便使用大厂商的服务器,我们也应该定期备份,比如有的厂商就提供服务器数据自动备份功能,即便厂家不提供,我们也应该多地手动备份,保证数据安全。而 Bitwarden 的机制决定了即便其他人拿到了我们的服务器数据,没有主密码他们也得不到其中的信息,因此一定要做好备份,保管好主密码。

10.更新方法

之前我们是基于 docker 架设的服务,因此这里我们也遵循通用的 docker 容器更新方法:停止现有容器 —> 删除现有容器 —> 删除现有镜像 —>pull 最新镜像 —> 基于最新镜像创建新的容器。

1. 宝塔首页打开 docker 管理器

2. 停止并删除容器

打开 docker 管理器后,点击容器列表 —>bitwardenrs (自己之前定义的容器名字) 的绿色小箭头 —> 删除

3. 删除镜像

点击镜像管理 —> 删除

4. 拉取新镜像

点击镜像管理 —> 获取镜像,输入 bitwardenrs/server—> 获取镜像

5. 创建新容器

ssh 登录服务器,输入和原来容器一样的启动参数创建并运行容器:

docker run -d --name bitwardenrs \
--restart unless-stopped \
-e SIGNUPS_ALLOWED=false \
-e WEBSOCKET_ENABLED=true \
-v /www/wwwroot/xxx/:/data/ \
-p 6666:80 \
-p 3012:3012 \
bitwardenrs/server:latest

如果觉得我的文章对您有用,请随意赞赏。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注