> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# 快速上手

CBCTF 需要部署在 Kubernetes 集群内，包括只使用静态题的场景。推荐通过 Helm 安装平台及其数据库、缓存和共享存储配置。

## 1. 准备集群和存储

- 准备 Kubernetes、kubectl、Helm，以及可拉取平台、worker 和题目镜像的节点。
- 为平台数据选择支持 `ReadWriteMany` 的 StorageClass。动态附件输入与抓包文件需要与运行时 Pod 共享数据。
- 使用 VPC 题目时安装 Kube-OVN 和 Multus；使用虚拟机题目时再安装 KubeVirt。
- Chart 不会替你安装 CNI、KubeVirt、Ingress Controller 或存储 provisioner。具体步骤见[集群准备](/deploy/cluster.md)。

## 2. 安装平台

```bash
helm repo add cbctf https://cbctf.0rays.club
helm repo update
helm show values cbctf/cbctf > values.yaml
```

修改 `values.yaml`：至少设置公开地址 `cbctf.host`、`cbctf.gin.origins`、Ingress 域名、StorageClass、JWT 密钥和数据库密码。完整示例、外部数据库及持久化说明见 [Helm 部署](/deploy/helm.md)。

```bash
helm upgrade --install cbctf cbctf/cbctf \
  -n cbctf --create-namespace -f values.yaml --wait --timeout 10m
kubectl get pods,pvc,svc,ingress -n cbctf
kubectl logs -n cbctf deployment/cbctf
```

如使用自行打包的 Chart 和镜像，请确认二者版本匹配，并在 values 中指定镜像地址与版本。

## 3. 首次登录

首次初始化数据库且 `admin` 分组没有用户时，日志会输出初始凭据：

```bash
kubectl logs -n cbctf deployment/cbctf | grep "Init Admin"
```

访问 `https://你的域名/platform/#/login`，使用 `admin` 和日志中的随机密码登录。在个人设置中修改密码，然后进入 `/platform/#/admin/dashboard`。

若通过端口转发临时检查页面：

```bash
kubectl port-forward -n cbctf svc/cbctf 8000:8000
```

直接打开 `http://localhost:8000/platform/`。根路径跳转、邮件链接和 OAuth 仍使用 `host` 设置的公开地址；端口转发不会自动修改它。

## 4. 完成第一场比赛

1. 在「系统管理」核对公开地址、注册开关和默认注册分组；将默认分组设置为 RBAC 页面中实际的 `user` 分组 ID。`0` 不会自动分配用户组。
2. 在「SMTP」配置发信账号并发送测试邮件。本地注册会发送验证邮件，参赛操作要求账号已验证。
3. 在「题目管理」创建静态题，填写 `static{hello}`，按需上传附件。
4. 创建比赛，设置开始/结束时间、Flag 前缀和队伍人数。
5. 在比赛管理的「题目」页添加题目，设置分数并取消题目隐藏；确认比赛本身也已公开。
6. 用普通选手账号验证邮箱、创建队伍，待比赛开始后初始化题目并提交对应前缀的 Flag。

后续参见[选手操作流程](/guide/features/playing.md)、[比赛管理](/admin/contests.md)和[题目管理](/admin/challenges.md)。
