CTFd 架設筆記

CTFd 是一個可自建的 CTF 平台,提供了 online judge 、 計分板 等進行 CTF 所需要的功能。在此紀錄其安裝過程。

CTFd 架設筆記

因為課程需要需要建立一個 CTF 平台,經過一些 Survey 覺得 CTFd  相對輕量化,使用上也很簡易,因此挑選它,在此紀錄安裝過程。

CTFd 是一個可自建的 CTF 平台,提供了 online judge 、 計分板 等進行 CTF 所需要的功能。

使用環境

  • ubuntu 16.04
  • python 2.7.x
  • nginx
  • mysql

安裝套件

sudo apt-get install python-mysqldb
sudo pip install Flask
sudo pip install uwsgi -I

安裝CTFd

下載CTFd

git clone https://github.com/isislab/CTFd.git
cd CTFd

安裝CTFd

./prepare.sh

將CTFd連上MySQL

在資料庫中建立一個資料庫CTFd,不用建立內容,在CTFd第一次執行後會自動建立
修改CTFd目錄下的 config.py (此檔案在CTFd中的CTFd)

SQLALCHEMY_DATABASE_URI = 'mysql://[SQLaccount]:[SQLpasswd]@localhost/CTFd?charset=utf8mb4'

啟動CTFd

執行 serve.py 即可在 127.0.0.1:4000 看到你的站已經架起來了

設定Nginx

因為單純用flask框架開啟CTFd效能並不好,因此建議使用Apache或是Nginx,以下採用Nginx作為示範。
因為是使用 uwsgi 作為串接,因此需要更改Nginx的設定。

location / {
    include uwsgi_params;
    uwsgi_pass unix:/tmp/uwsgi.sock;
}

啟動CTFd

uwsgi -s /tmp/uwsgi.sock -w "CTFd:create_app()" --chmod-socket=666

其他

若有較大的檔案需要傳至CTFd,可增加Nginx設定。

client_max_body_size [size];

備份方法

  • 直接備份資料庫
  • 登入管理員帳號 -> Admin -> Config -> Backup