Featured image of post Vaultwarden (Bitwarden) 个人私有化部署指南

Vaultwarden (Bitwarden) 个人私有化部署指南

Vaultwarden 部署

引言

Bitwarden 是一款优秀的开源密码管理器,但其官方镜像对于个人服务器(尤其是内存有限的 VPS)来说过于沉重。Vaultwarden 以 Rust 重新编写了后端,完美兼容官方客户端的同时极大降低了资源开销。

本文记录了我在私有环境下部署 Vaultwarden 的全过程,包含 Docker Compose 配置、环境变量安全加固、以及配合 Lucky/Nginx 实现反向代理与 WebSocket 同步的关键步骤。

1. 部署环境准备

目录结构推荐:
在 NAS 或服务器上创建如下目录结构:

1
2
3
4
/volume1/docker/vaultwarden/
├── docker-compose.yml      # 核心服务配置
├── .env                    # 环境变量配置文件
└── vw-data/                # 数据持久化目录 (自动生成)

2. 核心配置文件

(1) docker-compose.yml

将以下内容保存为 docker-compose.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    # 读取同级目录下的 .env 文件
    env_file:
      - .env
    volumes:
      # 数据映射: 左边是宿主机路径,右边是容器内路径
      - ./vw-data:/data
    ports:
      # 端口映射: 宿主机端口:容器端口
      # ⚠️ 注意:这里使用 8009 避免与其他服务(如 8008)冲突
      - 8009:80
      # (可选) WebSocket 端口,通常走 80 即可,保留以备调试
      - 3012:3012

(2) .env 环境变量

将以下内容保存为 .env这是控制安全性和功能的关键文件。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# ==============================
# 基础配置
# ==============================

# 你的反代域名 (⚠️ 必须以 https:// 开头)
# 影响邮件邀请链接和 WebAuthn 等安全功能
DOMAIN=[https://pass.yourdomain.com](https://pass.yourdomain.com)

# 开启 WebSocket (强烈建议开启,保证多端同步及时性)
WEBSOCKET_ENABLED=true

# ==============================
# 安全限制 (重中之重)
# ==============================
ORG_CREATION_USERS=youremail@mail.com #此为仅允许这个邮箱注册账号
# 允许注册开关
# 流程: 首次设为 true -> 注册管理员账号 -> 改为 false -> 重启容器
SIGNUPS_ALLOWED=false

# 邀请限制
# false: 禁止普通用户邀请其他人
INVITATIONS_ALLOWED=false

# 密码提示
# false: 登录失败时不显示密码提示,防止社工攻击
SHOW_PASSWORD_HINT=false

# 管理后台令牌 (可选)
# 开启后访问 /admin 需要此 Token。建议用 `openssl rand -base64 48` 生成
# 如不需要管理后台,建议保持注释状态
# ADMIN_TOKEN=这里填入只有你知道的超长复杂字符串

# ==============================
# 隐私保护
# ==============================

# 图标抓取服务
# internal: 由 NAS 内网抓取,不经过 Bitwarden 官方服务器,保护浏览隐私
ICON_SERVICE=internal

# ==============================
# 日志与系统
# ==============================
TZ=Asia/Shanghai
LOG_LEVEL=warn

!!!注意:你部署的Vaultwarden的前端一定要有https,不然前端界面会加载不出来,所以一定要套一个反代访问,并在env文件中做好相应的配置


3. 反向代理配置 (Lucky / Nginx)

使用你喜欢的反代软件,在这里推荐一个好用简单的:Lucky大吉。

为了让 Vaultwarden 正常工作(特别是 HTTPS 和 WebSocket),反代配置必须包含以下要点:

关键 Header 设置

在 Lucky 的 “万能反代 / 自定义 Header” 或 Nginx 配置中,确保传递以下头信息:

  1. X-Forwarded-Proto: https (告诉容器它是通过 HTTPS 访问的)
  2. Upgrade: $http_upgrade (WebSocket 必需)
  3. Connection: "upgrade" (WebSocket 必需)

隐藏登录页 (防搜索引擎收录)

响应头 (Response Header) 中添加以下内容,防止 Google/Baidu 收录你的私有库:

  • Header: X-Robots-Tag
  • Value: noindex, nofollow, noarchive

4. 常用维护命令

启动/更新配置 (修改 .env 后必须执行)

1
docker-compose up -d

停止服务

1
docker-compose down

查看日志 (排查启动报错)

1
docker-compose logs -f --tail=100

更新 Vaultwarden 版本

1
2
docker-compose pull
docker-compose up -d

5. 数据备份策略 (保命操作)

Vaultwarden 的所有数据(账号、密码、密钥)都存储在 vw-data 目录中。
只要备份了这个文件夹,就可以在任何机器上恢复。

简易备份脚本示例:

1
2
# 建议加入 Crontab 定时任务
tar -czvf /你的备份盘/vw-backup-$(date +%F).tar.gz /volume1/docker/vaultwarden/vw-data

Licensed under CC BY-NC-SA 4.0
最后更新于 Jan 07, 2026 11:56 +0800
使用 Hugo 构建
主题 StackJimmy 设计