You must have played CTF challenges of jeopardy style. most of the time, the CTF challenges are hosted on the CTFd framework which is publicly available on GitHub. But some people create their own CTF website, where they host the CTF challenges. It is quite rare to see such websites as GoogleCTF and picoCTF. But if we are talking about a local CTF event, There are higher chances that an open-source CTF framework is used to host these CTF challenges. even, I, myself have used CTFd once while organising a CTF event. It was not that huge. there were around 150 participants from the college.
I am going to set up and review this framework. Both of these frameworks will have their own pro and cons that I will not point out directly. I will suggest you guys either use the docker container or use a different environment from the workspace because such framework requirements and setup can make a lot of changes to your Linux machine. But I have tested these before on my own system (workspace), and it worked perfectly fine without leaving any odd. so, I think you can just use your own system.
CTFd
This framework is easy to set up/configure on a local system or using a docker image. you can install is directly from the docker CLI utility as a docker image.
docker search ctfd
docker pull ctfd/ctfd
Once you install this, you can run it, exposing the docker port 80 to your given port.
docker run -p 8000:8000 ctfd/ctfd
And you will be asked to create the admin login for the first time.
Here you can setup you add the CTF details, rules, terms, challanges , style and many more things. You can choose a mode. it has two modes one for team and one for individual. There is a scoreboard where you can see the scores of players and teams. you can see the team members and players details.
You can even look for it on Github. You can clone it and run the following commands in order to run it.
bash prepapre.sh
flask run
There is one more way to run it on your system using a separate environment. Vagrant can help you with that. Vagrant is a virtual machines managers. you can think of it as a docker but the environment will have its own kernel and will take RAM, CPU etc. you can create virtual machines, run your application in it, halt it or destroy it once your task is completed.