docs: add README with setup guide and API reference

This commit is contained in:
Your Name
2026-07-16 16:41:17 +08:00
parent aa8af6c2e0
commit d59699b5ce
+96
View File
@@ -0,0 +1,96 @@
# SOCKS Manager — SOCKS5 代理管理系统
基于 Flask + SQLite + Bootstrap 5 的 SOCKS5 代理管理平台,提供 Web 界面和 RESTful API。
## 功能
- **仪表盘** — 代理总数 / 在线 / 离线统计,最近活跃代理,操作日志
- **代理管理** — 添加 / 编辑 / 删除 SOCKS5 代理(支持用户名密码认证),启用 / 禁用
- **分组管理** — 按颜色分组组织代理,分组筛选
- **健康检测** — SOCKS5 隧道连通性检测(测试 URL httpbin.org),单代理 / 批量检测,延迟统计
- **操作日志** — 增删改操作记录,分页查询
- **RESTful API** — 全套 CRUD + 健康检测 + 统计接口
- **管理员登录** — 密码保护后台
## 技术栈
| 层级 | 技术 |
|------|------|
| 后端 | Python 3.11 + Flask 3.0 + Flask-SQLAlchemy |
| 数据库 | SQLite(零配置,文件存储) |
| 前端 | Jinja2 模板 + Bootstrap 5 + Bootstrap Icons(暗色主题) |
| SOCKS5 | PySocks |
## 快速开始
```bash
cd /root/socks-manager
# 安装依赖
pip install -r requirements.txt --break-system-packages
# 设置管理员密码(首次启动生效)
export SM_ADMIN_PASSWORD=***
# 启动
python3 run.py
# 或: ./run.sh
```
访问 `http://你的IP:5000`,默认用户 `admin`,密码为 `SM_ADMIN_PASSWORD` 的值。
## 环境变量
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `SM_ADMIN_USER` | `admin` | 管理员用户名 |
| `SM_ADMIN_PASSWORD` | `""` | 管理员密码(必须设置,否则无法登录) |
| `SM_DB_URI` | `sqlite:///socks_manager.db` | 数据库连接串 |
| `SM_HEALTH_TIMEOUT` | `10` | 健康检测超时(秒) |
| `SM_HEALTH_INTERVAL` | `300` | 建议的健康检测间隔(秒) |
| `SM_LOG_LEVEL` | `INFO` | 日志级别 |
## 目录结构
```
socks-manager/
├── app.py # 启动入口
├── config.py # 配置 + 工厂函数
├── auth.py # 登录认证
├── models.py # 数据模型 (Proxy/Group/Log)
├── health.py # SOCKS5 健康检测
├── extensions.py # SQLAlchemy 实例
├── run.py # 直接运行脚本
├── run.sh # 启动 shell 脚本
├── requirements.txt # Python 依赖
├── routes/
│ ├── main.py # Web 路由(页面)
│ └── api.py # RESTful API
└── templates/
├── base.html # 基础布局(侧边栏 + 导航)
├── dashboard.html # 仪表盘
├── proxies.html # 代理列表
├── proxy_form.html # 添加 / 编辑代理
├── groups.html # 分组管理
└── logs.html # 日志
```
## API 参考
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/proxies` | 代理列表(支持 `?group=N` 筛选) |
| POST | `/api/proxies` | 创建代理 |
| PUT | `/api/proxies/<id>` | 更新代理 |
| DELETE | `/api/proxies/<id>` | 删除代理 |
| POST | `/api/proxies/<id>/check` | 检测单个代理 |
| POST | `/api/proxies/<id>/toggle` | 启用/禁用 |
| GET | `/api/groups` | 分组列表 |
| GET | `/api/stats` | 统计摘要 |
| GET | `/health/check-all` | 批量检测全部代理 |
## 注意事项
- 健康检测通过建立 SOCKS5 隧道连接 httpbin.org 来验证代理可用性,会产生真实网络流量
- 开发服务器不适合生产环境,生产请使用 gunicorn/uwsgi
- SQLite 适合中小型部署(数千代理),超大规模建议切换到 PostgreSQL