Bitwarden 是一个跨平台的密码管理软件,类似于 1Password、EnPass、LastPass 等。Bitwarden 是免费开源的,可以将服务端部署在自己的服务器上,比如群晖,并且支持 Docker 部署。但官方的镜像要求至少 2G 以上内存,要求比较高。有人用 Rust 实现了 Bitwarden 服务器,项目叫 bitwarden_rs,并且提供了 Docker 镜像,这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。
Docker 知识
官方的命令参数对应群晖 Docker 容器中的设置):
- -v:对应容器中的 “卷”
- -p:对应容器中的 “端口”
- -e:对应容器中的 “环境”
准备
- 群晖安装 Docker。直接在群晖的套件中心搜索安装即可
- 你得有一个域名,并且有证书。因为 Bitwarden 必须 https 登录,否则不能注册(注册时不能提交)和登录(提示 Cannot read property ‘importKey’)。证书可以在阿里云免费申请,申请好以后导入群晖中即可。
- 群晖中新建 docker/bwdata 目录(这个你自己随意建)
安装 Bitwarden 服务端
群晖 Docker-注册表中搜索 mprasil/bitwarden
,下载映像
或者 SSH 里使用命令
docker pull mprasil/bitwarden:latest
启动此映像,修改相应的容器设置如下:
- 卷” 中添加 “文件夹路径”
docker/bwdata
(根据你建的文件夹的路径修改);“装载路径”/data/
(不能修改) - “端口设置”:本地端口
8080
(这个填写群晖未使用的一个端口即可);容器端口80
(此容器的端口);类型TCP


确定保存后运行本容器
群晖中设置反向代理
“控制面板”- “应用程序”- “应用程序门户”- “反向代理服务器”,新增一个反向代理服务器规则,如图:

然后去外部网络哪里把最终的8443端口开放外网访问即可
注意.这里群晖请安装好有效证书,不然GG
搭建完成
浏览器中输入 https://mydomain.com:8443 应该就可以访问了
请把 mydomain.com 改成你的群晖IP或者域名后访问
备份数据库
直接复制 docker/bwdata
文件夹下的 db.sqlite3
的几个文件即可.也可以直接复制当前文件夹
关闭注册
添加环境变量 SIGNUPS_ALLOWED
,值 false
关闭邀请
添加环境变量 INVITATIONS_ALLOWED
,值 false
升级镜像
# 登陆群晖后改为root权限
sudo root
docker pull mprasil/bitwarden:latest
升级完成后,删除旧的容器~~通过新的映像重新创建容器即可,data目录和2个端口重新设置和之前一样就行
客户端使用
客户端运行后,点击设置,添加好网页地址保存.然后登陆使用即可.


对于使用任何密码管理工具的人来说,主密码的重要性不言而喻。一旦主密码泄漏,相当于将所有帐号密码拱手相让;
一旦主密码丢失,所有数据也都化作灰灰,随风而去。
所以,请时常审视、改进你的安全策略,定期对帐号做安全审查,不定期修改并牢记主密码。
VPS用容器安装
docker run -d --name bitwarden -v /bwdata/:/data/ -p 8080:80 bitwardenrs/server:latest
# 8080:80 将本地8080端口映射到容器80端口,然后使用caddy或者nginx反向代理本机的8080端口.并且安装ssl证书
升级容器
# 升级bitwardenrs代码
docker pull bitwardenrs/server:latest
# 杀死已经运行的容器
#docker kill bitwarden
# 杀死并删除旧容器
docker rm -f bitwarden
# 然后运行上面的run代码启动
# 运行正常~建议删除旧镜像
#docker image ls
#docker image rm 旧容器编号
CENTOS 7 安装Docker
#安装Docker
yum install docker
#启动Docker服务
service docker start
#随系统自动加载
chkconfig docker on
参考链接
- 利用群晖 docker 搭建 Bitwarden 密码仓库教程
- 使用 bitwarden_rs 搭建自托管的密码服务器
- 使用群晖 Docker 搭建第三方 Bitwarden(bitwarden_rs)密码服务器
- Docker — 从入门到实践
- Docker-ce安装教程-阿里巴巴开源镜像站
docker run -d --name bitwarden --restart=always \
-e DOMAIN=https://example.com \
-e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \
-e LOG_FILE=/data/bitwarden.log \
-e RUST_BACKTRACE=1 \
-e DATABASE_URL='mysql://bitwarden:bitwarden@db:3306/bitwarden' \
-e ENABLE_DB_WAL='false' \
-e ADMIN_TOKEN=123456 \
-e WEBSOCKET_ENABLED=true \
-v /opt/docker/bw-data/:/data/ \
--network bwnet \
bitwardenrs/server:alpine