ctf01d/ctf01d-training-platform
GitHub: ctf01d/ctf01d-training-platform
一个基于 Go 和 React 构建的 CTF 攻防训练平台,提供漏洞服务目录并自动生成赛事配置,帮助选手快速启动攻防对抗训练。
Stars: 3 | Forks: 0
CTF01D 训练平台
基于 Go + Gin + PostgreSQL 的训练平台,围绕 OpenAPI-first 契约构建,并配备 React+TypeScript SPA。
架构
- 后端:Go 1.26、Gin、pgx/v5、sqlc、goose 迁移
- 前端:React + TypeScript (Vite),类型根据 OpenAPI 规范生成
- 层级:handler -> service -> repository
- 认证:JWT(与导入的 password_digest 值兼容 bcrypt)
开发
- 环境要求:Go 1.26、Node.js 22、PostgreSQL 16、yq v4
- 快速开始:
1. cp .env.sample .env
2. docker compose -f docker-compose.dev.yml up -d
3. make migrate-up
4. make go-run
- 前端开发:make web-install && make web-dev
- 文档:docs/GO_DEV.md
实用的 Make 目标
- go-build / go-run / go-test / go-vet / go-fmt
- openapi(合并 + 代码生成 + TypeScript 类型)
- sqlc-gen(根据 SQL 查询生成 Go 代码)
- migrate-up / migrate-down / migrate-status
- seed(使用测试数据填充数据库)
- lint / lint-fix / verify-codegen
- web-install / web-build / web-dev
生产环境 (Docker Compose)
- 环境要求:Docker 24+、Docker Compose v2
- 设置:
1. cp .env.sample .env 并设置 POSTGRES_PASSWORD、JWT_SECRET、ACME_EMAIL
2. docker compose -f docker-compose.prod.yml pull
3. docker compose -f docker-compose.prod.yml up -d
- 镜像由 CI 构建并推送到 GitHub Container Registry
(ghcr.io/ctf01d/ctf01d-training-platform)。通过 .env 中的 APP_IMAGE 覆盖 tag。
- 服务:
- db:附带健康检查的 PostgreSQL 16
- app:带有自动迁移的 Go 服务器(RUN_MIGRATIONS=true)
- reverse-proxy:具备自动 HTTPS (Let's Encrypt) 的 Caddy,提供 SPA 服务并将 /api/* 代理到 app
- Dockerfile 在独立的阶段分别构建 Go 后端和 React SPA
- 当 RUN_MIGRATIONS=true 时,将在启动时自动运行迁移
- API 规范:api/openapi.yaml(使用任意 OpenAPI 查看器查看)
Rails 运行时代码已被移除。保留了临时的 `cmd/import-rails` 工具,用于从旧的 Rails 数据库导入数据。
标签:CTF平台, Docker, EVTX分析, Go, PostgreSQL, React, Ruby工具, Syscalls, 安全训练, 安全防御评估, 日志审计, 测试用例, 请求拦截