Vaultwarden

junlan
8
2025-02-28

一、前言

1. 官网

1.1 vaultwarden

https://github.com/dani-garcia/vaultwarden

https://github.com/wcjxixi/Vaultwarden-Wiki-Chn

https://hub.docker.com/r/vaultwarden/server

https://rs.ppgg.in/ # Vaultwarden Wiki 中文版

https://geekdaxue.co/read/Vaultwarden-Wiki-CN/README.md # Vaultwarden Wiki 中文版

https://bitwarden.com/download/ # 客户端下载地址

1.2 biwarden

https://bitwarden.com
https://github.com/bitwarden

https://github.com/bitwarden/server

2. Vaultwarden 是什么

2021-04-27:从 v1.21.0 开始,bitwarden_rs 项目更名为 Vaultwarden。参阅 #1642 了解更多说明。

这里是对官方 Vaultwarden(以前叫 bitwarden_rs)Wiki 的中文翻译。

Vaultwarden 是一个用于本地搭建 Bitwarden 服务器的第三方 Docker 项目。仅在部署的时候使用 Vaultwarden 镜像,桌面端、移动端、浏览器扩展等客户端均使用官方 Bitwarden 客户端。

Vaultwarden 很轻量,对于不希望使用官方的占用大量资源的自托管部署而言,它是理想的选择。

3. Vaultwarden 与 Bitwarden 的区别

  • 除不支持 Bitwarden 官方企业版的部分功能(详情见这里)外,其他大部分功能均免费支持。并跟随官方版本保持及时更新。

  • Vaultwarden 比 Bitwarden 官方版更轻量。官方版使用 .Net 开发,使用 MSSQL 数据库,要求至少 2GB 内存;Vaultwarden 使用 Rust 编写,改用 SQLite 数据库(现在也支持 MySQL 和 PostgreSQL),运行时只需要 10M 内存,可以说对硬件基本没有要求。

二、安装部署

1. 安装 Docker

curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo && yum install docker-ce -y && docker -v && systemctl enable --now docker

2. 新建存放 vaultwarden 数据的目录

mkdir -p /vaultwarden/nginx && cd /vaultwarden

3. 编写 compose.yaml 文件

[root@localhost vaultwarden]# cat <<'EOF' > compose.yaml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
          #DOMAIN: "https://vw.snimay.com"
       #- ADMIN_TOKEN=hiyXZUmBwJ4sK5EHdvEnEO+2UGGwhMPN3MoC9ZiG5EklcI5epC159/NdxHNoNqZB  # admin页管理密码
        - DOMAIN=https://vw.snimay.com
        - TZ=Asia/Shanghai        # 设置时区
        # 设置邮箱功能
        - SMTP_HOST=smtphz.qiye.163.com    # 填写发送邮件服务器的地址
        - SMTP_FROM=junlan.pan@snimay.com
        - SMTP_PORT=465
        - SMTP_SSL=false
        - SMTP_EXPLICIT_TLS=true
        - SMTP_USERNAME=junlan.pan@snimay.com
        - SMTP_PASSWORD=j3w8FxzjBDrZ1111   # 客户端授权码
    volumes:
      - ./vw-data:/data/
    #ports:
     # - 8080:80

  vwnginx:
    image: nginx:1.27.4
    restart: always
    volumes:
      - ./vw-nginx:/etc/nginx/conf.d/
    ports:
      - "80:80"
      - "443:443"
EOF

4. 编写 nginx 的配置文件

[root@localhost vaultwarden]# cat <<'EOF' > nginx/default.conf
server {
    listen 80;
    server_name vw.snimay.com;

    # 将 HTTP 请求重定向到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name vw.snimay.com;

    # 隐藏版本号
    server_tokens off;

    # 设置 SSL 证书和私钥
    ssl_certificate /etc/nginx/conf.d/snimay.com.pem;  # 证书文件
    ssl_certificate_key /etc/nginx/conf.d/snimay.com.key;   # 私钥文件

    # 其他 SSL 配置
    ssl_protocols TLSv1.2 TLSv1.3;  # 启用现代的 TLS 协议
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256';
    ssl_prefer_server_ciphers on;

    # 设置其他安全头(可选)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # 配置反向代理到内部服务
    location / {
    proxy_pass http://vaultwarden;
    proxy_set_header Host $host;  # 设置代理请求的 Host 头为客户端原始请求的 Host 头(如,如果客户端访问 http://example.com,则 Host 头的值为 example.com)
    proxy_set_header X-Real-IP $remote_addr;  # 通过 X-Real-IP 头获取客户端的真实 IP 地址,而不是 Nginx 服务器的 IP 地址
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 用于记录客户端的原始 IP 地址和经过的所有代理服务器 IP 地址
    proxy_set_header X-Forwarded-Proto $scheme;  # 可以通过 X-Forwarded-Proto 头判断客户端使用了 HTTPS 还是 HTTP 协议。
    }
}
EOF

