环境搭建

CentOS 7(64-bit),内核版本不能低于 3.10

1
uname -r

官方脚本

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装:

1
2
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun --version

手动安装

卸载旧版本

较旧版本的 Docker 被称为 docker 或 docker-engine;如果已安装这些,请卸载它们以及相关的依赖项。

1
2
3
4
5
6
7
8
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

安装仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 使用官方源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 使用官方源(速度较快,更新可能存在延迟)
# 阿里云
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 清华大学源
yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 开启测试版本 Docker CE
yum-config-manager --enable docker-ce-test
# 开启每日构建版本 Docker CE
yum-config-manager --enable docker-ce-nightly

安装 Docker-CE

1
2
3
4
5
6
7
8
9
10
yum makecache
yum list docker-ce --showduplicates | sort -r
# 按需使用 --nobest 参数跳过无法安装的包
yum install -y docker-ce-<VERSION> \
docker-ce-cli-<VERSION> \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
systemctl enable docker
systemctl start docker

二进制安装

二进制包

参数优化

如果在 CentOS 使用 Docker CE 看到下面的这些警告信息:

WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

请添加内核配置参数以启用这些功能。

1
2
3
4
5
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

参考文档

应用部署

快速部署

1
2
docker pull bitwardenrs/server:latest
docker run -d --name bitwarden -v /bw-data/:/data/ -p 6666:80 bitwardenrs/server:latest

官方提供部署脚本

1
2
3
4
curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh \
&& chmod +x bitwarden.sh
./bitwarden.sh install
./bitwarden.sh start

自定义部署

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#拉取 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

参数解释:

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

容器操作

1
2
3
4
5
6
7
8
9
#$name 为 docker run 中定义的 name
#启动容器
docker start $name
#停止容器
docker stop $name
#删除容器
docker rm $name
#查看运行容器
docker ps -as

升级镜像

1
2
3
4
5
6
7
8
9
10
#重新拉取镜像
docker pull bitwardenrs/server:latest
#停止、删除原容器
docker stop bitwarden
docker rm bitwarden
#重新运行 docker run 命令
#查看镜像文件
docker image ls
#删除原镜像文件, $ID 在 step4 中可以看到
docker image rm $ID

Compose 部署

1
2
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

自行选择安装目录用于存储数据,如安装到 /home/bitwarden
cd /home && mkdir bitwarden && cd bitwarden
准备一个配置文件 config.env
cat >> config.env << EOF
写入:

1
2
3
4
5
6
7
8
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

准备服务描述文件 docker-compose.yml:
cat >> docker-compose.yml << EOF
写入:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

文件说明:
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
设置开机启动
编辑 rc.local文件:vi /etc/rc.d/rc.local,在最后加上:

1
2
/usr/local/bin/docker-compose -f
/usr/local/bitwarden/docker-compose.yml up -d

bitwarden 搭建完成,访问 https://你的域名/admin 输入上述配置文件的管理密码,可以进去管理面板;修改配置,需要重新启动容器以便生效:docker-compose down && docker-compose up -d

开始体验

数据迁移

网页访问搭建号的账号注册账号(如果是个人使用注册完以后将上述 SIGNUPS_ALLOWED=true字段修改为 SIGNUPS_ALLOWED=false 然后重启容器),于此同时登录 LastPass 导出密码(虽说需要输入主密码,但是导出的文件里的密码居然是明文的):

切回 Bitwarden 页面,点击工具->导入数据;选择 LassPass,再见上述步骤得到的内容直接复制粘贴到第二个红框中或者选择你得到的 csv 文件。

客户端使用

市面商所有平台都可以使用,详情见官方下载页面
PS.Chromium 版的 Microsoft Edge 扩展链接没有列出:Microsoft Store,装好以后点击设置,输入自定义的域名,其他选项按实际情况填写。