Skip to content

CTF-Archives/puff-pastry-platform

Repository files navigation

Puff-Pastry Platform

一个面向技能考核的 Puff-Pastry 动态靶场管理平台。

功能

  • 注册开关:第一个注册用户自动成为管理员,后续用户默认为待激活。
  • 用户状态:待激活、用户、管理员。
  • 每个用户可独立启动完整 Puff-Pastry 环境,停止时销毁容器与网络。
  • 每个用户拥有唯一 flag{uuid},同一用户环境内所有容器和数据库 flag 一致。
  • 用户工作台展示入口地址、容器状态、操作日志和提交记录。
  • 管理 Tab 仅管理员可见,可管理用户状态、注册开关、答题状态和容器状态。
  • 后端使用 FastAPI + SQLite + Docker Engine API。
  • 前端使用 Next.js + shadcn 预设,生产部署时静态导出后由 FastAPI 托管。

本地开发

后端:

cd backend
python -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
export TARGET_SOURCE_DIR=../Puff-Pastry
export WORKSPACE_DIR=../workspaces
export DATABASE_URL=sqlite:////tmp/platform.db
uvicorn app.main:app --reload

前端:

export NEXT_PUBLIC_API_BASE_URL=http://localhost:8000
npm run dev

Docker 部署

git submodule update --init --recursive
cp .env.example .env
docker compose up -d --build

默认访问:

平台只有一个 FastAPI 容器。Docker build 会先构建 Next.js 前端并放入后端镜像的 /app/static,运行时由 FastAPI 同时提供页面和 API。

容器会映射 /var/run/docker.sock 来创建用户靶场容器。Puff-Pastry 作为 git submodule 挂载至容器内 /targets/Puff-Pastry:roworkspaces 目录挂载至 /workspacesdata 目录挂载至 /data,均使用相对路径,不依赖宿主机绝对路径。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors