Skip to main content



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.

Hosted CTFd

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.

  1. Official releases are considered stable releases and are always the safest way to deploy CTFd.

  2. Code in the master branch of CTFd is considered beta code. While it may be buggy or broken, every attempt is made to keep the master branch functioning properly.

  3. Alpha code with the latest changes can be found in unique branches in CTFd until they are merged into master.

Docker Image

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. ctfd/ctfd:3.4.1).

Docker Compose

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 docker-compose up.


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.

Manual Download

If you are running CTFd from a zip folder that was downloaded, you can download the latest version of that zip,