// challenge instances for CTF organizers

Don't be the Bad CTF.

Every instance a team starts gets its own microVM, and your docker-compose.yml runs inside it unchanged. We operate the servers in Seoul, Tokyo, Frankfurt and Atlanta.

isolation
1 VM per instance
billing
10-minute ticks
integration
CTFd, REST API
tail -f /var/log/chall.run/spawn.log 415 running
sample log · 09:00 is when CTFs start and servers fall over

01 right after the start

Most outages happenin the first minutes.

A made-up timeline, pieced together from public postmortems and our own experience. It's roughly what happens when every team's instance runs on a single server.

  1. Organizers post "good luck, have fun" in #announcements
  2. Challenges unlock. 812 teams press "start instance" in the same second
  3. The one docker host hits load average 97. SSH stops answering
  4. The OOM killer picks the postgres behind web/blog-v2. Of course it does
  5. #general: "is chall down?" (×140)
  6. Someone reboots the box. Every running instance, and every half-written exploit, is gone
  7. Top CTFtime comment: "bad ctf, infra died". You can guess how the weight vote went

$ diff bad-ctf.yml chall.run.yml

+1 microVM per instance

A fork bomb in one instance doesn't touch any other, not even the same team's next challenge. Each VM has its own kernel and cgroup limits, and no VM shares the docker socket.

+Capacity reserved for your event

With a Reserved plan, memory and vCPU on specific hosts are set aside for your start time. No other customer's instances are placed on those hosts.

+Queue instead of failures

Requests above capacity go into a queue rather than failing. CTFd shows players their position and estimated wait.

+TTL and automatic cleanup

You set the lifetime per challenge: 10 minutes for a quick one, a few hours for a long one, with or without player extensions. Expired instances are cleaned up, so forgotten ones don't sit on memory until 3 AM.

+Egress limits per VM

One team running a brute-force script won't slow down the network for the other 811.

03 pricing

Credits, countedin 10-minute ticks.

Usage is charged in credits per 10-minute tick, with no base fee. Approved events get free credits, so small CTFs cost nothing, and large ones still come in under running your own servers on AWS or Google Cloud.

04 community support

Free instancesfor small CTFs.

Every approved event gets 30,000 credits free, and student and non-profit events get up to $250 more each. We fill the credit pool together with our sponsors.

30,000
free credits for every approved event
$250
extra for student and non-profit events
$0
expected cost of a campus-sized CTF

Early access is paused.Reach us by email.

$ contact

We're not taking early-access requests while we get the beta ready. For event plans or any questions, send us an email.

support@quickmetal.kr send an email →