管理员指南
本指南面向 Ocean CTF 平台的管理员,介绍如何使用管理后台进行平台管理、题目管理、比赛管理等操作。
登录管理后台
访问地址
管理后台地址:http://your-domain/admin
默认账号
首次部署后,使用以下默认账号登录:
- 用户名:
admin - 密码:在
.env文件中配置的FIRST_SUPERUSER_PASSWORD,默认admin
安全提示
首次登录后,请立即修改默认密码!
用户管理
查看用户列表
- 登录管理后台
- 点击左侧菜单 用户管理 → 用户列表
- 可以查看所有注册用户的信息
用户操作
- 编辑用户:点击操作列的"编辑"按钮,可以修改用户信息
- 禁用用户:点击"禁用"按钮,禁止用户登录
- 删除用户:点击"删除"按钮,永久删除用户(谨慎操作)
- 重置密码:点击"重置密码"按钮,为用户生成新密码
队伍管理
队伍用于组织参赛成员参与比赛(尤其是团队赛/攻防赛等)。
查看队伍列表
- 进入 用户管理 → 队伍管理
- 查看队伍信息(队伍名称、队长、成员数量、创建时间等)
队伍操作
- 查看队伍详情:查看队伍成员、队伍信息
- 编辑队伍:修改队伍名称、描述等信息
- 解散/删除队伍:谨慎操作,可能影响比赛参与数据
批量导入队伍
当需要为学校/企业/活动快速初始化大量队伍时,可以使用批量导入。
- 进入 用户管理 → 队伍管理
- 点击"批量导入"按钮
- 按模板准备导入文件(通常为 CSV/Excel,字段以页面提示为准)
- 上传并确认导入结果
提示
批量导入前建议先导出一份示例模板,在示例基础上填充数据,避免字段不匹配导致导入失败。
赛事管理
赛事管理用于创建比赛、配置赛制与题目、管理参赛权限与数据导出等。
比赛类型
1. 理论赛
选择题、填空题等理论知识考核。
- 题目类型:单选、多选、填空、简答
- 自动评分:系统自动判分
- 限时答题:可设置答题时间限制
2. 解题赛(CTF)
传统的 CTF 解题模式,用户通过解题获得分数。
- 计分方式:固定分值 / 动态分值
- 排行榜:实时更新
- 一血奖励:首个解出题目的用户额外加分
- 题目类型:Web / Pwn / Reverse / Crypto / Misc / Mobile
- 环境类型 静态题目/容器化
3. 攻防赛(AWD)
攻防兼备的比赛模式,每个队伍维护自己的靶机,同时攻击其他队伍。
- 靶机分配:自动为每个队伍分配靶机
- Flag 轮转:定时更换 Flag
- 攻击检测:记录攻击日志
- 防御检测:检查服务可用性
创建比赛
- 进入 比赛管理 → 比赛列表
- 点击"新建比赛"按钮
- 填写比赛信息:
- 比赛名称:比赛标题
- 比赛描述:比赛说明(支持 Markdown)
- 开始时间:比赛开始时间
- 结束时间:比赛结束时间
- 参赛模式: 个人赛/团体赛
- 比赛类型:解题赛 / 攻防赛 / 理论赛 / 混合
- 是否公开:是否允许所有用户参加
- 开放注册:是否允许访客加入(需要审核)
- 点击"提交"保存
赛事详情
创建比赛后,进入比赛详情页可对赛事进行日常管理,包括公告、关卡、成绩单、参赛单位、WP、管理员等。

