GZ:CTF平台搭建(单Docker)

由 Polze Li 发布

GZ:CTF平台搭建(单Docker)

基于https://gzctf.gzti.me/zh撰写

Step1 安装Docker

你需要安装 Docker 和 docker-compose

这里就不过多赘述docker的安装,这里是官网Docker官网,不会也可以去相关技术网站上搜索。

Step2 配置初始化参数及文件

在服务器中创建一个文件夹来放gzctf的配置文件mkdir /www/gzctf/

然后创建appsettings.json 文件(用于gzctf项目建设完后运行的配置文件),保存以下内容(需要自行修改的要自行修改)(注意gzctf使用的是postgresql数据库)

{
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=<Your POSTGRES_PASSWORD>" 
                //这里是配置数据库,数据库是postgresql,按照这个创建你的数据库,Password处需要修改成自己的密码
  },
  "EmailConfig": {
    "SenderAddress": "",
    "SenderName": "",
    "UserName": "",
    "Password": "",
    "Smtp": {
      "Host": "localhost",
      "Port": 587
    }
  },
  "XorKey": "<Your XOR_KEY>", //这里是配置动态flag加密密钥,自行设定即可
  "ContainerProvider": {
    "Type": "Docker", // or "Kubernetes"
    "PortMappingType": "Default", // or "PlatformProxy"
    "EnableTrafficCapture": false,
    "PublicEntry": "<Your PUBLIC_ENTRY>", // 外部访问地址,可以是 IP 或域名,用于提供给选手访问题目容器的地址。
    // optional
    "DockerConfig": {
      "SwarmMode": false,
      "Uri": "unix:///var/run/docker.sock"
    }
  },
  "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": 7,
    "ForwardLimit": 1,
    "TrustedNetworks": ["192.168.12.0/8"]
  }
}

然后创建compose.yml文件(用于Docker compose这个gzctf项目用的配置),保存以下内容(需要自行修改的要自行修改)

services:
  gzctf:
    image: registry.cn-shanghai.aliyuncs.com/gztime/gzctf:develop
    restart: always
    environment:
      - "GZCTF_ADMIN_PASSWORD=<Your GZCTF_ADMIN_PASSWORD>" #这里配置平台管理员密码,默认账户Admin
      # choose your backend language `en_US` / `zh_CN` / `ja_JP`
      - "LC_ALL=zh_CN.UTF-8"
    ports:
      - "80:8080"   #这里是平台运行端口,若80端口占用可以改为90: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>" #这里是刚才appsettings.json的数据库密码!
    volumes:
      - "./data/db:/var/lib/postgresql/data"

!注意这里!详情请查看官方文档

INFO
你有可能遇到网段冲突的情况,请参考相关更改 compose.yml 中的子网配置或 /etc/docker/daemon.json 中的网段配置。
networks:
  default:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.12.0/24

Step3 Docker换源(加速源)(非必须项,服务器非国内可以跳过)

因为种种原因,国内禁止了一切国内docker源,阿里、腾讯、中科大docker源纷纷下线,导致国内没有可以访问的docker源。这里找到一个可以用的docker加速源。

我们先到docker目录下cd /etc/docker/

然后创建或者修改daemon.json 输入vim daemon.json

i键后清除里面的内容然后将此复制进去

{
    "registry-mirrors": [
        "https://docker.1panel.live"
    ]
}

然后输入按esc 输入:wq保存退出

然后重启一下docker就可以了

Step4 Docker compose

输入docker compose up -d等待即可,等到db和gzctf都starting了就可以进去了(注意防火墙或者规则记得开端口)

然后进入ipxxx.xxx.xxx.xxx:你设定的端口(默认80)或者你的域名xx.xx(如果有绑定)

Step5 完成了

最后没有最后了,搭建gzctf最简单的办法已经完成了qwq

版权所有:lzz0403的技术博客
文章标题:GZ:CTF平台搭建(单Docker)
除非注明,文章均为 lzz0403的技术博客 原创,请勿用于任何商业用途,禁止转载

0条评论

发表评论