配置说明
CBCTF 从内置默认值和 config.yaml 读取配置。Helm 会把 values 渲染成 /app/config.yaml,优先级高于内置默认值。
启动前请准备可读的配置文件,默认路径为 config.yaml,也可通过 -c <文件> 指定。使用 Helm 时通过 values 配置;应用设置不支持用环境变量覆盖。
以下项目需通过部署配置修改:
- PostgreSQL/GORM 配置:
gorm.* - Redis 连接信息:
redis.* - 数据存储目录:
path - Gin 监听地址和端口:
gin.host、gin.port - 运行时共享 PVC:
k8s.shared_volume_claim(空值回退到{namespace}-shared-volume)
可在线修改的运行设置在首次启动时采用配置文件中的初始值,之后通过「系统管理」维护。升级 Helm values 不会覆盖已经保存的在线设置,在线修改也不会写回配置文件。
数据库和任务日志级别分别使用 gorm.log.level、asynq.log.level。平台日志的查看与长期留存见监控与日志。
保存与生效
在「系统管理」保存后,不同设置的生效时机如下:
多副本部署需要让各副本重新加载配置。迁移命名空间时,请同时准备目标命名空间的授权、PVC,并安排已有靶机与生成器的清理;Helm 部署通常使用 Release 所在命名空间。
图片、题目附件和题解分别通过 gin.upload.picture、gin.upload.challenge、gin.upload.writeup 设置大小上限。
常用配置项
异步任务配置
Redis 同时用于缓存和 Asynq 任务队列。以下配置影响后台任务并发:
当靶机启动、附件生成或邮件发送堆积时,先检查 Redis 状态和任务日志,再根据资源情况调整对应队列并发。
Kubernetes 配置
抓包开关、Pod PriorityClass、worker 镜像和生成器池容量均可在「系统管理 → Kubernetes 配置」中查看和修改,保存到数据库后供后续新建实例及补池使用。已有实例不会自动重建或缩容,其他平台副本需重新加载配置。
预热、调度、缓存与回收机制见工作负载调度。启用 FRP 时使用 ClusterIP,否则使用 NodePort。
Helm 与配置文件的关系
Helm 会把以下值渲染进 ConfigMap:
上述值保存在应用配置 ConfigMap 中,请妥善限制其访问权限。镜像仓库拉取凭据另由 Secret 管理。
首次启动行为
- 自动准备平台所需的数据表和初始设置
- 提供默认品牌、角色、分组、定时任务和第三方登录配置
- 管理员组中没有用户时,创建
admin账号并在日志中输出初始密码;首次登录后请修改密码
在线配置
管理后台会展示固定部署参数;PostgreSQL/GORM、Redis、数据目录、Gin 监听地址和监听端口只能通过部署配置修改。
GeoLite2-City 数据库可通过管理后台上传,保存到 {path}/GeoLite2-City.mmdb。
固定部署参数修改后需要重新创建 Pod。registration.default_group: 0 表示不指定注册用户组;应先到 RBAC 页面查看实际分组 ID,再选择普通用户分组,避免新用户没有参赛权限。
安全配置建议
:::warning
- 生产环境不要使用默认
gin.jwt.secret - 数据库、Redis、SMTP、OAuth、FRP token 使用强密码或随机密钥
host、Ingress 域名应与用户访问地址一致,gin.origins应包含前端页面的实际Origin- 部署在反向代理后时正确设置
gin.proxies /metrics只允许 Prometheus 或可信来源访问- 只将必要的目标加入
webhook.whitelist:::
