MENU

Bitwarden 服务端搭建记录

November 24, 2019 • Read: 30 • 笔记•记录

本文若有失效或者错误内容请留言或者通过其他方式联系我,尽可能及时更新。

欢迎关注不怎么更新的 TG 频道


前言

之前在文章写在使用 Bitwarden 俩月后分享了自己使用 Bitwarden 的体验,也说到了 Bitwarden 可以搭建在自己的服务器上,但是由于官方的 docker 对于服务器的要求比较高,所以一直没有尝试。

不过评论区中有朋友提到了 bitwarden_rs,非官方的镜像,更加的轻量,所以决定试一试。本文为在 VPS 上的搭建记录,更多内容可以参考 wiki

准备工作

  • VPS (本文 VPS 系统为 Debian9)
  • 一个域名且解析到了 VPS 的 IP 地址

安装 Docker

# 1. 执行官方的安装脚本
wget -qO- get.docker.com | bash

# 2. 检查安装结果
docker version

# 3. 启动 Docker
systemctl start docker

# 4. 查看 Docker 启动状态(绿色 active)
systemctl status docker

# 5. 允许 Docker 自启动
systemctl enable docker

安装 Bitwarden

快速开始

不进行自定义,不需要域名,快速搭建一个 Bitwarden 后端

# 1. 拉取 bitwarden_rs 镜像
docker pull bitwardenrs/server:latest

# 2. 运行容器
docker run -d --name bitwarden -v /bw-data/:/data/ -p 80:80 bitwardenrs/server:latest

自定义参数运行

自定义一些参数,加入 HTTPS 支持等。

# 1. 拉取 bitwarden_rs 镜像
docker pull bitwardenrs/server:latest

# 2. 生成一个 admin 用户管理页面的 token
openssl rand -base64 48

# 3. 生成 ssl 证书,以启用 https,推荐使用 acme.sh 免费申请及自动续签
# > 3.1 下载并执行 acme.sh 脚本
curl https://get.acme.sh | sh
# > 3.2 生成证书,这只是一种方式,其他方式可以自行搜索
apt install socat # debian 系为例
acme.sh  --issue -d yourdomain.com  --standalone
# > 3.3 将生成的证书拷贝安装到指定文件夹
acme.sh  --installcert  -d  yourdomain.com   \
        --key-file   /path/to/yourdomain.com.key \
        --fullchain-file /path/to/fullchain.cer \

# 4. 运行 bitwarden_rs 容器
docker run -d --name bitwarden \
    -e SIGNUPS_ALLOWED=false \
    -e INVITATIONS_ALLOWED=false \
    -e ADMIN_TOKEN=step2_generated_token \
    -e ROCKET_TLS='{certs="/path/to/docker/ssl/fullchain.cer",key="/path/to/docker/ssl/yourdomain.com.key"}' \
    -e DOMAIN=https://yourdomain.com \
    -e LOG_FILE=/path/to/log \
    -e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \
    -e DATA_FOLDER=/path/to/data/folder \
    -p 443:80 \
    -v /path/to/host/ssl/:/path/to/docker/ssl/
    -v /path/to/host/data/folder:/path/to/docker/data/folder \
    bitwardenrs/server:latest
    

参数解释

  • SIGNUP_ALLOWED:是否允许注册
  • INVITATIONS_ALLOWED: 是否允许组织邀请注册
  • ADMIN_TOKEN:用户管理界面 (/admin),可用于删除用户及邀请用户注册
  • ROCKET_TLS:ssl 证书信息,同时需要配置-v /path/to/host/ssl/:/path/to/docker/ssl/卷,前者为宿主机ssl证书的位置,后者为容器证书位置
  • DOMAIN:域名
  • LOG_FILELOG_LEVELEXTENDED_LOGGING:日志保存文件路径以及日志等级定义
  • DATA_FOLDER:docker容器数据保存文件夹(默认为 /data),除了定义这个文件夹之外,还可以定义附件、图标缓存、数据库等参数

    • DATABASE_URL:数据库路径
    • ATTACHMENT_FOLDER:附件路径
    • ICON_CACHE_FOLDER:图标缓存路径

