Skip to main content

Overview

Deploybot is the application responsible for receiving application (i.e. challenge) deployment requests from CTFd. It receives deployment requests from CTFd, schedules that deployment on an underlying cluster and then makes the challenge available via a reverse proxy. Once the application is deployed the connection information is relayed to the requesting user.

Components

deploybot

deploybot is the application responsible for receiving application deployment requests from CTFd. It receives deployment requests from CTFd, schedules that deployment on an underlying Docker Swarm cluster, making the application available via sniproxy, and then providing the connection information to the requesting user.

sniproxy

sniproxy is the reverse proxy that sits in front of deployed challenge services for Hosted CTFd and self hosted deployments of CTFd-Enterprise and deploybot.

snibridge

snibridge is a sister application to sniproxy. snibridge is used to allow TCP clients to connect to TLS SNI services. Clients like netcat don't support TLS SNI so snibridge will accept connection from tools like netcat on a random port and then map it to an SNI enabled connection on sniproxy.

Note: In the provided docker-compose.yml example snibridge is commented out as it requires a significant number of ports to be open. The end user is free to uncomment it or schedule it outside of the provided docker-compose.yml.

Architecture