概述
CTFd是一款基于Apache2.0的协议的开源CTF平台,最新版本目前为1.20。该平台功能强大,基本上能够满足目前的CTF竞赛需求,同时,该平台提供了强大的插件功能,可以自己进行插件开发实现自己的功能。
注意事项
本次平台的搭建是在本地虚拟机ubuntu 14.04 LTS下完成的,请保证系统环境正常。如果需要部署在云服务器上,请准备好ssh工具(推荐xshell)道理大体相同,做只是最后为了让访问更流畅需要做下优化,nginx+gunicorn 文章末尾会做说明!
部署平台
0.网络和系统环境
虚拟机的话最好使用桥接,提前排除这个出错的可能性,云服务器可以忽略这一点
安利一波系统下载地址,推荐使用国内镜像站下载:
1.安装git
sudo apt install git
2.安装pip
sudo apt install python-pip
3.安装Flask
sudo pip install Flask
至此如果就已经出现许多依赖问题,最好耐心解决掉,通常全新安装的系统出现的问题会比较多
4.下载CTFd
sudo git clone https://github.com/isislab/CTFd.git
chmod -R 777 CTFd/
下载后,你可能需要对config.py文件进行修改,通常我们在服务器上部署平台会先配置数据库,当然这个一直会出现很迷的问题,如果你只是在本地部署可以忽略这一条!数据库如何部署请自行百度
数据库部署后请修改CTFd目录下的config.py
文件:
vim使用科普-->命令模式下输入/后可以实现类似Ctrl+F的功能搜索文本内容,按n查找下一条,当然你也可以在本地git clone下载CTFd文件先修改后上传
原代码:
SQLALCHEMY_DATABASE_URI = os.environ.get('sqlite:///{}/ctfd.db?charset=utf8') or 'sqlite:///{}/ctfd.db'.format(os.path.dirname(os.path.abspath(__file__)))
修改为:
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'mysql+pysql://数据库用户名:用户密码@localhost/数据库名?charset=字符编码'.format(os.path.dirname(os.path.abspath(__file__)))
举例:
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'mysql+pysql://ctfd:123456@localhost/CTFd?charset=utf8'.format(os.path.dirname(os.path.abspath(__file__)))
以上是常规安装平台才需要做的步骤,安装方式下面会介绍
5.安装CTFd
在CTF维基https://github.com/CTFd/CTFd/wiki/Getting-Started 中写了详细的安装步骤。
常规方式
# 克隆库
git clone https://github.com/CTFd/CTFd.git
cd CTFd/
# 安装操作系统需要安装的包
./prepare.sh
# 安装python需要的包
pip install -r requirements.txt
# 运行CTFd
python serve.py
接下去会下载很多东西,也就是跑下脚本一键部署平台所需要的环境,如果出现红字报错或者各种依赖问题,可以尝试update或者solo下,每个人情况不一,此类问题自行解决
完成以上步骤只是在本地搭起服务器,要是想在公网(物理机)访问,还需要安装gunicorn
pip install gunicorn
sudo (gunicorn --bind 0.0.0.0:8000 -w 4 "CTFd:create_app()"&)
// 这里加了()还有&是为了那能够后台运行 [0.0.0.0]不用修改
//gunicorn的命令一定要进CTFd目录输入
//访问虚拟机(服务器)公网IP即可看见平台
如果你是在虚拟机部署,请切换为NAT连接,在VM虚拟网路编辑器上,将虚拟机的8000端口映射到本机上,即可实现物理机访问,桥接模式即可直接在局域网内共享平台
docker
git clone https://github.com/CTFd/CTFd.git
cd CTFd/
docker-compose up
然后访问链接 http://localhost:8000 即可
可以修改docker配置文件更改映射端口,我也准备去恶补下docker神器的使用了
✔推荐使用docker部署平台,无需苦恼环境问题,直接pull官方提供的依赖环境,搭建后的访问速度明显提升~
PS:在云服务器搭建,请先在安全组里开放8000端口
DIY
刚搭建好,肯定想着修改平台,你可以在CTFd/CTFd主题目录下慢慢修改,建议copy到本地使用编辑器Ctrl+F修改页面,这里就不多做介绍了,展示一下我自己的就好了,因为不喜欢花里胡哨,所以比较简陋,官方也有提供wiki https://github.com/CTFd 主题、插件都有~
整站镜像下载
如果你最终无法成功部署,只是想在本地局域网内使用,可以尝试下载博主搭建好的虚拟机镜像玩一玩,使用前注意重启虚拟机,因为快照是开机状态,NAT地址段可能不一样,需要重新获取
压缩包密码:qymua.com
(平台未进行任何配置和优化)
压缩包大小:3.01G
解压后大小:13G
压缩包MD5:ef601c06af91f4c7532cbeaac7b324f0
密码:da8m
思考
我们都知道不管是部署网站还是部署平台,配置环境都挺麻烦的,遇到问题也是常有的事情,那么利用BT面板一键部署环境以后,再按部就班部署平台是更顺利呢?还是遇到更多不可预测的问题?如果可以,那么后期维护会很方便,建议在本地模拟一遍再尝试在服务器上部署!