使用群晖 Docker 搭建第三方 Bitwarden(bitwarden_rs)密码服务器

文章目录
[隐藏]

Bitwarden 是一个跨平台的密码管理软件,类似于 1Password、EnPass、LastPass 等。Bitwarden 是免费开源的,可以将服务端部署在自己的服务器上,比如群晖,并且支持 Docker 部署。但官方的镜像要求至少 2G 以上内存,要求比较高。有人用 Rust 实现了 Bitwarden 服务器,项目叫 bitwarden_rs,并且提供了 Docker 镜像,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。

Docker 知识(官方的命令参数对应群晖 Docker 容器中的设置):

  • -v:对应容器中的 “卷”
  • -p:对应容器中的 “端口”
  • -e:对应容器中的 “环境”

准备

  1. 群晖安装 Docker。直接在群晖的套件中心搜索安装
  2. 你得有一个域名,并且有证书。因为 Bitwarden 必须 https 登录,否则不能注册(注册时不能提交)和登录(提示 Cannot read property ‘importKey’)。证书可以在阿里云免费申请,申请好以后导入群晖中
  3. 群晖中新建 docker/bitwarden/data 和 docker/bitwarden/ssl 目录(这个你自己随意建)
  4. 将两个证书文件放置于 docker/bitwarden/ssl 目录中
  5. 如果你不开启 HTTPS,这里以及后面的 SSL 相关的东西就不需要了

安装 Bitwarden 服务端

群晖 Docker-注册表中搜索mprasil/bitwarden,下载映像(目前新版为bitwardenrs/server

启动此映像,修改相应的容器设置如下:

  • 添加数据存储路径:“卷” 中添加 “文件夹路径”docker/bitwarden/data(根据你建的文件夹的路径修改);“装载路径”/data/(不能修改)
  • 添加证书路径:“卷” 中添加 “文件夹路径”docker/bitwarden/ssl(根据你建的文件夹的路径修改);“装载路径”/ssl/(不能修改)
  • “端口设置”:本地端口 8080(这个填写群晖未使用的一个端口);容器端口 80(此容器的端口);类型 TCP

一些配置

群晖中设置反向代理

“控制面板”-“Synology 应用程序门户”-“反向代理服务器”,新增一个反向代理服务器规则,如图:

说明:“来源端口” 填写远程访问端口;“目的地端口” 就是 mprasil-bitwarden 容器端口中你填写的本地端口。

设置外网访问 Bitwarden 服务器

我的宽带供应商没有提供公网 IP,但我有使用 frp 做内网穿透,见我另一篇文章搭建 frp 内网穿透以访问 NAS,所以想要外面访问 Bitwarden 服务端,还需要修改 frpc 客户端配置文件。

frpc.ini 中增加如下配置信息:

[Bitwarden_server]
type = tcp
local_ip = 127.0.0.1 # 我的 frpc 客户端搭建在 NAS 上,所以直接本机
local_port = 8080 # 映射到 NAS 上的端口(和群晖中设置的反向代理目的地端口对应)
remote_port = 8443 # 和群晖中设置的反向代理来源端口对应
custom_domains = mydomain.com # 自己的域名

搭建完成

浏览器中输入 http://mydomain.com:8443 应该就可以访问了

功能关闭及其他

更多功能查看 bitwarden_rs wiki

启用 HTTPS

添加环境变量 ROCKET_TLS,值 {certs="/ssl/certs.pem",key="/ssl/key.pem"}

关闭注册

添加环境变量 SIGNUPS_ALLOWED,值 false

关闭邀请

添加环境变量 INVITATIONS_ALLOWED,值 false

备份数据库

直接复制 docker/bitwarden/data 文件夹下的 db.sqlite3 文件即可

故障解决

我遇到网页登录、Chrome 浏览器扩展、苹果和安卓 app 使用一切正常,但 Windows 版 Bitwarden 程序登录(以及创建帐号)时提示 Failed to fetch,试过删除账户、重新启动容器、容器操作中使用 “清除”、重装 app 等,都不能解决。

网上找到的只有一篇英文文章“Failed to fetch” errors on desktop app,然而并没有解决问题。

解决:查看群晖及容器都没有相关的日志记录,猜测是没有和服务端建立连接,最后测试发现和 Windows 系统代理设置有关。打开 “Windows 设置-网络和 Internet-代理”,关闭使用设置脚本即可。

Bitwarden 缺点

  • 不能离线编辑

2019-06-12 更新:新版的映像为bitwardenrs/server,使用同样的配置方式,使用mprasil/bitwardeny 原有的数据无损切换。

参考链接

已有 5 人 对 ”使用群晖 Docker 搭建第三方 Bitwarden(bitwarden_rs)密码服务器” 进行了评论

  1. Stride说道:

    文章中的 docker 用错了,不应该使用 mprasil/bitwarden 应该使用 bitwardenrs/server

    [Reply]

    王小喜 Reply:

    感谢提供这个信息。我看到 Note: you should use bitwardenrs/server instead of this image as that is the new official image.
    这个应该是新版的 Docker 吧,我来试试。

    [Reply]

  2. 小贝说道:

    发现个小问题 :服务器使用的是 80 端口,苹果手机客户端连击不上,提示: there is problem connecting to the server.
    网页 、 mac 客户端、安卓客户端 都好使。唯独苹果手机不行!

    [Reply]

    test Reply:

    可能是 IOS 禁止不安全网络连接吧,部署 https 试一下

    [Reply]

    王小喜 Reply:

    既然其他客户端可以,就某一设备上的不行,多半就是此设备上系统代理的问题。和我 Windows 客户端遇到的 Failed to fetch 故障应该是一个道理。

    所以,看看你的 iOS 是不是被其他代理程序接管了,或者看一下网络里面的 “配置代理”,正常应该是关闭状态

    [Reply]

对本文发表评论





2 + 3 = ?

注意:
1、请勿单纯发表顶啊、打酱油之类无任何意义的评论,否则将被视为spam!谢谢合作!
2、但欢迎你留下对本文的看法或技术上的任何疑问,我会及时回复你。