更新md
This commit is contained in:
+105
@@ -0,0 +1,105 @@
|
||||
# 更新说明 — crypto_key
|
||||
|
||||
本文档记录各版本功能变更与升级注意事项。
|
||||
|
||||
---
|
||||
|
||||
## v2.0.0(当前)
|
||||
|
||||
### 新增
|
||||
|
||||
- **登录系统**:用户名 + 密码(单用户),凭据保存在 `.env`
|
||||
- **数据加密**:`data.json` 使用 Fernet(AES)加密存储,密钥为 `DATA_ENCRYPTION_KEY`(`.env`)
|
||||
- **凭证类型扩展**:
|
||||
- 交易所 API(Binance / OKX / Gate)
|
||||
- 网站账号(网址可点击)
|
||||
- 邮箱账户(mailto / 网页登录链接)
|
||||
- 企业微信机器人、钉钉机器人
|
||||
- 微信(微信号 + 手机号)、QQ(QQ 号 + 手机号)
|
||||
- **自定义类型**:系统设置中自行添加字段(如小红书、抖音、快手)
|
||||
- **系统设置页**:
|
||||
- 修改登录用户名/密码(写入 `.env`)
|
||||
- 管理自定义类型(增删、搜索)
|
||||
- **查询机制**:添加后不自动展示;按类型 + 关键词 +「确认」后显示
|
||||
- **类型搜索**:添加/查询时支持输入过滤类型
|
||||
- **旧数据迁移**:明文 `data.json` 首次加载自动转为加密格式
|
||||
|
||||
### 变更
|
||||
|
||||
- 监听地址由 `127.0.0.1` 改为 **`0.0.0.0`**,支持局域网访问
|
||||
- API 主路径由 `/api/accounts` 扩展为 `/api/credentials`(保留旧路径兼容)
|
||||
- 数据模型由固定 `username/api_key/api_secret` 改为 `type_id + fields` 结构
|
||||
- 依赖增加:`python-dotenv`、`cryptography`、`werkzeug`
|
||||
|
||||
### 安全
|
||||
|
||||
- 浏览器 **不** 使用 localStorage/sessionStorage 存储明文
|
||||
- Session Cookie 设置 `HttpOnly`、`SameSite=Lax`
|
||||
- `.env`、`data.json`、`settings.json` 默认加入 `.gitignore`
|
||||
|
||||
### 升级注意(从 v1.x 升级)
|
||||
|
||||
1. 备份现有 `data.json`:
|
||||
```bash
|
||||
cp data.json data.json.bak
|
||||
```
|
||||
2. 安装新依赖:
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
3. 配置 `.env`(可复制 `.env.example`,或首次运行自动生成):
|
||||
- `SECRET_KEY`
|
||||
- `AUTH_USERNAME` / `AUTH_PASSWORD`
|
||||
- `DATA_ENCRYPTION_KEY`
|
||||
4. 启动服务,旧明文数据将 **自动迁移** 为加密格式。
|
||||
5. 使用默认或自定义账号登录,在「系统设置」中修改密码。
|
||||
6. PM2 用户执行:`pm2 restart api-key-manager`
|
||||
|
||||
> **重要**:升级后切勿删除或修改 `.env` 中的 `DATA_ENCRYPTION_KEY`,否则无法解密已有数据。
|
||||
|
||||
---
|
||||
|
||||
## v1.2.0
|
||||
|
||||
### 新增
|
||||
|
||||
- 交易所下拉:Binance / OKX / Gate
|
||||
- OKX 专用 Passphrase 字段
|
||||
- 按交易所查询(下拉 + 确认)
|
||||
- 添加成功后默认不展示列表
|
||||
- 敏感字段打码显示(复制仍为明文)
|
||||
|
||||
### 变更
|
||||
|
||||
- 支持局域网访问(`0.0.0.0:5200`)
|
||||
|
||||
---
|
||||
|
||||
## v1.1.0
|
||||
|
||||
### 新增
|
||||
|
||||
- PM2 守护进程支持(`ecosystem.config.cjs`)
|
||||
- Ubuntu `/opt/crypto_key` 部署脚本与文档
|
||||
- 启动脚本:`pm2-start.sh` / `pm2-start.ps1`
|
||||
|
||||
---
|
||||
|
||||
## v1.0.0
|
||||
|
||||
### 初始功能
|
||||
|
||||
- Flask 后端 + 单页前端(黑色主题)
|
||||
- 多账户 API 密钥管理:`username`、`api_key`、`api_secret`
|
||||
- 本地 `data.json` 明文存储
|
||||
- 每条记录三个复制按钮
|
||||
- 端口 5200,无登录
|
||||
|
||||
---
|
||||
|
||||
## 版本规划(待定)
|
||||
|
||||
- [ ] 可选 HTTPS / 反向代理说明模板
|
||||
- [ ] 凭证编辑(当前仅支持添加、删除)
|
||||
- [ ] 导出/导入加密备份包
|
||||
- [ ] 登录失败次数限制
|
||||
@@ -1,118 +1,131 @@
|
||||
# 部署文档 — crypto_key(Ubuntu /opt)
|
||||
|
||||
> 仓库地址:[https://git.bz121.com/dekun/crypto_key](https://git.bz121.com/dekun/crypto_key.git)
|
||||
> 仓库:[https://git.bz121.com/dekun/crypto_key](https://git.bz121.com/dekun/crypto_key.git)
|
||||
> 部署路径:**`/opt/crypto_key`**
|
||||
> 进程守护:**PM2** · 服务端口:**5200**
|
||||
|
||||
币圈 API 密钥本地管理工具。数据保存在服务器本地 `data.json`,无登录,监听 `0.0.0.0:5200`(本机 + 局域网可访问)。
|
||||
> 进程守护:**PM2** · 端口:**5200**
|
||||
|
||||
---
|
||||
|
||||
## 一、架构
|
||||
## 一、架构说明
|
||||
|
||||
```
|
||||
浏览器(本机或局域网) → http://<服务器IP>:5200
|
||||
↓
|
||||
PM2 (api-key-manager)
|
||||
↓
|
||||
/opt/crypto_key/venv/python app.py
|
||||
↓
|
||||
/opt/crypto_key/data.json
|
||||
浏览器(本机 / 局域网)
|
||||
→ http://<IP>:5200
|
||||
→ PM2 (api-key-manager)
|
||||
→ venv/python app.py (Flask)
|
||||
→ .env (登录账号 + 加密主密钥)
|
||||
→ data.json (加密后的凭证数据)
|
||||
→ settings.json (自定义类型配置)
|
||||
```
|
||||
|
||||
| 路径 | 说明 |
|
||||
|------|------|
|
||||
| `/opt/crypto_key` | 项目根目录(从 Git 克隆) |
|
||||
| `/opt/crypto_key/data.json` | 账户数据(不纳入 Git) |
|
||||
| `/opt/crypto_key/logs/` | PM2 日志 |
|
||||
| `/opt/crypto_key/venv/` | Python 虚拟环境 |
|
||||
| 文件 | 说明 | 是否提交 Git |
|
||||
|------|------|----------------|
|
||||
| `.env` | `SECRET_KEY`、`AUTH_*`、`DATA_ENCRYPTION_KEY` | 否 |
|
||||
| `data.json` | 加密凭证库 | 否 |
|
||||
| `settings.json` | 自定义类型定义 | 否(建议备份) |
|
||||
| `venv/` | Python 虚拟环境 | 否 |
|
||||
|
||||
---
|
||||
|
||||
## 二、服务器要求
|
||||
## 二、环境要求
|
||||
|
||||
| 项目 | 要求 |
|
||||
|------|------|
|
||||
| 系统 | Ubuntu 20.04 / 22.04 / 24.04 LTS |
|
||||
| 权限 | 具备 `sudo` 的普通用户或 root |
|
||||
| Python | 3.8+(`python3`) |
|
||||
| Node.js | 16+(用于 PM2) |
|
||||
| 磁盘 | ≥ 100MB |
|
||||
| 系统 | Ubuntu 20.04 / 22.04 / 24.04 LTS(Windows 见附录) |
|
||||
| Python | 3.8+ |
|
||||
| Node.js | 16+(PM2 守护时需要) |
|
||||
| 权限 | `sudo`(一键安装脚本) |
|
||||
| 磁盘 | ≥ 200MB |
|
||||
|
||||
### Python 依赖
|
||||
|
||||
```
|
||||
flask>=3.0.0
|
||||
python-dotenv>=1.0.0
|
||||
cryptography>=42.0.0
|
||||
werkzeug>=3.0.0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、首次部署(推荐:一键脚本)
|
||||
## 三、首次部署(Ubuntu 推荐)
|
||||
|
||||
### 3.1 克隆仓库并执行安装
|
||||
### 3.1 克隆仓库
|
||||
|
||||
```bash
|
||||
# 若仓库尚未克隆,可先克隆再安装
|
||||
sudo mkdir -p /opt
|
||||
sudo git clone https://git.bz121.com/dekun/crypto_key.git /opt/crypto_key
|
||||
cd /opt/crypto_key
|
||||
```
|
||||
|
||||
### 3.2 配置环境变量
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
编辑 `.env`(若留占位符,首次启动会自动生成合法密钥):
|
||||
|
||||
| 变量 | 说明 |
|
||||
|------|------|
|
||||
| `SECRET_KEY` | Flask 会话密钥,随机长字符串 |
|
||||
| `AUTH_USERNAME` | 登录用户名 |
|
||||
| `AUTH_PASSWORD` | 登录密码(保存为哈希) |
|
||||
| `DATA_ENCRYPTION_KEY` | Fernet 密钥,用于加密 data.json |
|
||||
|
||||
生成 Fernet 密钥:
|
||||
|
||||
```bash
|
||||
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
|
||||
```
|
||||
|
||||
### 3.3 一键安装并启动
|
||||
|
||||
```bash
|
||||
sudo bash scripts/install-ubuntu.sh
|
||||
```
|
||||
|
||||
脚本将自动完成:安装 `python3` / `git` / `Node.js` / `PM2` → 创建 `venv` → 安装 Flask → PM2 启动服务。
|
||||
脚本将:安装系统依赖 → 创建 `venv` → `pip install` → PM2 启动 → `pm2 save`。
|
||||
|
||||
### 3.2 验证
|
||||
### 3.4 验证
|
||||
|
||||
```bash
|
||||
pm2 status
|
||||
curl -s http://127.0.0.1:5200/api/accounts
|
||||
# api-key-manager 应为 online
|
||||
|
||||
curl -s http://127.0.0.1:5200/api/auth/status
|
||||
# {"logged_in":false}
|
||||
```
|
||||
|
||||
访问地址:
|
||||
浏览器访问:
|
||||
|
||||
| 场景 | 地址 |
|
||||
|------|------|
|
||||
| 服务器本机 | http://127.0.0.1:5200 |
|
||||
| 局域网其他设备 | `http://<局域网IP>:5200` |
|
||||
|
||||
查看服务器局域网 IP:
|
||||
| 局域网 | `http://<服务器IP>:5200` |
|
||||
|
||||
```bash
|
||||
hostname -I | awk '{print $1}'
|
||||
# 或
|
||||
ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v 127.0.0.1
|
||||
```
|
||||
|
||||
示例:若 IP 为 `192.168.1.100`,手机/电脑在同一 WiFi 下访问 **http://192.168.1.100:5200**
|
||||
首次登录默认可能是 `admin` / `admin123`,请登录后在 **系统设置** 中修改。
|
||||
|
||||
---
|
||||
|
||||
## 四、手动部署(逐步)
|
||||
|
||||
适合需要自定义权限或不用一键脚本的环境。
|
||||
|
||||
### 4.1 安装系统依赖
|
||||
### 4.1 系统依赖
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y python3 python3-venv python3-pip git curl
|
||||
|
||||
# Node.js + PM2
|
||||
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
||||
sudo apt install -y nodejs
|
||||
sudo npm install -g pm2
|
||||
```
|
||||
|
||||
### 4.2 克隆到 /opt
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /opt
|
||||
sudo git clone https://git.bz121.com/dekun/crypto_key.git /opt/crypto_key
|
||||
cd /opt/crypto_key
|
||||
```
|
||||
|
||||
若目录已存在,更新代码:
|
||||
|
||||
```bash
|
||||
cd /opt/crypto_key
|
||||
sudo git pull
|
||||
```
|
||||
|
||||
### 4.3 Python 环境
|
||||
### 4.2 Python 环境
|
||||
|
||||
```bash
|
||||
cd /opt/crypto_key
|
||||
@@ -121,6 +134,10 @@ source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 4.3 配置 .env
|
||||
|
||||
见第三节 3.2。
|
||||
|
||||
### 4.4 PM2 启动
|
||||
|
||||
```bash
|
||||
@@ -128,168 +145,160 @@ cd /opt/crypto_key
|
||||
mkdir -p logs
|
||||
chmod +x pm2-start.sh pm2-stop.sh
|
||||
./pm2-start.sh
|
||||
# 或: pm2 start ecosystem.config.cjs && pm2 save
|
||||
```
|
||||
|
||||
或:
|
||||
|
||||
```bash
|
||||
pm2 start ecosystem.config.cjs
|
||||
pm2 save
|
||||
```
|
||||
|
||||
### 4.5 目录权限(可选)
|
||||
|
||||
若用普通用户运行 PM2,建议将项目目录属主改为该用户:
|
||||
|
||||
```bash
|
||||
sudo chown -R $USER:$USER /opt/crypto_key
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、开机自启
|
||||
### 4.5 开机自启
|
||||
|
||||
```bash
|
||||
pm2 startup
|
||||
# 终端会输出一行 sudo 命令,复制并执行
|
||||
# 按提示执行输出的 sudo 命令
|
||||
pm2 save
|
||||
```
|
||||
|
||||
重启后检查:
|
||||
### 4.6 目录权限(推荐)
|
||||
|
||||
```bash
|
||||
pm2 status
|
||||
# api-key-manager 应为 online
|
||||
sudo chown -R $USER:$USER /opt/crypto_key
|
||||
chmod 600 /opt/crypto_key/.env /opt/crypto_key/data.json 2>/dev/null || true
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、日常运维
|
||||
|
||||
### 查看状态与日志
|
||||
|
||||
```bash
|
||||
pm2 status
|
||||
pm2 logs api-key-manager
|
||||
pm2 logs api-key-manager --lines 100
|
||||
```
|
||||
|
||||
### 重启 / 停止
|
||||
|
||||
```bash
|
||||
cd /opt/crypto_key
|
||||
./pm2-start.sh # 启动
|
||||
# 或
|
||||
pm2 restart api-key-manager
|
||||
|
||||
./pm2-stop.sh # 停止
|
||||
# 或
|
||||
pm2 stop api-key-manager
|
||||
```
|
||||
|
||||
### 更新代码
|
||||
|
||||
```bash
|
||||
cd /opt/crypto_key
|
||||
git pull
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
pm2 restart api-key-manager
|
||||
```
|
||||
|
||||
### 备份数据
|
||||
|
||||
```bash
|
||||
sudo cp /opt/crypto_key/data.json /opt/crypto_key/data.json.bak.$(date +%F)
|
||||
```
|
||||
|
||||
`data.json` 含明文 API 密钥,请加密存储或限制文件权限:
|
||||
|
||||
```bash
|
||||
chmod 600 /opt/crypto_key/data.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 七、PM2 配置说明
|
||||
|
||||
文件:`/opt/crypto_key/ecosystem.config.cjs`
|
||||
|
||||
| 配置 | 值 |
|
||||
|------|-----|
|
||||
| 进程名 | `api-key-manager` |
|
||||
| 工作目录 | 项目根目录(自动) |
|
||||
| Python | `venv/bin/python` |
|
||||
| 自动重启 | 是 |
|
||||
| 日志 | `logs/pm2-out.log` / `logs/pm2-error.log` |
|
||||
|
||||
---
|
||||
|
||||
## 八、项目文件结构
|
||||
|
||||
```
|
||||
/opt/crypto_key/
|
||||
├── app.py
|
||||
├── index.html
|
||||
├── requirements.txt
|
||||
├── ecosystem.config.cjs
|
||||
├── pm2-start.sh
|
||||
├── pm2-stop.sh
|
||||
├── scripts/
|
||||
│ └── install-ubuntu.sh
|
||||
├── logs/
|
||||
├── venv/
|
||||
├── data.json # 运行时生成,已 .gitignore
|
||||
├── README.md
|
||||
└── DEPLOY.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 九、故障排查
|
||||
|
||||
| 现象 | 处理 |
|
||||
|------|------|
|
||||
| `pm2 status` 为 errored | `pm2 logs api-key-manager --err`;确认 `venv` 已创建 |
|
||||
| 端口 5200 占用 | `sudo ss -tlnp \| grep 5200`;修改 `app.py` 中 `port` 后 `pm2 restart` |
|
||||
| `git clone` 需认证 | 配置 SSH Key 或 `git config credential.helper store` |
|
||||
| 局域网无法访问 | 检查防火墙是否放行 5200;`sudo ufw allow 5200/tcp` |
|
||||
| 无法访问页面 | `pm2 logs api-key-manager`;确认 `ss -tlnp \| grep 5200` 显示 `0.0.0.0:5200` |
|
||||
| 更新后异常 | `pip install -r requirements.txt` 后 `pm2 restart api-key-manager` |
|
||||
|
||||
---
|
||||
|
||||
## 十、安全说明
|
||||
|
||||
- 服务绑定 **0.0.0.0:5200**,同一局域网内设备均可访问。
|
||||
- **无登录鉴权**,切勿将端口映射到公网或暴露于不可信网络。
|
||||
- `data.json` 已加入 `.gitignore`,不会推送到仓库。
|
||||
- 建议:仅在家/办公室可信局域网使用;云服务器请配合防火墙限制来源 IP。
|
||||
|
||||
### 防火墙(Ubuntu)
|
||||
|
||||
```bash
|
||||
# 仅允许局域网网段访问(示例 192.168.0.0/16)
|
||||
sudo ufw allow from 192.168.0.0/16 to any port 5200 proto tcp
|
||||
|
||||
# 或临时开放(测试用,范围更大)
|
||||
sudo ufw allow 5200/tcp
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 十一、Windows 本地开发(附录)
|
||||
## 五、Windows 本地部署
|
||||
|
||||
```powershell
|
||||
cd C:\path\to\crypto_key
|
||||
python -m venv venv
|
||||
.\venv\Scripts\activate
|
||||
pip install -r requirements.txt
|
||||
copy .env.example .env
|
||||
# 编辑 .env 或首次运行 python app.py 自动生成
|
||||
python app.py
|
||||
```
|
||||
|
||||
PM2 守护(可选):
|
||||
|
||||
```powershell
|
||||
npm install -g pm2
|
||||
.\pm2-start.ps1
|
||||
```
|
||||
|
||||
访问:http://127.0.0.1:5200
|
||||
---
|
||||
|
||||
## 六、PM2 运维
|
||||
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `pm2 status` | 查看状态 |
|
||||
| `pm2 logs api-key-manager` | 查看日志 |
|
||||
| `pm2 restart api-key-manager` | 重启 |
|
||||
| `pm2 stop api-key-manager` | 停止 |
|
||||
| `./pm2-start.sh` | 启动(Linux) |
|
||||
| `.\pm2-start.ps1` | 启动(Windows) |
|
||||
|
||||
配置文件:`ecosystem.config.cjs`(进程名 `api-key-manager`,Python 使用 `venv` 内解释器)。
|
||||
|
||||
---
|
||||
|
||||
## 七、更新升级
|
||||
|
||||
```bash
|
||||
cd /opt/crypto_key
|
||||
cp data.json data.json.bak.$(date +%F)
|
||||
cp .env .env.bak.$(date +%F)
|
||||
|
||||
git pull
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
pm2 restart api-key-manager
|
||||
```
|
||||
|
||||
升级说明与破坏性变更见 [CHANGELOG.md](./CHANGELOG.md)。
|
||||
|
||||
---
|
||||
|
||||
## 八、备份与恢复
|
||||
|
||||
### 8.1 必须备份的文件
|
||||
|
||||
```bash
|
||||
sudo cp /opt/crypto_key/.env /opt/crypto_key/.env.bak
|
||||
sudo cp /opt/crypto_key/data.json /opt/crypto_key/data.json.bak
|
||||
sudo cp /opt/crypto_key/settings.json /opt/crypto_key/settings.json.bak 2>/dev/null || true
|
||||
```
|
||||
|
||||
### 8.2 恢复
|
||||
|
||||
1. 将 `.env`、`data.json`、`settings.json` 放回项目根目录。
|
||||
2. **`.env` 中的 `DATA_ENCRYPTION_KEY` 必须与备份时一致**,否则无法解密。
|
||||
3. `pm2 restart api-key-manager`。
|
||||
|
||||
### 8.3 迁移到新服务器
|
||||
|
||||
```bash
|
||||
# 旧服务器打包
|
||||
tar czvf crypto_key_backup.tar.gz .env data.json settings.json
|
||||
|
||||
# 新服务器克隆代码后解压到 /opt/crypto_key/
|
||||
tar xzvf crypto_key_backup.tar.gz -C /opt/crypto_key/
|
||||
# 再执行 venv 安装与 PM2 启动
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 九、防火墙
|
||||
|
||||
服务监听 **0.0.0.0:5200**,局域网可访问。建议限制来源:
|
||||
|
||||
```bash
|
||||
# 仅允许局域网段(示例)
|
||||
sudo ufw allow from 192.168.0.0/16 to any port 5200 proto tcp
|
||||
|
||||
# 或测试时临时开放
|
||||
sudo ufw allow 5200/tcp
|
||||
```
|
||||
|
||||
**切勿**将 5200 端口直接暴露到公网;务必启用登录并修改默认密码。
|
||||
|
||||
---
|
||||
|
||||
## 十、故障排查
|
||||
|
||||
| 现象 | 处理 |
|
||||
|------|------|
|
||||
| PM2 `errored` | `pm2 logs api-key-manager --err`;检查 `venv` 与依赖 |
|
||||
| 无法登录 | 检查 `.env` 中 `AUTH_*`;删除错误密码哈希后重启,用自动生成默认账号 |
|
||||
| 数据无法解密 | `DATA_ENCRYPTION_KEY` 是否与备份一致 |
|
||||
| 局域网无法访问 | `ss -tlnp \| grep 5200` 应显示 `0.0.0.0:5200`;检查 ufw |
|
||||
| 401 未登录 | 重新登录;检查 `SECRET_KEY` 是否被改动(会导致 Session 失效) |
|
||||
| 旧明文 data.json | 启动后自动迁移;迁移前务必备份 |
|
||||
|
||||
---
|
||||
|
||||
## 十一、目录结构
|
||||
|
||||
```
|
||||
/opt/crypto_key/
|
||||
├── app.py # Flask 入口
|
||||
├── storage.py # 加密存储与迁移
|
||||
├── env_config.py # .env 读写
|
||||
├── index.html # 前端(登录 + 主界面 + 设置)
|
||||
├── requirements.txt
|
||||
├── ecosystem.config.cjs # PM2
|
||||
├── .env.example
|
||||
├── settings.json # 自定义类型(运行时)
|
||||
├── scripts/
|
||||
│ └── install-ubuntu.sh
|
||||
├── pm2-start.sh / pm2-stop.sh
|
||||
├── pm2-start.ps1 / pm2-stop.ps1 / pm2-restart.ps1
|
||||
├── logs/
|
||||
├── venv/
|
||||
├── README.md
|
||||
├── USAGE.md # 使用说明
|
||||
├── DEPLOY.md # 本文档
|
||||
└── CHANGELOG.md # 更新说明
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -298,10 +307,12 @@ npm install -g pm2
|
||||
```bash
|
||||
# 首次部署
|
||||
sudo git clone https://git.bz121.com/dekun/crypto_key.git /opt/crypto_key
|
||||
cd /opt/crypto_key && sudo bash scripts/install-ubuntu.sh
|
||||
cd /opt/crypto_key && cp .env.example .env && sudo bash scripts/install-ubuntu.sh
|
||||
|
||||
# 日常
|
||||
pm2 status
|
||||
pm2 restart api-key-manager
|
||||
cd /opt/crypto_key && git pull && pm2 restart api-key-manager
|
||||
pm2 logs api-key-manager --lines 50
|
||||
```
|
||||
|
||||
使用细节请参阅 **[USAGE.md](./USAGE.md)**。
|
||||
|
||||
@@ -1,130 +1,94 @@
|
||||
# crypto_key — 凭证保险库
|
||||
|
||||
本地 Web 工具,管理交易所 API、网站、邮箱、机器人、微信/QQ 及自定义类型凭证。数据 **AES 加密** 存入 `data.json`,登录凭据与加密主密钥在 `.env`。
|
||||
本地 / 局域网 Web 工具,集中管理交易所 API、网站、邮箱、机器人、微信/QQ 及自定义类型凭证。数据 **AES 加密** 存储,**用户名密码登录**,浏览器不缓存明文。
|
||||
|
||||
| 项目 | 说明 |
|
||||
|------|------|
|
||||
| 仓库 | [git.bz121.com/dekun/crypto_key](https://git.bz121.com/dekun/crypto_key.git) |
|
||||
| Ubuntu 部署路径 | `/opt/crypto_key` |
|
||||
| 服务端口 | `5200` |
|
||||
| 进程守护 | PM2 |
|
||||
| 端口 | `5200`(`0.0.0.0`,局域网可访问) |
|
||||
| Ubuntu 部署 | `/opt/crypto_key` + PM2 |
|
||||
|
||||
---
|
||||
|
||||
## 功能
|
||||
## 文档导航
|
||||
|
||||
- **登录**:用户名 + 密码(`.env`),浏览器不缓存明文
|
||||
- **内置类型**:交易所 API、网站、邮箱、企业微信/钉钉机器人、微信、QQ
|
||||
- **自定义类型**:系统设置中添加(如小红书、抖音、快手)
|
||||
- **查询**:类型搜索 + 关键词 + 确认后显示;网站/邮箱可点击跳转
|
||||
- **旧 data.json**:首次启动自动迁移为加密格式
|
||||
- 黑色专业界面,列表展示 + 每项 3 个复制按钮(**复制始终为明文**)
|
||||
- 可选界面打码显示,不影响复制内容
|
||||
- 数据持久化至 `data.json`
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| **[USAGE.md](./USAGE.md)** | 使用说明(登录、添加、查询、系统设置) |
|
||||
| **[DEPLOY.md](./DEPLOY.md)** | 部署文档(Ubuntu/Windows、PM2、备份、排错) |
|
||||
| **[CHANGELOG.md](./CHANGELOG.md)** | 更新说明与版本升级注意 |
|
||||
|
||||
---
|
||||
|
||||
## 首次配置
|
||||
## 快速开始
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# 编辑 .env:SECRET_KEY、AUTH_USERNAME、AUTH_PASSWORD、DATA_ENCRYPTION_KEY
|
||||
git clone https://git.bz121.com/dekun/crypto_key.git
|
||||
cd crypto_key
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||||
pip install -r requirements.txt
|
||||
cp .env.example .env # 可选,首次运行也会自动生成
|
||||
python app.py
|
||||
```
|
||||
|
||||
默认首次运行会自动生成 `.env`(用户名 `admin` / 密码 `admin123`,请立即在「系统设置」中修改)。
|
||||
浏览器打开:
|
||||
|
||||
## Ubuntu 服务器部署(/opt)
|
||||
- 本机:http://127.0.0.1:5200
|
||||
- 局域网:`http://<本机IP>:5200`
|
||||
|
||||
完整步骤见 **[DEPLOY.md](./DEPLOY.md)**。
|
||||
默认账号(请尽快在系统设置中修改):`admin` / `admin123`
|
||||
|
||||
---
|
||||
|
||||
## 主要功能
|
||||
|
||||
- 登录鉴权(凭据在 `.env`,Session 在服务端)
|
||||
- 内置类型:交易所、网站、邮箱、企微/钉钉机器人、微信、QQ
|
||||
- 自定义类型:系统设置中添加(小红书、抖音等)
|
||||
- 查询后显示 + 类型/关键词搜索 + 敏感字段打码(复制为明文)
|
||||
- 旧版明文 `data.json` 自动迁移加密
|
||||
|
||||
---
|
||||
|
||||
## Ubuntu 一键部署
|
||||
|
||||
```bash
|
||||
sudo git clone https://git.bz121.com/dekun/crypto_key.git /opt/crypto_key
|
||||
cd /opt/crypto_key
|
||||
cp .env.example .env # 并编辑
|
||||
cp .env.example .env
|
||||
sudo bash scripts/install-ubuntu.sh
|
||||
```
|
||||
|
||||
访问:
|
||||
|
||||
- 本机:**http://127.0.0.1:5200**
|
||||
- 局域网:**http://<服务器局域网IP>:5200**(如 `http://192.168.1.100:5200`)
|
||||
|
||||
查看本机 IP:`hostname -I` 或 `ip addr`
|
||||
|
||||
```bash
|
||||
pm2 status
|
||||
pm2 logs api-key-manager
|
||||
```
|
||||
详见 [DEPLOY.md](./DEPLOY.md)。
|
||||
|
||||
---
|
||||
|
||||
## 本地开发
|
||||
|
||||
```bash
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||||
pip install -r requirements.txt
|
||||
python app.py
|
||||
```
|
||||
|
||||
浏览器打开 http://127.0.0.1:5200(局域网内其他设备用 `http://<本机IP>:5200`)
|
||||
|
||||
PM2 守护:`./pm2-start.sh`(Linux)或 `.\pm2-start.ps1`(Windows)
|
||||
|
||||
---
|
||||
|
||||
## 文件说明
|
||||
## 项目文件
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `app.py` | Flask 后端 |
|
||||
| `index.html` | 前端页面 |
|
||||
| `storage.py` | 加密存储与迁移 |
|
||||
| `env_config.py` | `.env` 管理 |
|
||||
| `index.html` | 前端单页 |
|
||||
| `ecosystem.config.cjs` | PM2 配置 |
|
||||
| `scripts/install-ubuntu.sh` | Ubuntu 一键安装 |
|
||||
| `DEPLOY.md` | 完整部署文档 |
|
||||
|
||||
---
|
||||
|
||||
## 数据格式
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "uuid",
|
||||
"exchange": "binance",
|
||||
"username": "账户名称",
|
||||
"api_key": "API Key",
|
||||
"api_secret": "API Secret",
|
||||
"password": "仅 OKX 需要"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## API
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/` | 前端页面 |
|
||||
| GET | `/api/accounts` | 获取全部账户 |
|
||||
| GET | `/api/accounts?exchange=binance` | 按交易所筛选 |
|
||||
| POST | `/api/accounts` | 新增账户 |
|
||||
| DELETE | `/api/accounts/<id>` | 删除账户 |
|
||||
| `scripts/install-ubuntu.sh` | Ubuntu 安装脚本 |
|
||||
|
||||
---
|
||||
|
||||
## 安全提示
|
||||
|
||||
- 无认证,监听 `0.0.0.0`(局域网可访问),请勿暴露到公网;建议仅在可信局域网使用
|
||||
- `data.json` 为明文密钥,已 `.gitignore`,请定期备份
|
||||
- 仅在可信局域网使用,勿将 5200 映射到公网
|
||||
- 定期备份 `.env` 与 `data.json`(密钥丢失将无法解密)
|
||||
- 勿将 `.env`、`data.json` 提交到 Git
|
||||
|
||||
---
|
||||
|
||||
## 依赖
|
||||
|
||||
```
|
||||
flask>=3.0.0,<4.0.0
|
||||
flask, python-dotenv, cryptography, werkzeug
|
||||
```
|
||||
|
||||
服务器另需:Python 3.8+、Node.js(PM2)
|
||||
服务器 PM2 部署另需 Node.js 16+。
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
# 使用说明 — crypto_key 凭证保险库
|
||||
|
||||
本文档介绍日常使用方法。部署与安装请参阅 [DEPLOY.md](./DEPLOY.md)。
|
||||
|
||||
---
|
||||
|
||||
## 1. 产品简介
|
||||
|
||||
**crypto_key** 是一款在浏览器中使用的本地/局域网凭证管理工具,用于集中保存:
|
||||
|
||||
- 交易所 API(Binance、OKX、Gate)
|
||||
- 网站账号(可点击打开网址)
|
||||
- 邮箱账户(可点击发邮件或打开网页登录)
|
||||
- 企业微信 / 钉钉机器人 Webhook
|
||||
- 微信、QQ(微信号/QQ号 + 手机号)
|
||||
- 自定义类型(如小红书、抖音、快手等,在系统设置中自行添加)
|
||||
|
||||
所有敏感数据在服务器上以 **加密形式** 写入 `data.json`;访问前需 **登录**。浏览器 **不会** 把密码写入 localStorage。
|
||||
|
||||
| 项目 | 说明 |
|
||||
|------|------|
|
||||
| 默认端口 | 5200 |
|
||||
| 访问方式 | 本机 `http://127.0.0.1:5200` 或局域网 `http://<IP>:5200` |
|
||||
|
||||
---
|
||||
|
||||
## 2. 首次登录
|
||||
|
||||
1. 启动服务后,在浏览器打开上述地址。
|
||||
2. 输入 **用户名** 和 **密码**。
|
||||
3. 首次部署时,若未配置 `.env`,系统可能自动生成默认账号:
|
||||
- 用户名:`admin`
|
||||
- 密码:`admin123`
|
||||
4. **登录后请立即进入「系统设置」修改用户名和密码。**
|
||||
|
||||
> 登录状态保存在服务端 Session(HttpOnly Cookie),关闭浏览器后需重新登录(约 30 分钟无操作也会失效)。
|
||||
|
||||
---
|
||||
|
||||
## 3. 界面总览
|
||||
|
||||
登录成功后主界面包含三块:
|
||||
|
||||
| 区域 | 作用 |
|
||||
|------|------|
|
||||
| **添加凭证** | 选择类型、填写字段、保存 |
|
||||
| **查询凭证** | 按类型/关键词筛选,点击「确认」后展示列表 |
|
||||
| **凭证列表** | 展示查询结果;支持打码显示与复制 |
|
||||
|
||||
右上角:
|
||||
|
||||
- **系统设置**:修改登录账号、管理自定义类型
|
||||
- **退出**:清除登录状态
|
||||
|
||||
---
|
||||
|
||||
## 4. 添加凭证
|
||||
|
||||
### 4.1 选择类型
|
||||
|
||||
1. 在「添加凭证」区域的 **凭证类型** 输入框中输入关键字(如「交易所」「邮箱」「小红书」)。
|
||||
2. 从下拉列表中点击需要的类型。
|
||||
3. 下方会显示「已选:xxx」,并出现对应表单。
|
||||
|
||||
### 4.2 各类型必填说明
|
||||
|
||||
| 类型 | 主要字段 |
|
||||
|------|----------|
|
||||
| 交易所 API | 交易所、账户名称、API Key、API Secret;**OKX 额外必填 Passphrase 密码** |
|
||||
| 网站账号 | 名称、网址、用户名、密码 |
|
||||
| 邮箱账户 | 名称、邮箱地址、密码;可选网页登录地址 |
|
||||
| 企业微信机器人 | 名称、Webhook |
|
||||
| 钉钉机器人 | 名称、Webhook |
|
||||
| 微信 | 名称、微信号、手机号 |
|
||||
| QQ | 名称、QQ 号、手机号 |
|
||||
| 自定义类型 | 按你在系统设置中定义的字段填写 |
|
||||
|
||||
### 4.3 提交
|
||||
|
||||
1. 填写完成后点击 **「添加」**。
|
||||
2. 添加成功后会提示:**不会自动显示在列表中**。
|
||||
3. 需要到「查询凭证」区域选择类型并点击 **「确认」** 才能查看。
|
||||
|
||||
---
|
||||
|
||||
## 5. 查询凭证
|
||||
|
||||
### 5.1 基本查询
|
||||
|
||||
1. 在「查询凭证」中选择或搜索 **类型**(下拉框支持输入过滤)。
|
||||
2. (可选)在 **关键词** 中输入名称、账号、邮箱等片段。
|
||||
3. 若类型为 **交易所 API**,可再选 Binance / OKX / Gate。
|
||||
4. 点击右侧 **「确认」**。
|
||||
5. 列表显示该条件下所有记录。
|
||||
|
||||
### 5.2 列表操作
|
||||
|
||||
| 操作 | 说明 |
|
||||
|------|------|
|
||||
| **隐藏敏感字段** | 勾选后界面以圆点显示密码、Key 等;**复制按钮仍为真实明文** |
|
||||
| **复制** | 每条字段右侧「复制」按钮 |
|
||||
| **链接** | 网站「网址」、邮箱「邮箱地址」、邮箱「网页登录地址」可点击跳转 |
|
||||
| **删除** | 卡片右上角「删除」,需确认 |
|
||||
|
||||
### 5.3 未查询时
|
||||
|
||||
默认显示:「选择类型并点击「确认」查看」——不会展示任何凭证内容。
|
||||
|
||||
---
|
||||
|
||||
## 6. 系统设置
|
||||
|
||||
点击右上角 **「系统设置」** 进入。
|
||||
|
||||
### 6.1 修改登录账号(写入 .env)
|
||||
|
||||
1. 填写 **新用户名**、**新密码**(至少 6 位)。
|
||||
2. 填写 **当前密码** 以确认身份。
|
||||
3. 点击 **「保存登录设置」**。
|
||||
4. 修改后请使用新账号重新登录。
|
||||
|
||||
> 登录凭据保存在服务器 `.env` 文件中,不会出现在浏览器缓存。
|
||||
|
||||
### 6.2 自定义凭证类型
|
||||
|
||||
适用于小红书、抖音、快手等未内置的类型。
|
||||
|
||||
**新增类型:**
|
||||
|
||||
1. **类型 ID**:英文小写+下划线,如 `xiaohongshu`(创建后不可改)。
|
||||
2. **显示名称**:如 `小红书`。
|
||||
3. **字段列表**:点击「+ 添加字段」
|
||||
- `key`:英文标识,如 `account`
|
||||
- `显示名`:如 `账号`
|
||||
- `类型`:文本 / 敏感 / 链接 / 邮箱 / 手机
|
||||
- **必填**:是否必填
|
||||
4. 点击 **「保存自定义类型」**。
|
||||
|
||||
**搜索 / 删除:**
|
||||
|
||||
- 顶部搜索框可过滤已有自定义类型。
|
||||
- 「删除」会同时删除该类型下的 **所有凭证记录**。
|
||||
|
||||
---
|
||||
|
||||
## 7. 安全与使用建议
|
||||
|
||||
1. **仅在可信局域网使用**,不要将 5200 端口映射到公网。
|
||||
2. **定期备份** `data.json` 和 `.env`(见 [DEPLOY.md](./DEPLOY.md) 备份章节)。
|
||||
3. **不要** 将 `.env`、`data.json` 提交到 Git 或发给他人。
|
||||
4. 若更换服务器,需同时拷贝 `.env` 与 `data.json`,否则无法解密数据。
|
||||
5. 复制敏感内容后,尽快粘贴使用,避免长时间留在系统剪贴板。
|
||||
|
||||
---
|
||||
|
||||
## 8. 常见问题
|
||||
|
||||
**Q:登录提示用户名或密码错误?**
|
||||
A:检查 `.env` 中 `AUTH_USERNAME` / `AUTH_PASSWORD`;或使用部署时的默认 `admin` / `admin123` 后在设置中修改。
|
||||
|
||||
**Q:添加成功但查询不到?**
|
||||
A:确认查询的类型与添加时一致;交易所需选对 Binance/OKX/Gate。
|
||||
|
||||
**Q:局域网手机打不开?**
|
||||
A:确认手机与服务器同一 WiFi;防火墙放行 5200;使用 `http://服务器IP:5200` 而非 127.0.0.1。
|
||||
|
||||
**Q:复制按钮无效?**
|
||||
A:使用 `http://` 访问(非 `file://`);浏览器需允许剪贴板权限。
|
||||
|
||||
**Q:更新代码后无法登录或数据打不开?**
|
||||
A:执行 `pip install -r requirements.txt` 并重启 PM2;确认 `.env` 中 `DATA_ENCRYPTION_KEY` 未变。
|
||||
|
||||
**Q:旧版明文 data.json 还能用吗?**
|
||||
A:可以。服务启动后首次读取会自动迁移为加密格式,建议迁移前备份原文件。
|
||||
|
||||
---
|
||||
|
||||
## 9. 相关文档
|
||||
|
||||
| 文档 | 内容 |
|
||||
|------|------|
|
||||
| [README.md](./README.md) | 项目概览 |
|
||||
| [DEPLOY.md](./DEPLOY.md) | 安装与运维 |
|
||||
| [CHANGELOG.md](./CHANGELOG.md) | 版本更新记录 |
|
||||
Reference in New Issue
Block a user