关于golang:搭建-CTFd-平台

5次阅读

共计 1573 个字符,预计需要花费 4 分钟才能阅读完成。

当初 CTF 较量很火,咱们学校也要搞一个较量,搭建平台这些活就由我来干了,在这过程中遇到了一些问题,做个记录,不便当前再搭建的时候操作。

平台抉择

我抉择的是 CTFd 这个框架,网上的材料很多,配上插件,搭建动静靶机靶场很不便。

查找材料

一开始的时候是打算手动装置各种环境的,不过当我看到有提供了用 docker 装置的形式后,还是打算用 docker 了,一是不便,而是当前即便在不同的环境上搭建,都是一样的操作。

下载我的项目

我的项目地址: github, 这是我新建的一个仓库,从分支 批改而来的,能够间接跑起来,次要是修复了一下依赖,原我的项目有些库曾经过期了。

git clone https://github.com/zaunist/CTFD-single.git

搭建过程

进入方才下载下来的文件夹内

cd CTFD-single/

增加 docker hub 镜像, 批改 /etc/docker/daemon.json 文件, daemon.json 里能够定义不少参数,我这里只设置了镜像地址和 dns 地址。

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/",
                      "https://nrbewqda.mirror.aliyuncs.com"],
  "dns": ["10.200.4.1"]
}

设置 docker swarm

sudo docker swarm init

构建 docker

sudo docker-compose up -d

到这里就曾经构建实现,拜访 8000 端口就能够增加题目,增加较量

## 踩坑

### dns 解析

这个问题是咱们学校外部导致的,学校强制要求应用学校提供的 dns 服务器,如果应用默认的 dns 解析或者设置成了其它的地址,构建 docker 镜像时会出错。解决办法就是设置为学校外部的 dns,就是下面的 “10.200.4.1”

tcpdump 抓包

依赖

谬误一:

/usr/local/lib/python3.7/importlib/_bootstrap.py:219:RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility

在 CTFd 我的项目中,应用到了 gevent, 而徒弟提供的 single 分支曾经很久没有更新了,外面应用的是 1.4 版本,然而 1.4 版本不反对 python3.8, 而基于 alpine 构建 docker 默认就应用 python3.8,因而须要对 gevent 进行降级,我更换成了最新的 20.9.0 版本。

谬误二:
错误信息找不到了,然而这次是因为短少一个库,在 requirements.txt 中增加 Flask-APScheduler==1.11.0 即可。

谬误三:
构建 docker 时没有指定 python 版本,从清华源安装包的时候显示包不存在,我去清华镜像站查了一下,须要指定 python2 和 python3 的版本才行, 批改之前 dockerfile 文件局部内容

    apk update && \
    apk add \
        python \
        python-dev \
        linux-headers \
        libffi-dev \
        gcc \
        make \

批改之后

    apk update && \
    apk add \
        python3 \
        python3-dev \
        linux-headers \
        libffi-dev \
        gcc \
        make \

总结

遇到的问题也就这几个,然而花了一天工夫才全副解决,花了最多工夫的是 gevent 的兼容问题,一开始认为本人有哪里配置错了,重复的构建 docker,起初搜寻了很久才在一个 github 的 issue 上面看到他人的评论,晓得了以后版本 gevent 不反对 python 3.8, 这才解决了问题。善用 github,之前别的问题也是在 issue 下找到的解决办法。

公众号:没有幻想的阿巧 后盾回复 “ 群聊 ”,一起学习,一起提高

正文完
 0