前段时间发现了一个界面精美的CTF平台-H1ve,发现它是在CTFd的基础上进行美化的。然后,我们团队的lemon搭建了一下,由于某些原因不能用了(服务器到期)。于是我参考其搭建笔记又搭了一遍,发现了几个新的问题。继续总结一下搭建过程及所可能遇到的问题吧。。。
Centos 7 64位(其他版本暂未测试)
Docker
python2.7
准备一个云服务器,阿里云、腾讯云和华为云均可。镜像选择Centos 7.x 64位的,只要是Centos 7 64位就行,具体版本无所谓。
1.安装所需软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 bind-utils
2.设置yum源
sudo yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
设置yum源主要是提高yum下载速度
3.安装docker
sudo yum install docker-ce
如果安装失败,可采用下面的脚本脚本安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
4.启动并加入开机启动
sudo systemctl start docker #或sudo service docker start
sudo systemctl enable docker
5.验证是否安装成功
docker version
1.安装epel-release
yum -y install epel-release
2.安装python-pip
yum -y install python-pip
如果出现未找到匹配的参数: python-pip 错误:没有任何匹配: python-pip
(1)可能原因:
Centos中有的源是被禁用的,通过以下命令可以查看启用的源和禁用的源。
#查看启用的源列表
yum repolist
#查看禁用的源列表
yum repolist disabled
查看之后,发现epel在禁用列表里。
(2)修复方法:
启用的方法:
vi /etc/yum.repos.d/epel.repo
将第一个和第三个的enabled=0改成enabled=1,第二个是测试版的可能不稳定所有别修改。
修改后就可以安装python-pip
了。
也可参考:
CentOS下使用yum安装python-pip失败的完美解决方法
3.升级pip
pip install --upgrade pip
如果出现ModuleNotFoundError: No module named 'pip._internal'
(1)可能原因:
与旧版冲突导致了这个报错。
(2)修复方法:
python -m ensurepip
python -m pip install --upgrade pip
更多修复方法参考:
ModuleNotFoundError: No module named ‘pip._internal’ , pip 无法下载软件 解决办法
4.安装docker-compose
pip install docker-compose
如果出现ReadTimeoutError: httpConnectionPool(host='pypi.python.org', port=443): Read timed out
(1)可能原因:(暂时我不知道)
(2)修复方法:
pip --default-timeout=200 install -U docker-compose
如果出现
由于忘了截图了,上边都没有配图。但这个发现我们团队的lemon截图了,于是拿来即用。
(1)可能原因:
缺少openssl-devel支持
(2)修复方法:
yum install gcc libffi-devel python-devel openssl-devel -y
也可参考:解决"command ‘gcc’ failed with exit status 1"错误问题
然后重新使用pip安装docker-compose
pip install docker-compose
5.验证是否安装成功
docker-compose version
如果出现/usr/lib/python2.7/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.8) or chardet (2.2.1) doesn't match a supported version!
(1)可能原因:
python库中urllib3 (1.25.8) or chardet (2.2.1) 的版本不兼容
(2)修复方法:
pip uninstall urllib3
pip uninstall chardet
pip install requests
如果出现from backports.shutil_get_terminal_size import get_terminal_size ImportError: No module named shutil_get_terminal_size
(1)可能原因:
1)未安装ipython或安装有问题(我遇到的是这个原因)
2)(第二个原因暂时不清楚)
(2)修复方法:
1)针对原因1)
,可以用pip安装ipython:
pip install ipython
如果安装之后,还有这个错误,可使用下面这个命令:
pip install --force ipython
2)针对原因2)
,报错信息显示在/usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py
的from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size
出错。
sudo vi vi /usr/lib/python2.7/site-packages/IPython/utils/terminal.py
打开此脚本
将出错的代码段修改如下:
然后再次输入进行测试
docker-compose version
注意:如果docker-compose版本过低,则无法启动H1ve-CTFd
开源平台地址
https://github.com/D0g3-Lab/H1ve
(1)安装git
一般情况下Centos上可能没安装git
,从github上克隆项目需要用到这个。(当然也可以用本地自己的电脑下载好,然后上传到服务器。这样的话,就不需要安装git)
安装git命令:
git clone http://github.com/D0g3-Lab/H1ve.git
(2)配置docker源为国内源
这个主要是因为当拉取镜像时,由于远端仓库的服务器是在国外,国内用户拉取镜像的速度特别慢,或很可能都访问不了,产生报错。
下面有我发现的两个好用的国内docker源:
1)阿里云镜像加速器
https://(yourid).mirror.aliyuncs.com
2)ustc(中国科学技术大学)
https://docker.mirrors.ustc.edu.cn
下面是以阿里云镜像加速器为例,配置docker国内源:
阿里云的docker镜像加速器需要注册账号,每个人都有自己唯一的地址。
可以采用里边给定的配置docker镜像加速器的方法,也可以:
(1)使用vi编辑器写入/etc/docker/daemon.json
vi /etc/docker/daemon.json
添加下面内容:
{
"registry-mirrors": ["https://(yourid).mirror.aliyuncs.com"]
}
保存退出
(2)重启docker
sudo systemctl daemon-reload
systemctl restart docker
进到下载好的项目H1ve根目录,执行下面的命令:
docker-compose -f single.yml up
默认的端口是8000(可在Dockerfile文件中进行修改,尽量不要改),访问一下服务器的IP地址,就会发现搭建成功了。
如果运行过程中出现响应码500错误
,重启环境即可(暂时没发现好的方法解决)
在项目根目录下,重启命令:
docker-compose -f single.yml down
docker-compose -f single.yml up
1.修改首页信息
即修改下面箭头所示信息:
修改方法如下:
然后修改下面这个文件即可:
2.修改首页logo
如果要换页面首页的logo的话,在服务器里找到下面这个文件替换即可:
当然我只是测试了下,不知道替换后会不会侵权,能不替换还是不要替换了。也可以替换一些其他的地方信息,但不晓得会不会侵权。我只知道如果修改后用于商业用途是一定会侵权的,不用作商业用途应该不会侵权。
搭建过程中,解决报错还是挺有趣的,不仅培养了自己的解决报错的能力,而且还可以让自己产生一些思考,真的挺不错的。继续努力吧,做一个奋进的精神小火。。。