一个极简、安全、自毁保护的密码保险箱
CmdVault 是一个前后端协同的密码管理器,数据使用 AES-256-GCM 加密存储,支持 HMAC 完整性校验、自毁保护、邮件备份恢复、PushDeer 实时推送通知。
| 特性 | 说明 |
|---|---|
| 加密存储 | AES-256-GCM + PBKDF2 密钥派生 |
| 完整性校验 | HMAC-SHA256 签名,防篡改 |
| 自毁保护 | 连续 10 次密码错误自动删除数据 |
| 邮件备份 | 第 5 次密码错误自动发送加密备份到邮箱 |
| 推送通知 | PushDeer 实时推送安全告警 |
| 数据恢复 | 从邮件粘贴加密 JSON 一键恢复 |
| 密码生成 | 易记密码 / 强密码 / SSH 密钥 |
| 手机适配 | 响应式布局,拇指友好 |
5200(可在 docker-compose.yml 中修改)mkdir /opt/cmdvault
tar -xzf cmdvault.tar.gz -C /opt/cmdvault
cd /opt/cmdvault
ls -la
应看到:docker-compose.yml、Dockerfile、requirements.txt、app.py、templates/
编辑 docker-compose.yml:
environment:
- PUSHDEER_KEY=你的PushDeer密钥
- ADMIN_EMAIL=你的邮箱@qq.com
- SMTP_SERVER=smtp.qq.com
- SMTP_PORT=587
- SMTP_USER=你的邮箱@qq.com
- SMTP_PASS=你的QQ邮箱授权码
sudo docker compose up -d --build
浏览器打开 http://<服务器IP>:5200
| 类型 | 说明 | 示例 |
|---|---|---|
| 📝 易记 | 4 个英文单词 + 2 位数字 | tree-sun-moon-42 |
| 🔐 强密码 | 18 位随机混合字符 | xK9#mP2$vL7@nQ4^wR6 |
| 🔑 密钥 | RSA-2048 密钥对 | 公钥+私钥写入备注 |
| 失败次数 | 触发行为 |
|---|---|
| 3 次 | PushDeer 推送 ⚠️ 警告 |
| 5 次 | 锁定 24 小时 + 邮件发送加密备份 |
| 8 次 | PushDeer + 邮件 🚨 即将自毁警告 |
| 10 次 | 💥 数据自毁 + 邮件发送最后备份 |
# 进入项目目录
cd /opt/cmdvault
# 重启容器
sudo docker compose restart
# 停止容器
sudo docker compose down
# 查看日志
sudo docker logs cmdvault
# 重建镜像
sudo docker compose up -d --build
# 手动备份数据库
cp /opt/cmdvault/data/vault.db /opt/cmdvault/data/vault.db.bak.$(date +%Y%m%d)
cd /opt/cmdvault
sudo docker compose down
tar -xzf cmdvault.tar.gz
sudo docker compose up -d --build
data/ 目录已挂载到宿主机,覆盖代码不会影响数据库。
vault.db 复制到安全位置vault.db 包含加密数据A: 无法恢复。这是设计上的安全取舍——宁可数据丢失,也不留后门。
A: 从邮箱中找到自毁通知邮件,复制其中的完整 JSON,点击登录页的"恢复数据"粘贴即可。
A: 恢复时粘贴的 JSON 不完整。请确保从邮件中复制了完整的 JSON(包含 encrypted_data、salt、hmac 三个字段)。
A: 必须通过 HTTPS 或 localhost 访问。HTTP 环境下 Web Crypto API 不可用。
A: 不支持自动同步。你可以手动复制 vault.db 到其他设备,用相同主密码打开。
CmdVault · 一个真正安全的密码保险箱