Providers
Configure services for captcha, email, uploads, scoring, moderation, and more.
Providers connect rCTF to services such as email, object storage, captcha, and scoring. You choose an implementation with name and configure it through options.
Provider format
All providers follow the same configuration pattern:
providerField: name: provider-type/provider-name options: key: valueThe name selects the provider, while options contains its settings. Most of those settings can also be supplied through environment variables.
Available providers
| Type | Config Field | Available Providers | Default |
|---|---|---|---|
| Captcha | captcha.provider |
captcha/recaptcha, captcha/hcaptcha, captcha/turnstile |
None (disabled) |
email.provider |
emails/smtp, emails/ses, emails/postmark, emails/mailgun |
None (disabled) | |
| Uploads | uploadProvider |
uploads/local, uploads/s3, uploads/gcs |
uploads/local |
| Scoring | scoreProvider |
scores/classic, scores/sekai, scores/steep, scores/jammy, scores/genni, scores/legacy |
scores/classic |
| Moderation | avatarsModeration.provider |
moderation/openai |
None (disabled) |
| Messages* | bloodBot.destinations[].provider |
messages/discord, messages/telegram |
None (disabled) |
| Analytics | analytics.provider |
analytics/google, analytics/cloudflare |
None (disabled) |
| Instancer | instancers |
instancers/docker, instancers/k8s |
None (disabled) |
| Admin Bot | adminBot.provider |
admin-bots/rctf-ts |
None (disabled) |
Providers marked “None (disabled)” are optional. Their features remain unavailable until a provider is configured.
* Unlike the other providers, message providers are not selected by a top-level config field. They are nested inside each blood bot destination entry, so the same deployment can post to multiple destinations using different providers.