配置说明
CBCTF 从内置默认值和 config.yaml 读取配置。Helm 会把 values 渲染成 /app/config.yaml,优先级高于内置默认值。
以下配置只来自部署配置,不进入 settings 表:
- PostgreSQL/GORM 配置:
gorm.* - Redis 连接信息:
redis.* - 数据存储目录:
path - Gin 监听地址和端口:
gin.host、gin.port
其他配置首次启动时写入 settings;之后以数据库值为准。系统配置不会写回 config.yaml。
上传大小限制已拆分为 gin.upload.picture、gin.upload.challenge、gin.upload.writeup。旧的 gin.upload.max 不再生效。
常用配置项
异步任务配置
Redis 同时用于缓存和 Asynq 任务队列。以下配置影响后台任务并发:
当靶机启动、附件生成或邮件发送堆积时,先检查 Redis 状态和任务日志,再根据资源情况调整对应队列并发。
Kubernetes 配置
Helm 与配置文件的关系
Helm 会把以下值渲染进 ConfigMap:
应用不从环境变量读取配置,也不为这些值生成 Secret。
首次启动行为
- 连接 PostgreSQL,创建
pg_trgm扩展(失败只记录警告) - 自动迁移数据表
- 初始化运行时策略设置、品牌配置、权限、默认角色、默认分组、Cron 任务和 OAuth 默认项
- 如果管理员组中没有用户,创建
admin用户并将初始密码打印到日志
在线配置
管理后台会展示固定部署参数;PostgreSQL/GORM、Redis、数据目录、Gin 监听地址和监听端口只能通过部署配置修改。
GeoLite2-City 数据库可通过管理后台上传,保存到 {path}/GeoLite2-City.mmdb。
固定部署参数修改后需要重启 Pod。
安全配置建议
:::warning
- 生产环境不要使用默认
gin.jwt.secret - 数据库、Redis、SMTP、OAuth、FRP token 使用强密码或随机密钥
host、Ingress 域名应与用户访问地址一致,gin.origins应包含前端页面的实际Origin- 部署在反向代理后时正确设置
gin.proxies /metrics只允许 Prometheus 或可信来源访问- 只将必要的目标加入
webhook.whitelist:::
