Production-ready CTFd deployment with curated plugins and themes. Clone, configure, run.
Built on CTFd 3.8.5.
| Plugin | Description | Author |
|---|---|---|
| ctfd-ldap-plugin | Active Directory authentication with AES-256 cache and team auto-assignment | defojeco |
| ctfd-dynamic-flag | Per-user/per-team computed flags (anti-sharing) via whitelisted hashing schemes | defojeco |
| ctfd-dynamic-values | Per-participant dynamic variables (unique IP/port/token) embedded in challenge text | defojeco |
| ctfd-plugin-multichoice | Multiple choice challenge type with shuffle and partial scoring | defojeco |
| ctfd-user-control-plugin | Profile lock, attempt limiting, and audit log | defojeco |
| chat-notifier | Discord / Slack / Telegram notifications | krzys-h |
| Theme | Description | Author |
|---|---|---|
| wmctf2025 | Clean modern theme with 3D scoreboard | wm-team |
| pixo | Retro CRT-style theme | jagdishtripathy |
| neon | Dark neon glow theme | chainflag |
Includes all plugins and themes. Ready to run out of the box.
git clone https://github.com/defojeco/ctfd-stack.git
cd ctfd-stack
cp .env.example .env
# Edit .env and set your passwords and secret key
docker compose up -dOpen http://localhost and complete the CTFd setup wizard.
Clean CTFd with no plugins and no extra themes. Use this if you want to pick your own plugins or just need a vanilla CTFd in production.
git clone https://github.com/defojeco/ctfd-stack.git
cd ctfd-stack
cp .env.example .env
docker compose -f docker-compose.minimal.yml up -dNo Dockerfile build needed — pulls the official ctfd/ctfd:3.8.5 image directly.
Note: The LDAP plugin requires additional dependencies (ldap3, cryptography). If you plan to use it, use the full stack — it builds the image with the required packages automatically.
Copy .env.example to .env and fill in the values:
DB_ROOT_PASSWORD=your_root_password
DB_PASSWORD=your_db_password
DB_USER=ctfd
DB_NAME=ctfd
SECRET_KEY=your_secret_key_hereGenerate a secret key:
python3 -c "import secrets; print(secrets.token_hex(32))"SSL is not enabled by default. To enable it:
-
Place your certificates in
./ssl/:./ssl/cert.pem./ssl/key.pem
-
Uncomment the HTTPS server block in
nginx.conf -
Uncomment the SSL-related lines in
docker-compose.yml -
Restart:
docker compose down && docker compose up -d| Component | Version |
|---|---|
| CTFd | 3.8.5 |
| MariaDB | 10.6 |
| Redis | 7 |
| Nginx | alpine |
- CTFd — the platform
- wmctf2025 theme — wm-team
- pixo theme — jagdishtripathy
- neon theme — chainflag
- chat-notifier — krzys-h
MIT — see LICENSE