Production upgrades - correct procedure to follow

Hi,

I am about to upgrade our production discourse server (we self-host on EC2 as per the official installation instructions) and wanted to confirm the recommended approach.

We do not have the upgrade button enabled in the UI and so it will be done on the EC2 instance. Now, I believe there are 2 main ways to do this:

  • Rebuild our EC2 server which will pull a fresh copy of the discourse_docker GitHub repo and utilise the templates there i.e. web.template.yml is currently referencing base image discourse/base:2.0.20260209-1300. This approach would remove the current running server and start the new one.
  • Login to the existing EC2 server and perform the following commands to rebuild the current image and restart the container:
    • ./launcher rebuild app

I have 2 questions:

  1. Which approach should be used for normal maintenance?
  2. If we perform the rebuild app command does that still pull the main branch for the discourse_docker repo?

I have read the https://releases.discourse.org site and can see that version 2026.3.0 is not released yet and my understanding is that we should not use the latest of main versions of a release in production as they are still undergoing active development.

Any help would be much appreciated. Thanks.

If you want to upgrade to the latest version, you can manually upgrade via the admin dashboard.
If you want to upgrade to the esr version, simply specify esr at the end of containers/app.yml:

params:
  version: esr

Then rebuild the application.

Please ensure that your network connection is functioning properly.

1 Like

Thanks for the reply.

So by setting the version as esr does that override the base image used in the templates?

We do not want the upgrade enabled in the admin UI so will need a way to do this in the instance or by simply rebuilding the instance and letting our AutoScaler manage it.

If we use esr how does it get updated when a critical fix is pushed? Again, do we just simply rebuild via launcher/new EC2 instance on a monthly basis to incorporate any updates to the esr version?

Have you read Understanding Discourse release channels and Configure a supported tracking branch to get Discourse software updates? I would describe the difference more as having access to the latest changes right away, or receiving them a little later. The latter can be very helpful for custom developments that need to be adapted first. Otherwise, I would prefer access to the latest features and fixes. Of course, this carries a risk of new bugs, but the version that was frozen three weeks ago also contains bugs which might have already been fixed in latest, but usually not significant enough to warrant backporting to the last release.

Also keep in mind that downgrading is not supported, so if you are on a version after the current ESR, you need to wait for the next ESR to be published.

1 Like

If you are on a significantly old version at present, you might benefit from a git pull before the launcher command.

Ah, I missed the Configure a supported tracking branch to get Discourse software updates post.

From the answers so far I think I will use the release branch as we do a monthly update.

Many thanks for this.

1 Like