# gateman
**Repository Path**: reepu/gateman
## Basic Information
- **Project Name**: gateman
- **Description**: No description available
- **Primary Language**: JavaScript
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: https://gateman.reepu.com
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-12-24
- **Last Updated**: 2026-05-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Gateman

**现代化 APISIX 管理控制台**
[](https://vuejs.org/)
[](https://tdesign.tencent.com/)
[](https://www.docker.com/)
[](LICENSE)
---
## 简介
Gateman 是基于 **Apache APISIX Admin API** 的现代化管理控制台,采用最新的前端技术栈重构,提供直观、高效的网关管理体验。支持本地登录认证、双因素认证(MFA)、审计日志等安全特性,符合等保 2.0 / 密评相关要求。
### 功能特性
- 🔐 **安全认证**
- 本地登录认证(SHA-256 + Salt 哈希)
- JWT Token 会话管理
- 双因素认证(TOTP,支持 Google Authenticator)
- 登录失败锁定机制
- 密码强度策略
- 🛡️ **安全合规**
- 审计日志记录(登录、操作、密码修改)
- 日志导出功能
- 会话超时管理
- 等保 2.0 / 密评合规设计
- 🛣️ **路由管理** - 可视化配置路由规则、优先级、请求/响应重写
- ⬆️ **上游服务** - 节点管理、健康检查配置、负载均衡算法选择
- 🔌 **插件中心** - 动态表单引擎,根据插件 Schema 自动渲染配置界面
- 👥 **服务与消费者** - 完整的生命周期管理
- 📊 **监控仪表盘** - 实时统计展示,预留 Prometheus 接口
- 🎨 **暗黑模式** - 支持亮色/暗色主题切换
- 🐳 **Docker 就绪** - 多阶段构建,镜像体积 < 50MB
## 技术栈
| 类别 | 技术 |
|------|------|
| 前端框架 | Vue 3.4+ (Composition API) |
| 开发语言 | TypeScript 5.0+ (严格模式) |
| UI 组件库 | TDesign Vue Next |
| 状态管理 | Pinia |
| 路由管理 | Vue Router 4 |
| 构建工具 | Vite 5.0+ |
| 运行环境 | OpenResty (Nginx + Lua) |
| 容器化 | Docker Multi-stage Build |
## 快速开始
### 开发模式
```bash
# 克隆项目
git clone https://github.com/your-org/gateman.git
cd gateman
# 安装依赖
yarn install
# 启动开发服务器
yarn dev
```
访问 http://localhost:5173 即可看到管理界面。
**默认登录凭据:**
- 用户名:`admin`
- 密码:配置文件中设置的密码(首次运行需要修改 `public/config.yaml`)
### Docker 部署
#### 构建镜像
```bash
# 构建镜像
docker build -t gateman:latest .
```
#### 单独运行
```bash
# 生成密码哈希
# 使用 Python:
python3 -c "
import hashlib, os
username = 'admin'
password = 'YourPassword123!'
salt = os.urandom(16).hex()
hash_value = hashlib.sha256(f'{username}:{password}:{salt}'.encode()).hexdigest()
print(f'Salt: {salt}')
print(f'Hash: {hash_value}')
"
# 运行容器
docker run -d \
--name gateman \
-p 8080:80 \
-e GATEMAN_APISIX_ADMIN_URL=http://your-apisix:9180 \
-e GATEMAN_API_KEY=your-api-key \
-e GATEMAN_ADMIN_PASSWORD_HASH=生成的哈希值 \
-e GATEMAN_ADMIN_SALT=生成的盐值 \
gateman:latest
```
访问 http://localhost:8080 即可使用。
#### Docker Compose(推荐)
```bash
# 复制环境变量配置
cp .env.example .env
# 编辑 .env,设置以下变量:
# - GATEMAN_API_KEY: APISIX Admin Key
# - GATEMAN_ADMIN_PASSWORD_HASH: 密码哈希
# - GATEMAN_ADMIN_SALT: 密码盐值
vim .env
# 启动完整环境(Gateman + APISIX + etcd)
docker-compose up -d
```
## 环境变量
| 变量名 | 说明 | 默认值 |
|--------|------|--------|
| `GATEMAN_APISIX_ADMIN_URL` | APISIX Admin API 地址 | `http://apisix:9180` |
| `GATEMAN_API_KEY` | APISIX 管理员 Token | 无(必须设置) |
| `GATEMAN_ADMIN_USERNAME` | 管理员用户名 | `admin` |
| `GATEMAN_ADMIN_PASSWORD_HASH` | 密码哈希(SHA-256) | 无(建议设置) |
| `GATEMAN_ADMIN_SALT` | 密码盐值 | 无(建议设置) |
| `GATEMAN_MFA_ENABLED` | 是否启用 MFA | `false` |
| `GATEMAN_MFA_SECRET` | TOTP 密钥(Base32) | 无 |
## 配置文件
### config.yaml 结构
```yaml
# 服务配置
server:
name: "Gateman"
version: "1.0.0"
session_timeout: 28800 # 会话超时(秒),默认 8 小时
max_login_attempts: 5 # 最大登录失败次数
lockout_duration: 1800 # 账户锁定时间(秒)
# APISIX 配置
apisix:
admin_url: "http://apisix:9180"
api_key: "your-api-key"
timeout: 30000
retry_count: 3
# 管理员配置
admin:
username: "admin"
password_hash: "sha256-hash"
password_salt: "random-salt"
mfa:
enabled: false
secret: "base32-secret"
issuer: "Gateman"
password_policy:
min_length: 10
require_uppercase: true
require_lowercase: true
require_digit: true
require_special: true
# 安全配置
security:
audit:
enabled: true
retention_days: 180
login:
captcha_type: "math"
# 界面配置
ui:
theme: "light"
language: "zh-CN"
```
## 目录结构
```
gateman/
├── docs/
│ └── SECURITY_COMPLIANCE.md # 等保/密评合规备忘录
├── public/
│ └── config.yaml # 运行时配置(Docker 注入)
├── src/
│ ├── api/ # API 请求封装
│ ├── auth/ # 认证模块(登录、JWT、MFA)
│ ├── components/ # 公共组件
│ ├── composables/ # 组合式函数
│ ├── config/ # 配置加载
│ ├── layouts/ # 布局组件
│ ├── router/ # 路由配置
│ ├── stores/ # Pinia 状态
│ ├── types/ # TypeScript 类型
│ └── views/ # 页面视图
├── Dockerfile # 多阶段构建
├── docker-compose.yml # 编排示例
├── nginx.conf # OpenResty 配置
├── entrypoint.sh # 启动脚本
└── package.json
```
## 安全特性
### 已实现
- ✅ SHA-256 + Salt 密码哈希
- ✅ JWT Token 会话管理
- ✅ 双因素认证(TOTP)
- ✅ 登录失败锁定
- ✅ 密码强度策略
- ✅ 审计日志记录
- ✅ 会话超时管理
- ✅ 安全 Headers(X-Frame-Options, X-Content-Type-Options 等)
### 需要后端支持
详见 [docs/SECURITY_COMPLIANCE.md](docs/SECURITY_COMPLIANCE.md)
- 🔴 真实 IP 获取
- 🔴 审计日志持久化
- 🔴 多用户支持
- 🔴 操作权限控制
## 开发命令
```bash
# 开发模式
yarn dev
# 类型检查 + 构建
yarn build
# 代码检查
yarn lint
# 代码格式化
yarn format
# 预览构建结果
yarn preview
```
## 贡献指南
欢迎提交 Issue 和 Pull Request!
## License
[MIT](LICENSE)
---
Made with ❤️ by Gateman Team