5. 启动容器

docker compose up -d

5.1 查看 vaultwarden 的版本

# 查看 vaultwarden 容器的日志文件能看到版本信息
[root@jump vaultwarden]# docker logs vaultwarden

/--------------------------------------------------------------------\
|                        Starting Vaultwarden                        |
|                           Version 1.33.2                           |
|--------------------------------------------------------------------|
| This is an *unofficial* Bitwarden implementation, DO NOT use the   |
| official channels to report bugs/features, regardless of client.   |
| Send usage/configuration questions or feature requests to:         |
|   https://github.com/dani-garcia/vaultwarden/discussions or        |
|   https://vaultwarden.discourse.group/                             |
| Report suspected bugs/issues in the software itself at:            |
|   https://github.com/dani-garcia/vaultwarden/issues/new            |
\--------------------------------------------------------------------/

[2025-02-27 05:40:18.973][vaultwarden::auth][INFO] Private key 'data/rsa_key.pem' created correctly
[2025-02-27 05:40:19.136][start][INFO] Rocket has launched from http://0.0.0.0:80

6. Web 访问登录

https://vw.snimay.com/

账号:junlan.pan@snimay.com

密码:Snimay@1111!

975082783@qq.com/BI#D%UQ41111

image-20250227172310929

image-20250227162654492

6. 安装/设置 Bitwarden 插件

6.1 火狐浏览器

https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/

image-20250227163117391

image-20250227171954814

image-20250227193952377

image-20250227194011574

6.2 谷歌浏览器

https://crxdl.com/ 下载谷歌浏览器插件第三方网站

Bitwarden谷歌浏览器插件

三、额外设置补充

更多环境变量配置

https://github.com/dani-garcia/vaultwarden/blob/main/.env.template

https://rs.ppgg.in/configuration/enabling-admin-page

1. 启用管理页面

该页面允许服务器管理员查看并删除所有已注册的用户。它也允许邀请新用户,即使禁用了注册功能。

要启用管理页面,您需要设置一组身份验证令牌。该令牌可以是任何字符,但建议使用随机生成的长字符串,比如运行 openssl rand -base64 48 命令生成。

# ADMIN_TOKEN= token的值
-e ADMIN_TOKEN=some_random_token_as_per_above_explanation

# compose.yaml文件配置
  environment:
    ADMIN_TOKEN: hiyXZUmBwJ4sK5EHdvEnEO+2UGGwhMPN3MoC9ZiG5EklcI5epC159/NdxHNoNqZB

此后,管理页面将在 /admin 子目录中可用。

在管理页面首次保存设置时,将自动在 DATA_FOLDER 文件夹中生成 config.json 文件。该文件中的值优先于环境变量值。

注意:更改 ADMIN_TOKEN 后,当前已登录的任何管理员仍可以使用他们现有的登录会话直到到期。管理会话生命周期是可配置的,默认为 20 分钟。

# 完整配置如下
[root@jump vaultwarden]# cat compose.yaml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vw.snimay.com"
      ADMIN_TOKEN: "hiyXZUmBwJ4sK5EHdvEnEO+2UGGwhMPN3MoC9ZiG5EklcI5epC159/NdxHNoNqZB"  # 启动admin管理界面
    volumes:
      - ./vw-data:/data/
    # ports:
    # - 8080:80

  vwnginx:
    image: nginx:1.27.4
    restart: always
    volumes:
      - ./vw-nginx:/etc/nginx/conf.d/
    ports:
      - "80:80"
      - "443:443"

# 重新启动下容器即可
[root@jump vaultwarden]# docker compose down && docker compose up

# 访问界面
https://vw.snimay.com/admin

1.1 查看已经注册的账号信息

image-20250227215220514

1.2 查看版本信息

image-20250227215148005

2. 启用两步认证(Two-step Login Methods)恢复代码

您的 Bitwarden 两步登录恢复代码:
	PDTZ B5OH WU3T K2HK 7AJ2 J24S NAQZ 1111

Sat Mar 01 2025 22:20:45 GMT+0800 (中国标准时间)