以上是我自己觉得需要的一些配置,更多参数可参考官方 Wiki。

示例

docker run -d --name bitwarden -e SIGNUPS_ALLOWED=false -e INVITATIONS_ALLOWED=false -e ADMIN_TOKEN=bTVsf7Hj99HPxECRPOL9U70bP0Iy5lXmbbJVP2tvwDszB8CClv+MD3TT6mSJTa4L -e ROCKET_TLS='{certs="/ssl/bw.withdewhua.space/fullchain.cer",key="/ssl/bw.withdewhua.space/bw.withdewhua.space.key"}' -e DOMAIN=https://bw.withdewhua.space -e LOG_FILE=/data/bitwarden.warn.log -e LOG_LEVEL=warn -e EXTENDED_LOGGING=true -p 443:80 -v /bw-data/:/data/ -v /usr/local/nginx/conf/ssl/:/ssl/ bitwardenrs/server:latest

示例站点https://bw.withdewhua.space:8443/#/ (仅用于展示,可注册体验,随时可能删除)

容器操作命令

# $name 为 docker run 中定义的 name
# 启动容器
docker start $name

# 停止容器
docker stop $name

# 删除容器
docker rm $name

# 查看运行容器
docker ps -as

升级 Bitwarden 镜像

# 1. 重新拉取镜像
docker pull bitwardenrs/server:latest

# 2. 停止、删除原容器
docker stop bitwarden
docker rm bitwarden

# 3. 重新运行 docker run 命令

# 4. 查看镜像文件
docker image ls

# 5. 删除原镜像文件, $ID 在 step4 中可以看到
docker image rm $ID

客户端使用方法

使用方法就讲下Chrome插件的吧,其他的用法都是类似的。

  1. 打开插件,点击右上角设置按钮
    bitwarden-chrome-extension
  2. 填入 bitwarden 的域名
    server-url
  3. 保存后正常登录即可。

后话

弄好之后稍微体验了下,直接从 Bitwarden 官方导出然后导入到自己服务端,整个过程还是很容易的。目前体验下来来说感觉还是非常舒服的,主要说几点吧:

  • 这个docker镜像对于服务器的要求不高,个人使用的话,1 CPU 512MB RAM 应该就可以跑了,又可以充分利用自己的服务器了;
  • 我能用到的功能都有了,除了最基本的密码保存、上传附件等,官方需要付费使用的 TOTP 、密码检测等功能也都是可以直接使用的;
  • 数据在自己手里,可能会感觉会更安全点吧。

目前我的 Bitwarden 会员还没到期,暂时不转移到自己服务器上了,等过期了再说吧。


> 本文链接:https://10101.io/2019/11/24/self-hosted-bitwarden
> 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可,转载请注明出处。

Last Modified: December 1, 2019
Archives QR Code Tip
QR Code for this page
Tipping QR Code
Leave a Comment

6 Comments
  1. 那你服务器的安全可要做好

  2. 非技术的路过。

  3. hi。 博主。在ios上,之前没有保存过的网站,登录以后为啥不会出现小横条提示保存账号密码?PC上的谷歌插件上我看可以提示小横条。

    1. @IcharleiOS 上不会弹出这样的小横条,android上可以。
      iOS上我都是通过分享然后选择bitwarden,直接通过bitwarden先进行账号密码的填写,然后再回到网站上注册,注册的时候就可以直接填充了

    2. @WithdewHua1password等其它密码管理器也是不会有这个“弹出小横条”?(刚入手密码管理器

    3. @Icharle上面我说的不行指的是bitwarden,至于别的行不行我忘了,时间有点长了,因为我之前也不怎么用iOS,没关注到这一点。
      而且bitwarden一开始的逻辑就是先在其上创建记录后进行注册填充。