About this project

ctfd-setup is a CLI utility designed to address CTFd's lack of native configuration file support and setup API. It enables developers to version their CTFd setup configuration, making deployments reproducible and shareable for debugging or infrastructure replication. The tool provisions CTFd instances from YAML configuration files, CLI flags, and environment variables. Key features include: - **YAML Configuration**: Define appearance settings, admin credentials, mode, and custom pages in a version-controlled YAML file. The tool encourages versioning this file for easy re-deployment during testing or disaster recovery. - **Schema Generation**: Generate a JSON Schema for YAML validation using `ctfd-setup schema`, with IDE support for VSCode and other editors. - **GitHub Actions Integration**: Use the `ctfer-io/ctfd-setup` action to automate CTFd setup in CI/CD workflows. - **Drone CI Integration**: Deploy using the `ctferio/ctfd-setup` Docker image in Drone CI pipelines. - **Docker/Kubernetes Support**: Can be used as an initial container in Docker and Kubernetes deployments. - **Custom Pages**: Deploy custom pages (like index pages) via YAML configuration, a feature not available through CLI or CI integrations. - **Security**: Supports `from_env` objects to avoid committing sensitive credentials like admin passwords. The tool is built on top of the CTFd API and maps the setup functionality that the frontend calls. It's designed for teams running Capture The Flag competitions who need reliable, version-controlled infrastructure management. Built in Go, the project includes CodeQL analysis, OpenSSF Scorecard, and SLSA Level 3 supply chain security badges, indicating a focus on security and best practices.