配置说明
CBCTF 使用 config.yaml 作为主配置文件。源码运行时,如果文件不存在,程序会从内置默认配置生成 config.yaml
并退出;修改后再次启动即可。Helm 部署时,Chart 会把 values 渲染成容器内 /app/config.yaml,并通过环境变量注入敏感配置。
环境变量支持 CBCTF_ 前缀覆盖配置,点号转换为下划线。例如 gorm.postgres.pwd 对应 CBCTF_GORM_POSTGRES_PWD。
上传大小限制已拆分为 gin.upload.picture、gin.upload.challenge、gin.upload.writeup。旧的 gin.upload.max 不再生效。
常用配置项
异步任务配置
Redis 同时用于缓存和 Asynq 任务队列。以下配置影响后台任务并发:
当靶机启动、附件生成或邮件发送堆积时,先检查 Redis 状态和任务日志,再根据资源情况调整对应队列并发。
Kubernetes 配置
Helm 与配置文件的关系
Helm Chart 会把以下敏感值放入 Secret,并用环境变量覆盖配置文件中的空值:
如果 cbctf.gin.jwt.secret、postgres.auth.password 或 redis.auth.password 留空,Chart 会在首次安装时生成随机值,并在升级时复用已有
Secret。
首次启动行为
- 连接 PostgreSQL,创建
pg_trgm扩展(失败只记录警告) - 自动迁移数据表
- 初始化系统设置、品牌配置、权限、默认角色、默认分组、Cron 任务和 OAuth 默认项
- 如果管理员组中没有用户,创建
admin用户并将初始密码打印到日志
在线配置
管理后台提供系统配置页面,可查看和更新部分运行配置,也可以触发服务重启。生产环境仍建议将关键部署参数固化在 Helm values、Secret 或配置管理系统中,避免 Pod 重建后配置漂移。
安全配置建议
:::warning
- 生产环境不要使用默认
gin.jwt.secret - 数据库、Redis、SMTP、OAuth、FRP token 使用强密码或随机密钥
host、gin.cors、Ingress 域名应保持一致- 部署在反向代理后时正确设置
gin.proxies /metrics只允许 Prometheus 或可信来源访问- 只将必要的目标加入
webhook.whitelist:::
