Run ./install.sh
from the project root folder
Make sure to complete the initial setup for CTFd on the webportal
To initialize the submodules, run this command after cloning the repo: git submodule update --init --recursive
To ensure that your submodules do not get out of sync, please set run git config --local submodule.recurse true
.
Both of these steps are done for you when you run install.sh
.
yarn start
Use CTRL + C
to stop the server.
After making any changes to the backend that cannot be hot-reloaded, you need to run yarn reload
to restart CTFd with your changes.
For linting locally you can install ruff with the following curl -LsSf https://astral.sh/ruff/install.sh | sh
Then run ruff check .
Vite provides hot module reloading. Most changes will be reflected on the page in real-time. If not, you can refresh the page.
You do not need to run any commands after making frontend changes.
This is a single-page app. To reach the vite entrypoint, go to /hello
.
All of the certs and config for the daemon are handled in the install script. You might run into an issue that systemd no longer wants to start the docker daemon. Modifying the service definition for the docker systemd service to run as root:root (User and group) should fix this.
You will also need to change ng/config.py to make DOCKER_HOST
point to your docker host.