一世贪欢的私域

一世贪欢的私域

vaultwarden 安装

2025-09-30
vaultwarden 安装

vaultwarden 安装

一、介绍

Bitwarden 是一个开源的密码管理软件,可以由用户自行部署使用。不过官方的服务占用空间大(使用MSSQL数据库),部署复杂,所以有开源的第三方,使用 Rust 编写的项目,bitwarden_rs ,后来改名为 vaultwarden

Bitwarden Github仓库(17.3K Star)

Bitwarden 官方部署文档

Vaultwarden Github仓库(49.7K Star)

默认的 vaultwarden 镜像使用sqlite 作为后端的数据库存储,自己并不喜欢,换成了 postgres 数据库。

二、Docker部署

自己现在钟爱 docker-compose 来部署,挂载出关键数据,定期备份到腾讯云对象存储,很是方便。

即使遇到迁移服务器,也只需要下载解压,然后重新up 就可重新恢复,添加反向代理即可。

2.1 配置镜像源

境内机器需要配置镜像源

vim /etc/docker/daemon.json 
{
    "registry-mirrors": [
        "https://docker.1panel.live"
    ]
}
systemctl daemon-reload
systemctl restart docker

2.2 Docker部署

mkdir /opt/selfhost/vaultwarden
cd /opt/selfhost/vaultwarden
cat > docker-compose.yaml
version: "3.8"
services:
  db:
    image: postgres:15-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: vaultwarden
      POSTGRES_PASSWORD: yourStrongPass
      POSTGRES_DB: vaultwarden
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

  vaultwarden:
    image: vaultwarden/server:1.34.3
    depends_on:
      - db
    restart: unless-stopped
    environment:
      DATABASE_URL: "postgres://vaultwarden:yourStrongPass@db:5432/vaultwarden"
      DOMAIN: "https://你的域名"
      ADMIN_TOKEN: 管理员后台密码
    ports:
      - "10086:80"
    volumes:
      - ./vw-data:/data

启动

docker compose up -d

2.3 设置反向代理

  • nginx

    server {
        listen 80;
        server_name vault.example.com;
    
        # Vaultwarden 反代
        location / {
            proxy_pass http://127.0.0.1:10086;
            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;
        }
    
        # WebSocket 支持(用于实时通知)
        location /notifications/hub {
            proxy_pass http://127.0.0.1:10086;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    
        location /notifications/hub/negotiate {
            proxy_pass http://127.0.0.1:10086;
        }
    }
    
    

    使用acme.sh 一键签发部署SSL证书

    • 安装
    curl https://get.acme.sh | sh -s email=my@example.com
    
    • nginx签发
    acme.sh --issue --nginx -d example.com -d www.example.com -d cp.example.com
    
  • nginx proxy manager (漏洞太多,不安全)

  • caddy,配置简单,自动部署SSL证书

    app.example.com {
        reverse_proxy localhost:10086
    }
    
  • cloudflare tunnel**【推荐】**

    • 免证书配置
    • 不暴露源站IP、端口
    • 自动绕过备案

    image-20251011130917119

三、配置

3.1 翻译

管理界面默认是英文的,需要翻译成中文。

英文管理后台

mkdir -p /opt/selfhost/vaultwarden/vw-data/templates

下载语言包,参考资料

cd ~
git clone https://github.com/wcjxixi/vaultwarden-lang-zhcn
cp -r ~/vaultwarden-lang-zhcn/admin /opt/selfhost/vaultwarden/vw-data/templates
cp -r ~/vaultwarden-lang-zhcn/email\ -\ v1.32.4/ /opt/selfhost/vaultwarden/vw-data/templates
mv /opt/selfhost/vaultwarden/vw-data/templates/email\ -\ v1.32.4/ /opt/selfhost/vaultwarden/vw-data/templates/email

重启vaultwarden

cd /opt/selfhost/vaultwarden
docker compose down
docker compose up -d

中文管理后台

3.2 SMTP邮件服务

添加环境变量

ADMIN_TOKEN

进入/admin 后台后设置 SMTP 即可。

3.3 获取真实IP

进入 /admin 后台设置,Client IP header

X-Forwarded-For

3.4 自定义样式

官方文档,新版本已经支持自定义css。

mkdir -p /opt/selfhost/vaultwarden/vw-data/templates/scss

编辑要插入的 css 文件。

vim /opt/selfhost/vaultwarden/vw-data/templates/scss/user.vaultwarden.scss.hbs
/* 页脚文字 */
footer::after {
  content: "Power by 浅空";
  display: block;
  text-align: center;
  margin-top: 10px;
  font-size: 12px;
  color: #007bff;
}

3.5 备份

3-2-1 备份策略

  • 3份数据
  • 2种介质
  • 1份异地备案

/opt/selfhost/backup_vaultwarden.sh

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/opt/selfhost/vaultwarden"
LOG_FILE="/var/log/vaultwarden_backup.log"

echo "[$(date)] Starting backup..." >> $LOG_FILE

# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE

# 备份网站文件
tar -czf $BACKUP_DIR/$DATE/vaultwarden_files.tar.gz /opt/selfhost/vaultwarden >> $LOG_FILE 2>&1


# 保留最近7天备份
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \; >> $LOG_FILE 2>&1

echo "[$(date)] Backup completed" >> $LOG_FILE
corntab -e
* 1 * * * /opt/selfhost/backup_vaultwarden.sh

四、封面图

封面图