bitwarden开心版搭建 作者: morningp 时间: 2021-03-04 分类: 技术笔记,建站相关 bitwarden是一个开源的密码管理器,官网在[这里][1]。 2023-03-06更新: bitwarden-rs已更名为vaultwarden,其它配置什么的都没有变化,还是会继续更新,详见[这里](https://github.com/dani-garcia/vaultwarden/discussions/1642 "这里") 那么其实更新的话和文内的更新内容没有太多的变化,只需要将`#docker pull bitwardenrs/server:latest`改为`#docker pull vaultwarden/server:latest`就可以了,具体的升级过程还请看官方给出的链接。 由于最近重新装了系统才发现在登录新设备的时候一直失败报错cannot read properties of null(reading 'iterations'),搜了一下发现是版本问题,遂去服务器上更新(期间还因为丢了私钥和服务商扯皮了好久==),结果更新完了还是不行,搜索才发现是改名了。~~顺便说下那个报错应该就是版本问题,bitwatden在2022年10月左右弃用了之前的API所以导致客户端无法登录。~~ ------------ 官方网站上的可以直接使用,当然由于是开源项目,所以官方也提供了docker镜像可以部署在自己的服务器上,但是由于官方提供的docker镜像是基于.net构建并且使用了mssql,对于服务器的要求较高,这里我们选择基于rust的另一个开源项目:bitwarden-rs,降低了对服务器的要求,也可以免费使用官方的付费功能。 1. ##首先安装docker 如果你以前安装过旧版本的docker,需要先卸载: `#apt remove --purge docker docker-engine docker.io containerd runc` 卸载后就可以重新安装了,先更新一下软件源: `#apt update` 然后安装依赖包: `#apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common` 添加Docker 的官方 GPG 密钥: `#curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -` 添加后验证一下: `apt-key fingerprint 0EBFCD88` 如果有显示指纹密钥,就说明安装成功了。 接下来直接设置成stable的仓库: `#add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian $(lsb_release -cs) stable"` 然后再更新一下源,然后安装docker: `#apt install docker-ce docker-ce-cli containerd.io` 验证一下: `#docker run hello-world` 到此为止docker就安装好了,接下来就可以开始设置bitwarden了。 2. ##安装bitwarden_rs 安装bitwarden_rs很简单,只需要一条命令就可以了: `#docker pull bitwardenrs/server:latest` 启动的话,只需要在终端输入: ``` #docker run -d --name bitwarden \ -e SIGNUPS_ALLOWED=true \ #是否允许注册 -e WEBSOCKET_ENABLED=true \ #是否开启websocket -e LOG_FILE=/data/bitwarden.log \ #指定日志记录位置 -p 8080:80 \ #将docker容器的80端口绑定到本机的8080端口 -p 3012:3012 \ #将docker的3012端口绑定到本机的3012端口 -v /bw-data/:/data/ \ #将docker的/data/目录连接到本机的/bw-data/目录 bitwardenrs/server:latest ``` 升级时,只需要删掉旧的镜像,再下载新的镜像就可以了: ``` #docker pull bitwardenrs/server:latest #拉取最新镜像 #docker stop bitwarden #停止旧的镜像服务 #docker rm bitwarden #删除旧的镜像 #docker run -d --name bitwarden \ #启动新镜像 -e SIGNUPS_ALLOWED=true \ -e WEBSOCKET_ENABLED=true \ -e LOG_FILE=/data/bitwarden.log \ -p 8080:80 \ -p 3012:3012 \ -v /bw-data/:/data/ \ bitwardenrs/server:latest ``` 为了防止升级时出现问题或者平时手滑,可以备份一下bitwarden的数据库,bitwarden_rs采用的数据库是sqlite3,是一个轻量数据库,备份命令也很简单: `sqlite3 /bw-data/db.sqlite3 ".backup '/backup/backup.sqlite3'"` 最好将这条语句写成cron定时任务,定期执行备份,但是要记住cron是没有预定义环境变量的,要么先source一下bashrc,要么写成绝对路径。 恢复时只需要在启动参数里指定数据文件即可: `-e DATABASE_URL=/backup/backup.sqlite3` 当然将数据库重写替换也是可以的。 3. ##配置nignx 接下来可以配置一下nginx,虽然bitwarden_rs项目推荐caddy,但由于我个人比较吸管nginx,再加上我的机器上已经使用nginx配置了其它的一些网站,所以希望通过nginx来统一管理。 nginx配置关键的是这里: ``` ... #前略 location / { proxy_set_header Host 'your.bitwarden.domain'; proxy_pass http://127.0.0.1:8080; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 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:8080; } ``` 接下来 `nginx -t` 一下来验证配置是不是正确,然后重启一下nginx,应该就可以看见你的bitwarden页面了。 4. ##配置docker-compose(optional) 这一部分是可选的内容。 Compose 是 docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用。 使用 compose,我们可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。 首先安装docker-compose: `#curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose` 接着授予执行权限: `#chmod +x /usr/local/bin/docker-compose` 验证一下: ```shell #docker-compose --version docker-compose version 1.25.5, build 4667896b ``` 看到类似回显就表示安装成功了,否则可能需要手动创建软连: `#ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose` 安装好docker-compose之后就可以来编写docker-compose.yaml了: ```yaml version: "3" services: bitwarden: image: bitwardenrs/server container_name: bitwardenrs restart: always ports: - "127.0.0.1:8080 : 80" #将docker容器的80端口绑定到本机的8080端口 - "127.0.0.1:3012 : 3012" #将docker的3012端口绑定到本机的3012端口 volumes: - ./bw-data:/data environment: WEBSOCKET_ENABLED: "true" #是否开启WebSocket SIGNUPS_ALLOWED: "true" #是否允许注册 WEB_VAULT_ENABLED: "true" #是否启用web客户端\ ``` 这里只是给出一个实例,更多的可以参考[官方的Wiki][2] 。 ``` docker-compose up -d #启动 docker-compose down #停止 docker-compose restart #重启 ``` [1]: https://bitwarden.com/ [2]: https://github.com/dani-garcia/bitwarden_rs/wiki 标签: none
已经更新到 vaultwarden/server 最新版本,还是报这个错:cannot read properties of null(reading ‘iterations’)
请问有解吗?
检查一下配置?涉及到bitwardenrs的地方都要换成vaultwarden,并且移除bitwardenrs的image和container。