AI智能摘要
本文详细介绍在Linux服务器上使用Docker Compose部署Vaultwarden密码管理服务的完整流程,涵盖环境准备、HTTPS配置、安全加固、数据备份与迁移。通过Caddy自动签发SSL证书实现加密访问,设置管理员令牌、禁用公开注册、启用双因素认证,并结合UFW防火墙与Fail2ban防范暴力破解。提供定期更新与自动化备份方案,确保服务安全稳定,实现数据自主可控。
— 此摘要由AI分析文章内容生成,仅供参考。
一、环境准备
1. 服务器要求
- 系统:Ubuntu 20.04+/Debian 11+(推荐)或其他Linux发行版
- 配置:至少1核CPU、1GB内存、20GB SSD存储
- 网络:开放80/443端口(用于HTTPS),已解析域名指向服务器IP
2. 安装Docker和Docker Compose
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装Docker
sudo apt install -y docker.io docker-compose
# 启动Docker服务并设置开机自启
sudo systemctl enable --now docker
# 将当前用户添加到docker组(可选,避免每次使用sudo)
sudo usermod -aG docker $USER
newgrp docker
二、部署步骤
1. 创建工作目录
mkdir -p /opt/vaultwarden && cd /opt/vaultwarden
2. 编写Docker Compose配置文件
创建docker-compose.yml
文件:
version: '3.8'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
volumes:
- ./data:/data # 数据持久化目录
ports:
- "8080:80" # 内部HTTP端口(不直接暴露到公网)
environment:
# 基础配置
- DOMAIN=https://vault.yourdomain.com # 替换为你的域名(必须HTTPS)
- TZ=Asia/Shanghai # 时区设置
# 安全配置
- SIGNUPS_ALLOWED=false # 禁止公开注册(创建管理员后设置为false)
- ADMIN_TOKEN=$(openssl rand -base64 48) # 生成管理员令牌
- SHOW_PASSWORD_HINT=false # 禁用密码提示
# 速率限制(防暴力破解)
- LOGIN_RATELIMIT_MAX_BURST=10 # 最大登录尝试次数
- LOGIN_RATELIMIT_SECONDS=60 # 限制时间窗口(秒)
- ADMIN_RATELIMIT_MAX_BURST=5 # 管理员面板限制
- ADMIN_RATELIMIT_SECONDS=300
# 功能配置
- WEB_VAULT_ENABLED=true # 启用Web界面
- EMERGENCY_ACCESS_ALLOWED=true # 允许紧急访问
- SENDS_ALLOWED=true # 允许安全发送功能
# Caddy反向代理(自动配置HTTPS)
caddy:
image: caddy:2-alpine
container_name: caddy
restart: unless-stopped
ports:
- "80:80" # HTTP(用于Let's Encrypt验证)
- "443:443" # HTTPS
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data/caddy
depends_on:
- vaultwarden
3. 创建Caddy配置文件
在同一目录创建Caddyfile
:
# 替换为你的域名
https://vault.yourdomain.com {
# 日志配置
log {
output file /data/caddy/vaultwarden.log {
roll_size 10MB
roll_keep 10
}
}
# 自动申请SSL证书
tls your@email.com # 替换为你的邮箱(用于证书通知)
# 反向代理到Vaultwarden
reverse_proxy vaultwarden:80 {
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
}
}
4. 启动服务
# 启动容器(后台运行)
docker-compose up -d
# 查看日志(确认启动正常)
docker-compose logs -f
三、初始化配置
1. 访问Web界面
打开浏览器访问 https://vault.yourdomain.com
,使用以下步骤创建管理员账户:
- 首次访问时
SIGNUPS_ALLOWED=true
,注册第一个账户(管理员) - 登录后,修改
docker-compose.yml
中的SIGNUPS_ALLOWED=false
- 重启容器使配置生效:
docker-compose up -d
2. 访问管理员面板
通过 https://vault.yourdomain.com/admin
登录管理界面,输入之前生成的ADMIN_TOKEN
(可在容器日志中找到)。
3. 关键配置建议
- 强制2FA:在管理员面板要求所有用户启用2FA
- 设置密码策略:最小长度12位,要求包含大小写字母、数字和特殊字符
- 配置备份:定期导出密码库(Settings → Export Vault)
四、安全加固
1. 防火墙配置(UFW示例)
# 仅开放必要端口
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP(Let's Encrypt验证)
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
2. 启用Fail2ban(防暴力破解)
# 安装Fail2ban
sudo apt install -y fail2ban
# 创建配置文件
sudo tee /etc/fail2ban/jail.d/vaultwarden.conf <<EOF
[vaultwarden]
enabled = true
filter = vaultwarden
logpath = /opt/vaultwarden/data/vaultwarden.log
maxretry = 5
bantime = 3600 # 封禁1小时
findtime = 300 # 5分钟内触发
EOF
# 创建过滤规则
sudo tee /etc/fail2ban/filter.d/vaultwarden.conf <<EOF
[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>.*$
ignoreregex =
EOF
# 重启服务
sudo systemctl restart fail2ban
3. 定期更新
# 创建更新脚本
cat > /opt/vaultwarden/update.sh <<EOF
#!/bin/bash
cd /opt/vaultwarden
docker-compose pull
docker-compose up -d
echo "Vaultwarden updated at \$(date)" >> update.log
EOF
# 添加执行权限并设置定时任务
chmod +x update.sh
sudo crontab -e
# 添加:0 3 * * 0 /opt/vaultwarden/update.sh # 每周日凌晨3点更新
五、数据备份与迁移
1. 手动备份
# 压缩数据目录
tar -czf vaultwarden_backup_$(date +%Y%m%d).tar.gz /opt/vaultwarden/data
# 下载备份到本地(通过SCP)
scp user@server:/opt/vaultwarden/backup.tar.gz ./
2. 自动备份脚本
cat > /opt/vaultwarden/backup.sh <<EOF
#!/bin/bash
BACKUP_DIR=/opt/backups
mkdir -p \$BACKUP_DIR
tar -czf \$BACKUP_DIR/vaultwarden_\$(date +%Y%m%d).tar.gz /opt/vaultwarden/data
# 保留最近30天备份
find \$BACKUP_DIR -name "vaultwarden_*.tar.gz" -mtime +30 -delete
EOF
chmod +x backup.sh
sudo crontab -e
# 添加:0 2 * * * /opt/vaultwarden/backup.sh # 每天凌晨2点备份
3. 迁移步骤
- 在新服务器部署基础环境(Docker、Docker Compose)
- 复制备份文件到新服务器:
scp backup.tar.gz user@newserver:/opt/
- 解压恢复数据:
tar -xzf backup.tar.gz -C /
- 重新部署容器:
docker-compose up -d
六、常见问题解决
1. 证书申请失败
- 确保域名解析正确且服务器可被外部访问
- 检查防火墙是否放行80/443端口
- 手动验证:
curl http://vault.yourdomain.com/.well-known/acme-challenge/test
2. 管理员面板无法访问
- 检查ADMIN_TOKEN是否正确生成:
cat /opt/vaultwarden/data/config.json
- 确保DOMAIN设置为HTTPS且与访问地址一致
- 通过日志排查:
docker logs vaultwarden | grep admin
3. 客户端同步失败
- 检查服务器时间是否同步:
sudo timedatectl set-ntp true
- 验证SSL证书完整性:
openssl s_client -connect vault.yourdomain.com:443
- 客户端设置自定义服务器URL:设置 → 自托管 → 服务器URL
七、最佳实践总结
- 最小权限原则:仅开放必要端口,禁用不必要功能
- 定期审计:检查管理员日志(
/data/vaultwarden.log
) - 多层防御:结合速率限制、Fail2ban和2FA
- 灾难恢复:测试备份恢复流程,确保数据可恢复
- 安全更新:及时应用容器和系统更新
通过以上步骤,你将拥有一个安全、稳定的自托管密码管理器,功能上可媲美1Password,且完全掌控数据隐私。
评论列表 (0条):
加载更多评论 Loading...