ctfd-setup configuration file
CTFer.io ctfd-setup utility configuration file
.ctfd.yaml
Validate
Check your file against this schema
Opens the validator with this schema already loaded. Paste your
.ctfd.yaml and it validates in your browser — nothing is uploaded.
Reference
Fields
Generated directly from the schema, following local
$refs, to two levels of nesting.
| Field | Type | Description |
|---|---|---|
appearancerequired | object | Appearance of the CTFd |
appearance.namerequired | string | The name of your CTF, displayed as is |
appearance.descriptionrequired | string | The description of your CTF, displayed as is |
appearance.default_locale | string | The default language for the users |
theme | object | Theme displayed to end-users |
theme.logo | oneOf | — |
theme.small_icon | oneOf | — |
theme.name | string | The frontend theme name default: "core" |
theme.color | string | The frontend theme color |
theme.header | oneOf | — |
theme.footer | oneOf | — |
theme.settings | oneOf | — |
accounts | object | Accounts parameters, like rate limiting or default permissions |
accounts.domain_whitelist | string | The domain whitelist (a list separated by colons) to allow users to have email addresses from |
accounts.domain_blacklist | string | The domain blacklist (a list separated by colons) to blocks users to have email addresses from |
accounts.verify_emails | boolean | Whether to verify emails once a user register or not |
accounts.team_creation | boolean | Whether to allow team creation by players or not |
accounts.team_size | integer | Maximum size (number of players) in a team |
accounts.password_min_length | integer | Minimal length of passwords |
accounts.num_teams | integer | The total number of teams allowed |
accounts.num_users | integer | The total number of users allowed |
accounts.team_disbanding | string | Whether to allow teams to be disbanded or not. Could be inactive_only or disabled |
accounts.incorrect_submissions_per_minute | integer | Maximum number of invalid submissions per minute (per user/team). We suggest you use it as part of an anti-brute-force strategy (rate limiting) |
accounts.name_changes | boolean | Whether a user can change its name or not |
challenges | object | Challenge-related configurations |
challenges.view_self_submissionsrequired | boolean | Whether a player can see itw own previous submissions |
challenges.max_attempts_behaviorrequired | string | The behavior to adopt in case a player reached the submission rate limiting default: "lockout"one of: "lockout", "timeout" |
challenges.max_attempts_timeoutrequired | integer | The duration of the submission rate limit for further submissions |
challenges.hints_free_public_accessrequired | boolean | Control whether users must be logged in to see free hints |
challenges.challenge_ratingsrequired | string | Who can see and submit challenge ratings default: "public"one of: "public", "private", "disabled" |
pages | object | Pages global configuration |
pages.robots_txt | oneOf | — |
pages.additional | array | — |
major_league_cyber | object | MajorLeagueCyber credentials to register the CTF |
major_league_cyber.client_id | string | The MajorLeagueCyber OAuth ClientID |
major_league_cyber.client_secret | string | The MajorLeagueCyber OAuth Client Secret |
settings | object | Settings for resources visibility |
settings.challenge_visibility | string | The visibility for the challenges. Please refer to CTFd documentation (https://docs.ctfd.io/docs/settings/visibility-settings/) default: "private"one of: "public", "private", "admins" |
settings.account_visibility | string | The visibility for the accounts. Please refer to CTFd documentation (https://docs.ctfd.io/docs/settings/visibility-settings/) default: "public"one of: "public", "private", "admins" |
settings.score_visibility | string | The visibility for the scoreboard. Please refer to CTFd documentation (https://docs.ctfd.io/docs/settings/visibility-settings/) default: "public"one of: "public", "private", "admins" |
settings.registration_visibility | string | The visibility for the registration. Please refer to CTFd documentation (https://docs.ctfd.io/docs/settings/visibility-settings/) default: "public"one of: "public", "private", "admins" |
settings.paused | boolean | Whether the CTFd is paused or not |
security | object | Security of contents and accesses |
security.html_sanitization | boolean | Whether to turn on HTML sanitization or not |
security.registration_code | string | The registration code (secret) to join the CTF |
email | object | Email rules and server credentials |
email.registrationrequired | object | — |
email.registration.subject | string | Subject of the email |
email.registration.body | string | Body (or content) or the email |
email.confirmationrequired | object | — |
email.confirmation.subject | string | Subject of the email |
email.confirmation.body | string | Body (or content) or the email |
email.new_accountrequired | object | — |
email.new_account.subject | string | Subject of the email |
email.new_account.body | string | Body (or content) or the email |
email.password_resetrequired | object | — |
email.password_reset.subject | string | Subject of the email |
email.password_reset.body | string | Body (or content) or the email |
email.password_reset_confirmationrequired | object | — |
email.password_reset_confirmation.subject | string | Subject of the email |
email.password_reset_confirmation.body | string | Body (or content) or the email |
email.from | string | The 'From:' to sent to mail with |
email.server | string | The mail server to use |
email.port | string | The mail server port to reach |
email.username | string | The username to log in to the mail server |
email.password | string | The password to log in to the mail server |
email.tls_ssl | boolean | Whether to turn on TLS/SSL or not |
email.starttls | boolean | Whether to turn on STARTTLS or not |
time | object | Time settings of the CTF |
time.start | string | The start timestamp at which the CTFd will open |
time.end | string | The end timestamp at which the CTFd will close |
time.freeze | string | The freeze timestamp at which the CTFd will remain open but won't accept any further submissions |
time.view_after | boolean | Whether allows users to view challenges after end or not |
social | object | Social network configuration |
social.shares | boolean | Whether to enable users share they solved a challenge or not |
social.template | oneOf | — |
legal | object | Legal contents for players |
legal.tosrequired | object | — |
legal.tos.url | string | The URL to access the content |
legal.tos.content | oneOf | — |
legal.privacy_policyrequired | object | — |
legal.privacy_policy.url | string | The URL to access the content |
legal.privacy_policy.content | oneOf | — |
adminrequired | object | Admin accesses |
admin.namerequired | oneOf | — |
admin.emailrequired | oneOf | — |
admin.passwordrequired | oneOf | — |
mode | string | The mode of your CTFd, either users or teams default: "users"one of: "users", "teams" |
uploads | array | — |
Audit
What we found in this schema
- Declared draft: 2020-12
- 90 properties, 82% carrying a description, max nesting depth 7.
Standards
Specification sections for the keywords in this schema
| Keyword | Document | Section |
|---|---|---|
$defs | JSON Schema Core, draft 2020-12 | §8.2.4 — Schema Re-Use With "$defs" |
$id | JSON Schema Core, draft 2020-12 | §8.2.1 — The "$id" Keyword |
$ref | JSON Schema Core, draft 2020-12 | §8.2.3.1 — Direct References with "$ref" |
$schema | JSON Schema Core, draft 2020-12 | §8.1.1 — "$schema" |
additionalProperties | JSON Schema Core, draft 2020-12 | §10.3.2.3 — "additionalProperties" |
default | JSON Schema Validation, draft 2020-12 | §9.2 — "default" |
description | JSON Schema Validation, draft 2020-12 | §9.1 — "title" and "description" |
enum | JSON Schema Validation, draft 2020-12 | §6.1.2 — "enum" |
items | JSON Schema Core, draft 2020-12 | §10.3.1.2 — "items" |
oneOf | JSON Schema Core, draft 2020-12 | §10.2.1.3 — "oneOf" |
properties | JSON Schema Core, draft 2020-12 | §10.3.2.1 — "properties" |
required | JSON Schema Validation, draft 2020-12 | §6.5.3 — "required" |
type | JSON Schema Validation, draft 2020-12 | §6.1.1 — "type" |
Documents
- JSON Schema Core, draft 2020-12 — JSON Schema: A Media Type for Describing JSON Documents, A. Wright, H. Andrews, B. Hutton, G. Dennis, Eds., 2022. draft-bhutton-json-schema-01. An expired Internet-Draft with no formal standing in the IETF standards process; it is nonetheless the specification of record for JSON Schema 2020-12, published by json-schema.org.
- JSON Schema Validation, draft 2020-12 — JSON Schema Validation: A Vocabulary for Structural Validation of JSON, A. Wright, H. Andrews, B. Hutton, Eds., 2022.
- RFC 8259 (STD 90) — The JavaScript Object Notation (JSON) Data Interchange Format, T. Bray, Ed., 2017. The format a schema describes.
- RFC 6901 — JavaScript Object Notation (JSON) Pointer. Defines the pointer syntax used by $ref fragments and the ~0 / ~1 escapes.
Source
Attribution
This schema comes from SchemaStore, distributed under the Apache License 2.0. Copyright 2015–present Mads Kristensen and contributors. View the original file. The field table and audit on this page are generated by JSONTools.tools; the schema itself is unmodified.