jmpsec/mapctf
GitHub: jmpsec/mapctf
基于 Go 和 React 构建的开源 CTF 竞赛与网络靶场平台,以地图式可视化界面呈现题目。
Stars: 7 | Forks: 0
# MapCTF
Map-based CTF/cyber-range platform.
MapCTF 是一个基于地图的 CTF/网络靶场平台,包含: - Go 后端(API + 地图服务) - React + TypeScript 前端 - PostgreSQL 和 Redis 用于状态/会话存储 ## 架构 开发栈分为四个主要运行组件: - `mapctf-api` 端口 `:8081`(REST/API 工作流) - `mapctf-map` 端口 `:8082`(地图/游戏板及模板/静态资源服务) - `mapctf-postgres` 端口 `:5432`(持久化关系数据) - `mapctf-redis` 端口 `:6379`(缓存和会话存储) 在本仓库中,前端开发使用 Vite 单独运行(默认端口 `:3000`)。 ## 项目结构 ``` mapctf/ ├── backend/ │ ├── cmd/ │ │ ├── api/ # API service entrypoint │ │ ├── map/ # Map service entrypoint + handlers/templates │ │ └── cli/ # CLI utilities │ ├── pkg/ │ │ ├── backend/ # DB layer │ │ ├── cache/ # Redis/cache primitives │ │ ├── challenges/ # Challenge domain logic │ │ ├── config/ # Config types/flags/validation │ │ ├── teams/ # Team domain logic │ │ ├── users/ # User/auth domain logic │ │ └── version/ # Version metadata │ └── Makefile # Backend build/run/test targets ├── frontend/ │ ├── src/ │ │ ├── components/ # Reusable UI components │ │ ├── pages/ # Route/page components │ │ ├── services/ # API client calls │ │ ├── contexts/ # React context state │ │ ├── styles/ # SCSS/CSS modules │ │ ├── types/ # TS models/types │ │ └── utils/ # UI helpers │ ├── public/ # Public assets │ └── htmls/ # Legacy/static map HTML assets ├── deploy/ │ ├── config/ # Example configuration files │ └── docker/ │ ├── conf/ │ └── dockerfiles/ # Dev Dockerfiles for api/map/frontend ├── docker-compose-dev.yml # Dev services (api, map, postgres, redis) ├── Makefile # Root convenience targets └── ARCHITECTURE.md # Deeper architecture notes ``` ## 快速开始(Docker) 1. 复制环境默认配置: ``` cp .env.example .env ``` 2. 启动后端服务: ``` docker compose -f docker-compose-dev.yml up --build ``` 3. 启动前端(在单独的终端中): ``` cd frontend npm install npm run dev ``` 4. 访问: - 前端:`http://localhost:3000` - API:`http://localhost:8081` - 地图服务:`http://localhost:8082` ## 本地开发(Go 服务不使用 Docker) 仅使用 Docker 启动 DB/Redis: ``` make up-backend ``` 在本地运行服务: ``` # API cd backend make run_api # Map 服务 cd backend make run_map # Frontend cd frontend npm install npm run dev ``` ## 常用命令 根目录 `Makefile`: - `make docker_dev_build` 构建开发镜像 - `make docker_dev_up` 运行 compose 栈 - `make docker_dev_down` 停止 compose 栈 - `make docker_dev_logs_api` 查看 API 日志尾部 - `make docker_dev_logs_map` 查看地图服务日志尾部 后端 `Makefile`(`backend/`): - `make build` 构建 API + 地图服务二进制文件 - `make run_api` 使用 `go run` 运行 API - `make run_map` 使用 `go run` 运行地图服务 - `make test` 运行后端包测试 前端(`frontend/`): - `npm run dev` 启动 Vite 开发服务器 - `npm run build` 生产环境构建 - `npm run lint` 对 TS/React 代码进行 lint ## 配置 主要的开发变量位于 `.env` 中(参见 `.env.example`),包括: - 工具链/镜像版本(`GOLANG_VERSION`、`NODE_VERSION`) - 数据库凭据/端口 - Redis 设置 - 初始管理员凭据 - 地图 UUID(`MAP_UUID`) 后端也支持 CLI 标志和 YAML 配置(示例:`deploy/config/mapctf.example.yaml`)。 ## 更多文档 - [ARCHITECTURE.md](ARCHITECTURE.md) 深入探讨设计决策、数据模型和服务交互。 ## 许可证 GPL-3.0。详见 [LICENSE](LICENSE)。标签:CTF平台, Cyber Range, DNS解析, Go语言, OPA, PostgreSQL, React, Redis, REST API, Syscall, Syscalls, TypeScript, Web开发, 全栈, 后端开发, 地图界面, 安全插件, 安全教育, 安全监控, 开源项目, 搜索引擎查询, 日志审计, 测试用例, 程序破解, 竞赛平台, 网络安全, 请求拦截, 隐私保护, 靶场