在Ubuntu上安装CTFd
我们在分社使用的CTF系统是为了筛选参加全国CTF预选赛的成员而设计的,与全国预选赛系统的规格相一致。
然而,从支公司员工的教育目的来看,团队功能和形象(包括支公司经理等高层的观察)是必要的。
因此,我在Oracle VM VirtualBox中安装并测试了一个带有团队功能和图表功能的CTFd。
我安装过的环境
虚拟机的配置
Oracle VM VirtualBox
Ubuntu 20.04.1 LTS 日本語 Remix
需要使用20GB ★此项很重要(默认的10GB不够用)
使用最小配置进行安装
Ubuntu的设置
请执行以下命令来更新软件包:
$ sudo apt update
$ sudo apt dist-upgrade
请用sudo apt install gcc make perl命令安装软件。
插入Guest Additions CD镜像。
用sudo shutdown -r now命令立即重启计算机。
ここでスナップショットを作成しておく
CTFdのインストール
まずは公式サイトのトップページ(README.md)を見る
README.mdにあるInstallは,かなり乱暴な記述。これを見て適当にやるとドツボにはまる。
特にpip install -r requirements.txtを成功させるのは至難の業。
ここは,wikiを見るのが正解?
然而,这里的基本安装也不行。
基础部署页面
https://github.com/CTFd/CTFd/wiki/基础部署
これにしたがってインストールしていく
1. Install Docker
リンク先
に書かれているとおり,
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
を行う。
2. Install Docker Compose
这个与手册不同,但我认为用apt应该可以。
$ sudo apt install docker-compose
使用git clone https://github.com/CTFd/CTFd.git 克隆CTFd存储库。
$ git clone https://github.com/CTFd/CTFd.git
$ cd CTFd
4. 从存储库中修改docker-compose.yml文件,为CTFd服务指定一个SECRET_KEY环境。
使用python -c命令,在执行过程中打开一个名为.ctfd_secret_key的文件,以读写模式打开(如果文件不存在,则创建一个新文件)。然后,使用os.urandom(64)生成一个随机字符串,并将其写入文件中。最后,关闭文件。
所列命令
$ python3 -c "import os; f=open('.ctfd_secret_key', 'a+b'); f.write(os.urandom(64)); f.close()"
这是关于Python2和Python3的open()函数mode参数的不同之处。
5. 运行 docker-compose up
$ sudo docker-compose up
在这里,从NAT网络上的另一台Ubuntu访问http://10.0.2.15/,结果被重定向到http://10.0.2.15/setup,我认为安装成功了。
印象
与其在Google等搜索中搜索”ctfd安装”,不如直接查看官方手册来得更方便,但是首页的README.md和wiki的主页上的安装说明过于粗糙,让人感到困扰。