GZCTF比赛平台搭建
GZCTF官方文档:https://gzctf.gzti.me/
环境:ubuntu22.04、docker、GZCTF、
一、ubuntu安装docker
安装命令:
sudo apt install docker.io docker-compose
然后换源:
{
"registry-mirrors": [
"https://6kx4zyno.mirror.aliyuncs.com",
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com/",
"https://dockerproxy.com",
"https://docker.nju.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://dockerhub.azk8s.cn",
"https://docker.m.daocloud.io",
"https://docker.m.daocloud.io",
"https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com",
"https://noohub.ru",
"https://huecker.io",
"http://mirror.azure.cn/",
"https://dockerhub.timeweb.cloud",
"https://5tqw56kt.mirror.aliyuncs.com",
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev/",
"https://docker.ckyl.me/",
"https://docker.chenby.cn",
"https://docker.hpcloud.cloud",
"http://mirrors.ustc.edu.cn/"
]
}
然后重启进程:
sudo systemctl daemon-reload #重启daemon进程
sudo systemctl restart docker #重启docker
docker安装成功,可以拉取镜像。
还有一种方法通过安装宝塔面板,面板里安装docker,自定义源。==》来安装docker。(推荐这种)
二、拉取GZCTF
cd /home
mkdir JUSTCTF
cd JUSTCTF
sudo touch appsettings.json
sudo touch docker-compose.yml
这两个创建好的文件,GZCTF的配置文件
1、首先是appsettings.json:
{
"AllowedHosts": "*",
"ConnectionStrings": {
"Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=<Your POSTGRES_PASSWORD>"
},
"EmailConfig": {
"SendMailAddress": "a@a.com",
"UserName": "",
"Password": "",
"Smtp": {
"Host": "localhost",
"Port": 587
}
},
"XorKey": "<Your XOR_KEY>",
"ContainerProvider": {
"Type": "Docker", // or "Kubernetes"
"PortMappingType": "Default", // or "PlatformProxy"
"EnableTrafficCapture": false,
"PublicEntry": "<Your PUBLIC_ENTRY>", // or "xxx.xxx.xxx.xxx"
// optional
"DockerConfig": {
"SwarmMode": false,
"Uri": "unix:///var/run/docker.sock"
}
},
"RequestLogging": false,
"DisableRateLimit": true,
"RegistryConfig": {
"UserName": "",
"Password": "",
"ServerAddress": ""
},
"CaptchaConfig": {
"Provider": "None", // or "CloudflareTurnstile" or "GoogleRecaptcha"
"SiteKey": "<Your SITE_KEY>",
"SecretKey": "<Your SECRET_KEY>",
// optional
"GoogleRecaptcha": {
"VerifyAPIAddress": "https://www.recaptcha.net/recaptcha/api/siteverify",
"RecaptchaThreshold": "0.5"
}
},
"ForwardedOptions": {
"ForwardedHeaders": 5,
"ForwardLimit": 1,
"TrustedNetworks": ["192.168.12.0/8"]
}
}
需要修改部分:
<Your POSTGRES_PASSWORD>: 数据库密码、自己定义
<Your XOR_KEY>: 用于加密比赛私钥的随机字符串、随机定义
<Your PUBLIC_ENTRY>: 外部访问地址,可以是IP或域名
TrustedNetworks: 修改成自己的对应IP,防止网段冲突问题
2、docker-compose.yml 配置文件内容:
version: "3.0"
services:
gzctf:
image: gztime/gzctf:latest
restart: always
environment:
- "GZCTF_ADMIN_PASSWORD=<Your GZCTF_ADMIN_PASSWORD>"
# choose your backend language `en_US` / `zh_CN` / `ja_JP`
- "LC_ALL=zh_CN.UTF-8"
ports:
- "80:8080"
volumes:
- "./data/files:/app/files"
- "./appsettings.json:/app/appsettings.json:ro"
# - "./kube-config.yaml:/app/kube-config.yaml:ro" # this is required for k8s deployment
- "/var/run/docker.sock:/var/run/docker.sock" # this is required for docker deployment
depends_on:
- db
db:
image: postgres:alpine
restart: always
environment:
- "POSTGRES_PASSWORD=<Your POSTGRES_PASSWORD>"
volumes:
- "./data/db:/var/lib/postgresql/data"
需要修改部分有:
<Your GZCTF_ADMIN_PASSWORD>:初始管理员密码一定要和平台相符,GZ的是大于8位并且有大小写字母和数字。
<Your POSTGRES_PASSWORD>: 数据库密码和刚刚appsettings里面的数据库密码必须保持一致
平台创建,使用这个命令来搭建平台:
sudo docker-compose up -d
拉取成功。
访问ip+80
三、上传镜像到自己github镜像库
1、准备条件
-
获取Github的个人访问令牌(PAT),即Personal Access Token,需要确保 PAT 具有
read:packages
和write:packages
权限。
2、推送镜像
-
登录 GitHub Container Registry: 在终端或命令行中,使用 GitHub 用户名和 GitHub 的个人访问令牌(PAT)登录 GitHub Container Registry。
echo <PAT> | docker login ghcr.io -u <your-github-username> --password-stdin
将 <PAT>
替换为个人访问令牌,将 <your-github-username>
替换为 GitHub 用户名。
-
标记你的 Docker 镜像: 使用以下命令将 Docker 镜像标记为 GitHub Container Registry 镜像:
-
docker tag <your-image-name>:<tag> ghcr.io/<your-github-username>/<your-image-name>:<tag>
将 <your-image-name>:<tag>
替换为本地 Docker 镜像名与tag名,<your-github-username>
替换为 GitHub 用户名,<tag>
替换想要使用的标签(例如默认的latest
标签)。
-
推送 Docker 镜像到 GitHub: 使用以下命令将 Docker 镜像推送到 GitHub Container Registry:
docker push ghcr.io/<your-github-username>/<your-image-name>:<tag>
完成以上步骤后,就可以在 GitHub个人账号的 的 “Packages” 部分看到Docker 镜像了,但是该镜像默认为private镜像,Pull使用时需要先登录。