The purpose of this documentation is to provide comprehensive guidance on the configured CTFd platform, detailing its architecture, functionality, installation procedures, configuration options, and usage guidelines. Additionally, it provides developer guidelines and troubleshooting steps. It does not cover third-party integrations beyond the ones specified within the document.
The project is operating system agnostic, relying on the Docker engine to meet compute, networking, and storage requirements. To streamline deployment and provide an effective user experience for participants, the project uses the cost-optimized E2 machine series, part of Google Cloud's general purpose machine family. It is recommended that the deployed instance meets the minimum hardware recommendations:
- 1 vCPU
- 2GB RAM
- 25GB Storage
The installation process is largely automated, so that organizers may focus on challenge creation and user issues.
The installation script installs CTFd without any client-server encryption. To integrate HTTPS connections, do the following:
- Navigate to the
ctf-framework/conf/nginx/
directory. - Generate a private key and an associated self-signed certificate.
openssl genrsa -out private.key 4096
openssl req -new -key private.key -out certificate.csr
openssl x509 -req -days 365 -in certificate.csr -signkey private.key -out self-signed-cert.crt
The following process assumes that the executing user has root or sudoer privileges:
- git clone https://github.com/DeveshChande/ctf-framework.git
- cd ctf-framework
- sudo ./setup.sh
Setup the ctfd deployment following the on-screen instructions as per your requirements.
The following plugin settings are have been tested and are recommended for local deployments:
- Containers:
- Base URL: unix://var/run/docker.sock
- Hostname for Docker Host: IP Address of the host machine that provides the docker environment
- Container Expiration in Minutes: 30
- Maximum per-container memory usage (in MB): 200
- Maximum per-container CPUs: 1