Updating
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.
Official releases are considered stable releases and are always the safest way to deploy CTFd.
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.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
.
Git
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,