快速上手
CBCTF 需要部署在 Kubernetes 集群内,包括只使用静态题的场景。推荐通过 Helm 安装平台及其数据库、缓存和共享存储配置。
1. 准备集群和存储
- 准备 Kubernetes、kubectl、Helm,以及可拉取平台、worker 和题目镜像的节点。
- 为平台数据选择支持
ReadWriteMany的 StorageClass。动态附件输入与抓包文件需要与运行时 Pod 共享数据。 - 使用 VPC 题目时安装 Kube-OVN 和 Multus;使用虚拟机题目时再安装 KubeVirt。
- Chart 不会替你安装 CNI、KubeVirt、Ingress Controller 或存储 provisioner。具体步骤见集群准备。
2. 安装平台
修改 values.yaml:至少设置公开地址 cbctf.host、cbctf.gin.origins、Ingress 域名、StorageClass、JWT 密钥和数据库密码。完整示例、外部数据库及持久化说明见 Helm 部署。
如使用自行打包的 Chart 和镜像,请确认二者版本匹配,并在 values 中指定镜像地址与版本。
3. 首次登录
首次初始化数据库且 admin 分组没有用户时,日志会输出初始凭据:
访问 https://你的域名/platform/#/login,使用 admin 和日志中的随机密码登录。在个人设置中修改密码,然后进入 /platform/#/admin/dashboard。
若通过端口转发临时检查页面:
直接打开 http://localhost:8000/platform/。根路径跳转、邮件链接和 OAuth 仍使用 host 设置的公开地址;端口转发不会自动修改它。
4. 完成第一场比赛
- 在「系统管理」核对公开地址、注册开关和默认注册分组;将默认分组设置为 RBAC 页面中实际的
user分组 ID。0不会自动分配用户组。 - 在「SMTP」配置发信账号并发送测试邮件。本地注册会发送验证邮件,参赛操作要求账号已验证。
- 在「题目管理」创建静态题,填写
static{hello},按需上传附件。 - 创建比赛,设置开始/结束时间、Flag 前缀和队伍人数。
- 在比赛管理的「题目」页添加题目,设置分数并取消题目隐藏;确认比赛本身也已公开。
- 用普通选手账号验证邮箱、创建队伍,待比赛开始后初始化题目并提交对应前缀的 Flag。