公告
用于向参赛者发布赛事相关通知(例如赛程说明、环境变更、已知问题、临时规则等)。
- 进入比赛详情页 → 公告
- 点击"新建公告"
- 填写公告标题与内容
- 选择是否置顶/是否立即发布(以页面为准)
- 保存后公告会展示在选手侧赛事页面
关卡
用于组织赛事的阶段/关卡结构(例如初赛/复赛、阶段一/阶段二、不同题目集等)。
- 进入比赛详情页 → 关卡
- 点击"新建关卡"
- 配置关卡名称、开放时间/关闭时间、排序等
- 在关卡内添加题目或调整题目顺序(以页面为准)
动态环境与模板选择
关卡中通常会包含不同类型的题目:
- 静态题目:无需启动环境,直接在题目中配置 Flag 与附件即可
- 动态环境题目:需要为参赛者启动独立容器环境(例如 Web 靶机、漏洞复现环境等)
当关卡内包含动态环境题目时,需要先准备好对应的环境模板:
- 在题目中选择/绑定对应的容器模板或漏洞环境模板(以页面为准)
- 将题目加入到关卡后,参赛者在比赛页面可按题目启动靶机
容器模板的创建与配置请参考:容器模板管理
提示
建议先完成“虚拟化环境配置”,并至少创建 1 个可正常启动的容器模板,再进行关卡与动态题目编排。
提示
如果比赛类型为混合赛制,建议通过关卡划分不同模块,方便参赛者理解与组织。
成绩单
用于查看与导出比赛结果数据(排行榜、提交记录、各题解题情况等)。
- 进入比赛详情页 → 成绩单
- 查看实时排行榜与统计
- 如需留档,可导出数据(CSV/Excel 等,以页面为准)
参赛单位
用于管理参赛单位/组织(例如学校、班级、企业部门等),常用于团体赛报名与统计。
- 进入比赛详情页 → 参赛单位
- 新建参赛单位或编辑单位信息
- 为单位绑定参赛队伍/成员(以页面为准)
WP
用于收集与管理参赛者提交的 WriteUp(题解/复盘)。
- 进入比赛详情页 → WP
- 查看提交列表
- 审核/发布/导出(以页面为准)
管理员
用于给比赛分配管理人员,支持按比赛维度授权(例如只允许管理自己负责的比赛)。
- 进入比赛详情页 → 管理员
- 添加管理员用户
- 保存后该管理员可在后台看到并管理该比赛
添加题目到比赛
- 编辑比赛
- 在"题目列表"部分,点击"添加题目"
- 选择要添加的题目
- 配置题目在比赛中的分值(可选)
- 保存
比赛权限管理
公开比赛
所有注册用户都可以参加。
邀请制比赛
- 创建比赛时,取消勾选"公开比赛"
- 进入比赛详情页
- 点击"邀请用户"按钮
- 选择要邀请的用户或团队
- 发送邀请
比赛监控
- 进入比赛详情页
- 查看实时数据:
- 参赛人数:当前参赛用户数
- 解题情况:各题目的解题人数
- 排行榜:实时排名
- 提交记录:所有 Flag 提交记录
比赛结束后
- 比赛自动结束,用户无法继续提交
- 导出比赛数据:
- 排行榜:导出为 CSV 或 Excel
- 解题记录:导出所有提交记录
- WriteUp:收集参赛者的题解
理论题管理
理论题管理用于维护平台的理论题题库,并为"理论赛"提供可复用的题目来源。通过理论题管理,你可以统一管理题干、选项、正确答案、解析与分值,并在赛事中快速组卷与发布。
同时,理论题管理还提供了配套的数据能力:
- 成绩单:查看参赛者提交记录与判分结果
- 统计分析:查看题目正确率、选项分布、答题耗时等,用于赛后复盘与题库优化
理论题类型
理论题用于理论赛的题库建设与考试组织。
- 单选题:从多个选项中选择唯一正确答案
- 多选题:从多个选项中选择一个或多个正确答案
- 填空题:填写简短文本作为答案
- 简答题:提交较长文本(通常需要人工或规则辅助评阅)
创建理论题
1. 新建题目
- 进入 理论题管理 → 理论题列表
- 点击"新建"按钮
- 选择题型并填写题干、选项与答案(以页面为准)
- 设置分值、解析(可选)
- 保存后即可在理论赛中引用该题
成绩单与统计
理论题的提交记录与统计通常在:
- 理论题管理 → 成绩单:查看理论赛提交与评分结果
- 理论题管理 → 统计分析:查看题目正确率、答题分布等
CTF练兵场
CTF练兵场用于日常训练与题库运营。管理员可以在这里维护 CTF 关卡(题目),并支持静态题目与容器化题目两种形态。
CTF关卡列表
- 进入 CTF练兵场 → CTF关卡列表
- 查看关卡状态(草稿/发布/隐藏等,以页面为准)、分类、分值与创建时间
创建CTF关卡
- 进入 CTF练兵场 → CTF关卡列表
- 点击"创建CTF关卡"按钮
- 填写题目基础信息(名称、分类、描述、分值等)
- 选择环境类型:
- 静态题目:直接配置 Flag 与附件
- 容器化题目:为每个参赛者启动独立环境
- 点击"提交"保存
容器化题目(动态环境)
当题目选择"容器化"时,需要绑定容器模板:
- 在题目编辑页的"容器配置"中选择容器模板
- 配置容器参数(如生存时间、最大实例数等,以页面为准)
- 保存后,选手侧可通过"启动靶机"进入题目环境
容器模板的创建与配置请参考:容器模板管理
容器实例
容器化题目运行后,会产生容器实例,可用于排障与运维:
- 进入 CTF练兵场 → 容器实例(或 虚拟化管理 → 容器实例,以页面为准)
- 查看实例状态、端口映射与运行日志
- 必要时可重启或停止实例(谨慎操作)
动态靶场管理
容器模板管理
Ocean CTF 支持基于 Docker 的动态靶场,可以为每个用户启动独立的靶机环境。
创建容器模板
- 进入 虚拟化管理 → 容器模板
- 点击"新建模板"按钮
- 填写模板信息:
- 模板名称:如 "Web 靶场 - SQL 注入"
- 镜像名称:Docker 镜像,如
mysql:5.7 - 端口映射:容器端口映射规则
- 环境变量:容器环境变量(可选)
- 启动命令:容器启动命令(可选)
- 点击"提交"保存
端口映射配置
端口映射格式:容器端口:协议
示例:
80:http
3306:tcp系统会自动为每个用户分配随机的宿主机端口。
关联题目与容器
- 编辑题目
- 在"容器配置"部分,选择容器模板
- 配置容器参数:
- 生存时间:容器自动销毁时间(分钟)
- 最大实例数:每个用户最多可启动的容器数量
- 保存题目
用户答题时,点击"启动靶机"按钮即可获得独立的靶机环境。
容器实例管理
- 进入 虚拟化管理 → 容器实例
- 可以查看所有运行中的容器实例
- 支持的操作:
- 查看日志:查看容器运行日志
- 重启容器:重启容器实例
- 停止容器:停止并删除容器
漏洞复现
Vulhub 题库
Ocean CTF 内置了 Vulhub 漏洞复现环境题库,可以一键导入真实漏洞环境。

