Upgrades/Updates are managed for you by the CTFd Team on Hosted CTFd instances. You do not need to apply updates yourself on a Hosted CTFd instance.
Updating CTFd is a fairly simple process. In most cases outside of legacy CTFd versions (e.g. 1.x), the only step needed is to update the running code by running
git pull or updating the Docker image.
CTFd will typically take care of any migration steps required when upgrading versions. However before updating it is still recommended that you review the CHANGELOG to make sure that no breaking changes are being introduced and there are no manual steps required.
While it may in some situations be possible, it is not recommended to downgrade CTFd versions.
Upgrades on Hosted CTFd instances are handled by the CTFd Team for you. You do not need to manually manage your CTFd version. Updates, releases, bugfixes, etc. are all managed for you.
Self Hosted CTFd
Below will contain notes and instructions on updating CTFd for self hosted CTFd instances. These instructions apply to both Open Source CTFd and CTFd Enterprise.
The instructions will differ depending on how CTFd was installed.
Software Release Cycle
CTFd follows semantic versioning. What this means in practice is that a bugfix or minor release can typically be applied without any breaking changes or manual steps. Major releases will be where breaking changes or manual migrations will be shipped. However CTFd will always attempt to apply any migrations or changes required automatically.
When downloading or setting up CTFd it is important to know the following notes about how the CTFd code is managed.
Official releases are considered stable releases and are always the safest way to deploy CTFd.
Code in the
masterbranch of CTFd is considered beta code. While it may be buggy or broken, every attempt is made to keep the master branch functioning properly.
Alpha code with the latest changes can be found in unique branches in CTFd until they are merged into master.
CTFd automatically releases new tags for every new CTFd release. For example if you are running CTFd v3.4.0, there is a Docker image tagged
ctfd/ctfd:3.4.0 available on Dockerhub. To update a Docker image based installation of CTFd you simply need to pull the newer tag. In this example you can replace
ctfd/ctfd:3.4.0 with a newer version (e.g.
When using Docker Compose you should have a CTFd
docker-compose.yml file. Within this file there is either a
build field or an
image field within the CTFd service. If there is an image field, you can follow the above instructions for Docker Image and update the tag. Then run
docker-compose pull to pull the new image and
docker-compose up to bring CTFd back online.
If there is a build field then you would need to update your codebase by running
git pull or otherwise updating the code and then running
docker-compose build followed by
If you are running CTFd from source code that was managed by git, you can simply
git pull within the CTFd repo and this will automatically pull the latest version of the repository.
If you are running CTFd from a zip folder that was downloaded, you can download the latest version of that zip,