支社で使っている自作のCTFシステムは社内の全国CTF予選に出場するメンバーを選考するために,全国予選のシステムに準じた仕様にしている。
が,支社支店の従業員の教養目的という観点では,チーム機能と見栄え(支社長などの幹部が観戦する)が必要である。
よって,チーム機能とグラフ機能を備えた CTFd を Oracle VM VirtualBox にインストールして,テストしてみた。
インストールした環境
VMの設定
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を見るのが正解?
しかし,ここのBasic Installationもダメ。
Basic Deploymentのページ
https://github.com/CTFd/CTFd/wiki/Basic-Deployment
これにしたがってインストールしていく
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でokと思う。
$ sudo apt install docker-compose
3. Clone the CTFd repository with git clone https://github.com/CTFd/CTFd.git
$ git clone https://github.com/CTFd/CTFd.git
$ cd CTFd
4. Modify the docker-compose.yml file from the repository to specify a SECRET_KEY environment for the CTFd service.
python -c "import os; f=open('.ctfd_secret_key', 'a+'); f.write(os.urandom(64)); f.close()"
失敗,python3に
python3 -c "import os; f=open('.ctfd_secret_key', 'a+'); f.write(os.urandom(64)); f.close()"
失敗
に記載されているコマンド
$ python3 -c "import os; f=open('.ctfd_secret_key', 'a+b'); f.write(os.urandom(64)); f.close()"
が通った。
python2 と python3 の open() の modeの違いですね。
5. Run 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のHomeにあるインストール説明が乱暴で困った。