记载一次CTFd平台搭建及运维

前面的壁画

战队招新赛要打了,这几天也是忙着尝试Docker环境的部署,本来也没什么问题,从github上面拉一下就好了,自己起环境总是出现一堆乱七八糟的问题,很无解。

感谢 @Richard 大手子的帮忙,最后算是搭起来了这个平台,这里记录一下自己搭建环境以及踩坑的过程,以及自己后续运维该环境的一些心得吧。

CTFd github 地址: https://github.com/CTFd/CTFd

CTFd docs地址: https://docs.ctfd.io/

搭建

这里使用的CTFd版本为3.1.1,一切以该版本为准。

本地直接起服务

这是我在docker起不来之后尝试的,大概遇到的坑都是系统兼容问题。

例如Ubuntu 20.04 删掉了 python2 的 pipe,导致安装 requirements.txt的时候找不到pip命令。

解决方法:https://linuxize.com/post/how-to-install-pip-on-ubuntu-20.04/

还有一些是关于 requirements.txt 文件里面需要的python库函数直接没有的问题,有些库太新了,这就有点无解,去弄轮子安装或者调低版本号(其实也不行,可能会有版本冲突)。

Docker起CTFd

Docker 当然才是重点,我是用opensuse发行版本起的Docker。这里假设你是一台没有安装任何东西的白板Linux的发行版本,那么你需要:

前戏

这里用的是opensuse,如果是例如Ubuntu请使用 apt

更新源:

$ sudo zypper update
$ sudo zypper upgrade

安装git及拉取CTFd:

$ sudo zypper install git
$ git clone https://github.com/CTFd/CTFd.git

起Docker

下载完成后,进入目录启动服务:

$ docker-compose up -d

会需要拉取镜像,以及根据 requirements.txt 安装 python 需要的一些配置文件库。

如果你是需要在本地起服务,那么请先确保本地有python-pip2环境,然后运行以下:

$ pip install -r requirements.txt
$ python serve.py

具体的在github仓库里面的README文档已经有了具体描述。

踩过的一些坑

  • 对于clone下来的CTFd文件,根据自身需求进行修改。例如Dockerfile换源等等(源原为debian)。没有科学上网的时候,请别相信自己的网速。
  • 遇到如下问题:
2020-09-28T14:09:41.864089908Z [2020-09-28 14:09:41 +0000] [31] [INFO] Booting worker with pid: 31 2020-09-28T14:09:43.933141974Z [2020-09-28 14:09:43 +0000] [32] [INFO] Booting worker with pid: 32 2020-09-28T14:09:44.317436676Z [2020-09-28 14:09:44 +0000] [33] [INFO] Booting worker with pid: 33 2020-09-28T14:09:44.795236476Z [2020-09-28 14:09:44 +0000] [34] [INFO] Booting worker with pid: 34
......

这篇文章中详细提出了解决方案:

将 requirements.txt 中的 gevent 版本号删除。

猜测可能是库源的问题,这个问题一度卡了我两天,很自闭。

运维

setup

起了之后进入默认的setup

填写赛事名称、赛事简介以及团队赛或者单人赛。

管理员名称、邮箱以及密码。

调整主题风格以及颜色。

赛事开始以及结束时间

MajorLeagueCyber​​(MLC)是由CTFd开发人员编写和维护的网络安全事件跟踪程序。用来统计数据,实时分享等等。

去官网注册一个号,创建及设置赛事。

选择finish,环境就起好了。

关于admin界面的一些介绍

有了root权限之后就可以做一些奇奇怪怪怪的事情啦~

statistics

查看CTFd的一些状态,

查看多少个用户注册,以及已经上线的总分和题目数量信息。

每一个分数的得分情况等等,这些具体什么样我现在也不是很清楚,等上线了就有图片了,再来更新吧。

Notifications

公告,可以编辑公告的类型,是否有提示音等等。注意公告本身并不支持Markdown类型。

Pages

添加CTFd的新页面,动态添加,改后台代码同理。

目前倒没发现有再添加其他页面的需求,等有了再来试试吧。

Users & ScoreBoard & Challenges

管理用户、得分、题目的界面。

Submissions

管理提交信息的页面,包括错误提交以及正确提交。

Configuration

网站的一些配置信息。

踩过的一写坑

无法删除题目、用户甚至公告?

原来是学校内网限制了无证书的delete操作……上了证书之后就好了。

修改/添加页面?

在page进行操作,例如删掉广告等等。注意要用html代码书写,也可以放点小彩蛋什么的。

比赛开始前先上题

上完题之后,设置比赛开始时间,就可以在比赛开始的时候直接让一部分可见。

至于后期上的题,可以在题目状态里设置成Hidden。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