使用 bitwarden_rs 搭建自用密码服务器
使用 bitwarden_rs 搭建自用密码服务器
# 环境搭建
# 安装要求
CentOS 7(64-bit),内核版本不能低于3.10;
# 卸载旧版本
较旧版本的 Docker 被称为 docker 或 docker-engine;如果已安装这些,请卸载它们以及相关的依赖项。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2
3
4
5
6
7
8
# 安装 Docker
安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#使用国内源(阿里云)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#使用官方源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#如果需要测试版本的 Docker CE 请使用以下命令
yum-config-manager --enable docker-ce-test
#如果需要每日构建版本的 Docker CE 请使用以下命令
yum-config-manager --enable docker-ce-nightly
2
3
4
5
6
7
8
9
# 安装 Docker-CE
yum makecache #更新 yum 缓存
yum -y install docker-ce --nobest #安装 Docker-CE
systemctl enable docker #设置开机自启
systemctl start docker #启动 Docker-CE
2
3
4
使用脚本自动安装 在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装:
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
2
# 添加内核参数
如果在 CentOS 使用 Docker CE 看到下面的这些警告信息:
WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
请添加内核配置参数以启用这些功能。
tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p #重新加载 sysctl.conf
2
3
4
5
# 参考文档
菜鸟教程 (opens new window) | 从入门到实践 (opens new window) | 官方文档 (opens new window) | 阿里云镜像源站 (opens new window) | 国内仓库和镜像 (opens new window) |
---|
# 应用部署
# 快速部署
docker pull bitwardenrs/server:latest
docker run -d --name bitwarden -v /bw-data/:/data/ -p 6666:80 bitwardenrs/server:latest
2
官方提供部署脚本
curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh \
&& chmod +x bitwarden.sh
./bitwarden.sh install
./bitwarden.sh start
2
3
4
# 自定义部署
自定义一些参数,加入 HTTPS 支持等…
#拉取 bitwarden_rs 镜像
docker pull bitwardenrs/server:latest
#生成一个 admin 用户管理页面的 token
openssl rand -base64 48
#生成 ssl 证书,以启用 https,推荐使用 acme.sh 免费申请及自动续签
#运行 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="/data/v2ray.crt",key="/data/v2ray.key"}' \
-e DOMAIN=https://bwh.vioe.cc/ \
-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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
参数解释:
SIGNUP_ALLOWED:是否允许注册 INVITATIONS_ALLOWED:是否允许组织邀请注册 ADMIN_TOKEN:用户管理界面 (/admin),可用于删除用户及邀请用户注册 ROCKET_TLS:ssl 证书信息,同时需要配置 -v /path/to/host/ssl/:/path/to/docker/ssl/ 卷,前者为宿主机 ssl 证书的位置,后者为容器证书位置 DOMAIN:域名 LOG_FILE、LOG_LEVEL、EXTENDED_LOGGING:日志保存文件路径以及日志等级定义 DATA_FOLDER:docker 容器数据保存文件夹(默认为 /data),除了定义这个文件夹之外,还可以定义附件、图标缓存、数据库等参数 DATABASE_URL:数据库路径 ATTACHMENT_FOLDER:附件路径 ICON_CACHE_FOLDER:图标缓存路径
更多参数可参考官方 WiKi (opens new window)
# 容器操作
#$name 为 docker run 中定义的 name
#启动容器
docker start $name
#停止容器
docker stop $name
#删除容器
docker rm $name
#查看运行容器
docker ps -as
2
3
4
5
6
7
8
9
# 升级镜像
#重新拉取镜像
docker pull bitwardenrs/server:latest
#停止、删除原容器
docker stop bitwarden
docker rm bitwarden
#重新运行 docker run 命令
#查看镜像文件
docker image ls
#删除原镜像文件, $ID 在 step4 中可以看到
docker image rm $ID
2
3
4
5
6
7
8
9
10
# Compose 部署
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
2
自行选择安装目录用于存储数据,如安装到 /home/bitwarden
cd /home && mkdir bitwarden && cd bitwarden
准备一个配置文件 config.env
cat >> config.env << EOF
写入:
SIGNUPS_ALLOWED=true
DOMAIN=https://yourdomain.com
DATABASE_URL=/data/bitwarden.db
ROCKET_WORKERS=10
WEB_VAULT_ENABLED=true
ADMIN_TOKEN=xxxxxx
WEBSOCKET_ENABLED=true
EOF
2
3
4
5
6
7
8
准备服务描述文件 docker-compose.yml:
cat >> docker-compose.yml << EOF
写入:
version: '3'
services:
bitwarden:
image: bitwardenrs/server:latest
container_name: bitwarden
restart: always
volumes:
- ./data:/data
env_file:
- config.env
ports:
- "6666:80"
- "8888:3012"
EOF
2
3
4
5
6
7
8
9
10
11
12
13
14
15
文件说明:
bitwarden 现在是唯一一个服务; image: mprasil/bitwarden:latest 指定使用 Docker Hub 的 mprasil/bitwarden 最新镜像; volumes 中指定将容器内的 /data 目录挂载到宿主机的当前目录下的 data 目录,这样你可以在宿主机上执行数据库的备份操作; ports 指定将容器内的 80 端口映射到了宿主机的 6666 端口;
以后对 bitwarden 服务做的所有操作,都需要预先进入这两个配置文件所在的目录内。
拉取镜像:docker-compose up -d
# Nginx 配置
请查看:https://github.com/dani-garcia/bitwarden_rs/wiki/Proxy-examples (opens new window)
设置开机启动
编辑 rc.local文件:vi /etc/rc.d/rc.local
,在最后加上:
/usr/local/bin/docker-compose -f
/usr/local/bitwarden/docker-compose.yml up -d
2
bitwarden 搭建完成,访问 https://你的域名/admin (opens new window) 输入上述配置文件的管理密码,可以进去管理面板;修改配置,需要重新启动容器以便生效:docker-compose down && docker-compose up -d
# 开始体验
# 数据迁移
网页访问搭建号的账号注册账号(如果是个人使用注册完以后将上述 SIGNUPS_ALLOWED=true
字段修改为 SIGNUPS_ALLOWED=false
然后重启容器),于此同时登录 LastPass 导出密码(虽说需要输入主密码,但是导出的文件里的密码居然是明文的):
切回 Bitwarden 页面,点击工具->导入数据;选择 LassPass,再见上述步骤得到的内容直接复制粘贴到第二个红框中或者选择你得到的 csv 文件。
# 客户端使用
市面商所有平台都可以使用,详情见官方下载页面 (opens new window)
PS.Chromium 版的 Microsoft Edge 扩展链接没有列出:Microsoft Store (opens new window),装好以后点击设置,输入自定义的域名,其他选项按实际情况填写。