LoginSignup
1
0

More than 1 year has passed since last update.

UbuntuにCTFdをインストールする

Last updated at Posted at 2021-06-17

支社で使っている自作の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)を見る

image.png

README.mdにあるInstallは,かなり乱暴な記述。これを見て適当にやるとドツボにはまる。
特にpip install -r requirements.txtを成功させるのは至難の業。

ここは,wikiを見るのが正解?

image.png

image.png

しかし,ここのBasic Installationもダメ。

image.png

Basic Deploymentのページ
https://github.com/CTFd/CTFd/wiki/Basic-Deployment

image.png

これにしたがってインストールしていく

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にあるインストール説明が乱暴で困った。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0