同步 Vulhub 题库
- 进入 漏洞复现 → 漏洞环境
- 点击"同步漏洞模板"按钮
- 系统会自动从 GitHub 拉取最新的 Vulhub 题库
- 等待同步完成
提示
同步可能需要几分钟时间,请耐心等待。
自定义漏洞环境
除了 Vulhub 题库,你也可以创建自定义的漏洞环境:
- 准备 Docker Compose 配置文件
- 创建容器模板,配置多服务编排
- 关联到题目
虚拟化
平台的 动态靶场 与 漏洞复现 功能依赖虚拟化能力。首次部署并登录管理后台后,建议优先完成虚拟化相关配置,避免后续创建题目或导入漏洞环境时出现容器无法启动等问题。
主机类型与环境类型
虚拟化管理包含两层概念:
- 主机类型:环境实际运行的宿主资源来源。平台支持多种主机类型,用于承载不同环境:
- Docker:适用于容器化环境(最常用)
- PVE(Proxmox VE):适用于需要虚拟机隔离的场景(例如更强隔离/更贴近真实系统环境)
- 环境类型:题目/模板所使用的运行形态。
- 静态环境:不启动容器,直接在题目中配置 Flag 与附件
- 容器化环境:基于模板启动容器(动态靶场、漏洞复现等都属于此类)
不同主机类型常见差异(以页面字段为准):
- Docker 主机:
endpoint通常为 Docker API 地址(例如unix:///var/run/docker.sock或tcp://host:2375)out_ip用于生成题目对外访问地址(非常关键)
- PVE 主机:
endpoint通常为 PVE API 地址(例如https://host:8006)- 通常需要配置
username/password或api_key用于鉴权
Docker Compose(多服务编排)
平台支持将 docker-compose.yml 作为模板来源,用于一键启动多服务环境(例如 Web + DB + Cache)。
使用 Compose 模板时建议关注:
- 入口服务:确定参赛者访问的入口服务(通常是 Web 服务)以及其对外端口
- 端口声明:Compose 中的
ports用于识别可访问端口;对外端口仍由平台在主机端口范围内自动分配 - 资源声明:可在 Compose 服务中声明 CPU/内存需求(平台会按主机默认/上限裁剪)
- 网络与依赖:多服务需要正确的网络互联与依赖顺序(按 Compose 配置为准)
提示
无论是 CTF 练兵场的容器化题目,还是漏洞复现的漏洞环境,本质上都会落到“容器化环境 + 主机节点”上。
前置条件
- Docker 环境:确保后端所在机器已安装 Docker,并且 Docker 服务正常运行
- 权限:后端进程需要具备访问 Docker 的权限(容器化部署时通常需要挂载
/var/run/docker.sock) - 网络连通性:后端可拉取镜像(能访问 Docker Hub 或自建镜像仓库)
配置主机节点
- 进入 虚拟化管理 → 主机管理
- 点击"新增主机"
- 填写主机信息(按页面提示配置即可)
- 保存后在列表中查看主机状态是否为"在线/可用"
提示
如果你的部署是单机模式,通常只需要添加当前后端所在机器作为主机节点即可。
出口配置(重要)
“出口配置”用于控制容器环境对外提供服务时的访问方式,常见场景包括:
- 选手访问题目环境的 Web 服务
- 容器环境需要对外暴露端口(HTTP/HTTPS/TCP)
- 平台部署在反向代理/NAT 之后,需要正确生成访问地址
建议在虚拟化主机或全局配置中明确:
- 对外域名/访问入口:对外访问使用的域名(例如
https://ctf.example.com) - 端口映射范围:宿主机用于分配给容器的端口段
- 访问协议:HTTP/HTTPS(若走 HTTPS,证书通常由外部网关/反向代理负责)
注意
如果出口配置不正确,常见现象是“容器已启动但访问地址打不开 / 地址生成错误 / 端口被占用”。
资源限制
为避免单个题目占用过多资源影响整个平台,建议为主机设置资源上限与默认值:
- 主机总资源:总内存(MB)、总 CPU(核数)、最大容器数量
- 端口范围:端口范围起始/结束(用于自动分配对外端口)
- 单容器默认资源:默认内存(MB)、默认 CPU(核数)
- 单容器最大资源:最大内存(MB)、最大 CPU(核数)
- 容器生命周期:默认存活时间(TTL,秒)、最大 TTL
提示
平台会根据“服务在模板中声明的资源”与“主机配置默认/最大值”综合计算容器最终限制,避免超额。
模板资源
容器模板可为每个服务声明资源需求(如 CPU/内存)。一般优先级为:
- 模板内服务声明的资源(如果有)
- 主机默认资源
- 平台兜底默认值
当模板请求资源超过主机允许的最大值时,会自动按主机上限进行限制。
运行时
运行时指容器真正启动与运行阶段的行为与运维能力,常见关注点包括:
- 启动与销毁:按 TTL 自动销毁过期容器,减少资源占用
- 日志查看:通过容器实例查看运行日志定位错误
- 重启/停止:必要时手动重启或停止实例(谨慎操作)
- 容量规划:通过资源限制与最大容器数控制平台承载能力
镜像拉取与仓库设置
- 公共镜像:默认从 Docker Hub 拉取(需要网络可访问)
- 私有仓库:如使用私有镜像仓库,请在部署侧配置好登录凭据或镜像加速
连通性与权限检查
完成主机配置后,建议做一次快速验证:
- 能否创建容器:后续在创建容器模板/漏洞环境模板时,能正常拉取镜像并启动容器
- 日志可用:在 虚拟化管理 → 容器实例 中能查看日志
- 端口映射正常:靶机启动后可正常访问分配的端口
管理员管理
管理员账号本质上也是用户账号,但管理员权限与平台功能绑定更紧密,建议单独按"管理员管理"流程进行配置。
创建管理员
- 进入 管理员管理 → 管理员列表
- 点击"新建管理员"(或在用户列表中选中用户后提升权限,具体以页面为准)
- 为管理员分配角色
- 保存后使用该账号登录管理后台
提示
权限控制以"角色"为核心。不同角色对应不同管理能力;超级管理员可管理角色与权限。
角色管理
进入 管理员管理 → 角色管理 查看与维护角色。
系统内置角色(不可随意删除/修改)通常包括:
- superadmin(超级管理员):拥有全部管理权限,可管理用户、角色、比赛、题目、队伍等
- admin(管理员):可管理比赛、题目、队伍等日常运营能力
- tenant(租户管理员):通常用于多租户场景,偏向"管理自己创建的比赛"与题目维护
- player(选手):普通参赛角色,仅具备参与比赛相关权限
提示
如需更细粒度的权限控制,可以创建自定义角色并分配权限(仅超级管理员可创建/修改/删除角色)。
系统设置
基础配置
- 进入 系统管理 → 系统配置
- 配置平台基础信息:
- 平台名称:显示在页面标题
- 平台 Logo:上传平台 Logo
- 平台描述:首页显示的描述文字
- 联系邮箱:技术支持邮箱
Flag 配置
配置 Flag 格式:
- Flag 前缀:默认
flag{ - Flag 后缀:默认
} - Flag 长度:动态 Flag 的随机字符串长度
邮件配置
配置 SMTP 邮件服务,用于发送注册验证、密码重置等邮件:
- 进入 系统管理 → 邮件配置
- 填写 SMTP 信息:
- SMTP 服务器:如
smtp.gmail.com - SMTP 端口:如
587 - 发件人邮箱:如
noreply@example.com - SMTP 密码:邮箱密码或授权码
- SMTP 服务器:如
- 点击"测试连接"验证配置
- 保存配置
备份与恢复
平台提供后台内置备份能力,建议将其作为日常备份手段,并配合运维侧的数据库与文件备份形成完整灾备方案。
内置备份入口
进入 系统设置 → 备份与恢复(或直接访问 /admin/settings,以页面为准)。
创建备份
- 进入备份页面
- 点击"创建备份"
- 等待备份完成后,在备份列表中查看新生成的备份
下载备份
建议将备份下载并保存到本地或对象存储,避免仅保存在服务器本机。
- 在备份列表中选择目标备份
- 点击"下载"
- 保存 ZIP 文件并做好备份归档(建议按日期/版本号命名)
上传备份
当需要跨服务器迁移或导入历史备份时,可以上传备份 ZIP 文件。
- 点击"上传备份"
- 选择备份 ZIP 文件
- 上传成功后在备份列表中确认已出现对应备份记录
恢复备份
恢复会覆盖现有数据,建议在低峰期执行,并提前做好兜底备份。
- 在备份列表中选择目标备份
- 点击"恢复"
- 按页面提示确认恢复操作
- 恢复完成后验证:登录、比赛/题目、容器化题目启动等关键功能
注意
内置备份更适合平台级配置与业务数据的快速备份与迁移。对生产环境,仍建议保留 MySQL(mysqldump)与 uploads 的独立备份,以应对更严重的灾难场景。
更多运维侧的备份与恢复建议请参考:备份与恢复
数据统计
平台概览
- 进入 仪表盘
- 查看平台统计数据:
- 用户总数:注册用户数量
- 题目总数:平台题目数量
- 比赛总数:已创建的比赛数量
- 提交总数:Flag 提交次数
用户活跃度
查看用户活跃度统计:
- 日活跃用户:每日登录用户数
- 解题趋势:每日解题数量
- 热门题目:解题人数最多的题目
导出数据
支持导出以下数据:
- 用户列表:导出所有用户信息
- 题目列表:导出所有题目信息
- 比赛数据:导出比赛排行榜和提交记录
安全建议
账号安全
- ✅ 修改默认管理员密码
- ✅ 定期更换密码
- ✅ 不要共享管理员账号
平台安全
- ✅ 定期备份数据库
- ✅ 监控容器资源使用
- ✅ 限制容器生存时间
- ✅ 定期清理过期容器
- ✅ 配置防火墙规则
- ✅ 使用 HTTPS
题目安全
- ✅ 使用动态 Flag 防止作弊
- ✅ 限制 Flag 提交频率
- ✅ 记录所有提交日志
- ✅ 监控异常提交行为
常见问题
如何批量导入题目?
目前支持通过 Vulhub 题库批量导入漏洞环境题目。如需导入自定义题目,建议使用 API 接口批量创建。
容器启动失败怎么办?
- 检查 Docker 服务是否正常运行
- 查看容器日志,定位错误原因
- 检查镜像是否存在
- 确认端口映射配置正确
如何限制用户提交频率?
在系统配置中,可以设置 Flag 提交间隔时间,防止暴力破解。
获取帮助
如果遇到问题,可以:
- 查看 常见问题
- 查看 API 文档
- 提交 GitHub Issue
- 联系技术支持: 5829662@qq.com