`github地址改为了 https://github.com/dani-garcia/vaultwarden
Note: This project was known as Bitwarden_RS and has been renamed to separate itself from the official Bitwarden server in the hopes of avoiding confusion and trademark/branding issues.
224 / 5000
翻译结果
注意:该项目被称为Bitwarden_RS,并已重命名为与官方的Bitwarden服务器分离,以免造成混淆和商标/品牌问题。
需要更新下镜像,以前为地址为bitwardenrs/server,现在为vaultwarden/server`
更多配置可看官方的WIKI:
https://github.com/dani-garcia/vaultwarden/wiki
安装 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 5122:80 bitwardenrs/server:latest
自定义参数运行
自定义一些参数,加入 HTTPS 支持等。当然,也可以使用 Nginx 反代,如果有 web 环境,建议采用 Nginx 反代的方式加入 HTTPS 支持。
无 Web 服务器
# 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_FILE
、LOG_LEVEL
、EXTENDED_LOGGING
:日志保存文件路径以及日志等级定义
DATA_FOLDER
:docker容器数据保存文件夹(默认为 /data),除了定义这个文件夹之外,还可以定义附件、图标缓存、数据库等参数
DATABASE_UR
L:数据库路径
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
有 Web 服务器
以下以 Nginx 为例,基本操作类似于上述无 Web 环境情况。
# step1-3 见 [无 Web 服务器情况]
# 4. 运行 bitwarden_rs 容器
# > -p 指定端口可自己定义,只允许本机监听
docker run -d --name bitwarden \
-e SIGNUPS_ALLOWED=false \
-e INVITATIONS_ALLOWED=false \
-e ADMIN_TOKEN=step2_generated_token \
-e DOMAIN=http://yourdomain.com \
-e LOG_FILE=/path/to/log \
-e LOG_LEVEL=warn -e EXTENDED_LOGGING=true \
-e DATA_FOLDER=/path/to/data/folder \
-p 127.0.0.1:12580:80 \
-v /path/to/host/data/folder:/path/to/docker/data/folder \
bitwardenrs/server:latest
# 5. 创建 nginx 配置文件 yourdomain.com.conf,内容示例如下,注意根据自己情况进行修改
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /path/to/ssl/cert; # 注意修改
ssl_certificate_key /path/to/ssl/key; # 注意修改
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
server_name yourdomain.com; # 注意修改
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:12580; # 和 step4 中指定端口一致
}
}
容器操作命令
# $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 插件的吧,其他的用法都是类似的。
- 打开插件,点击右上角设置按钮
填入 bitwarden 的域名
- 保存后正常登录即可。
后话
弄好之后稍微体验了下,直接从 Bitwarden 官方导出然后导入到自己服务端,整个过程还是很容易的。目前体验下来来说感觉还是非常舒服的,主要说几点吧:
- 这个 docker 镜像对于服务器的要求不高,个人使用的话,1 CPU 512MB RAM 应该就可以跑了,又可以充分利用自己的服务器了;
- 我能用到的功能都有了,除了最基本的密码保存、上传附件等,官方需要付费使用的 TOTP 、密码检测等功能也都是可以直接使用的;
- 数据在自己手里,可能会感觉会更安全点吧。