How do I manually update Discourse and Docker image to latest?


(Sam Saffron) #1

If you self-host Discourse, you occasionally need to run a manual update via the command line to get the latest security releases newest libraries. These updates are not picked up in admin/upgrade, which is why you’ll occasionally need to do this additional step.

  1. Discourse itself should be updated about twice a month, by clicking the “Update to Latest Version” button in your admin dashboard ( admin/upgrade). We do beta releases roughly once every week.

  2. Every two months we recommend SSH’ing into your web server (using putty or your favorite SSH client) and doing

    cd /var/discourse
    git pull
    ./launcher rebuild app
    
  3. As for Ubuntu updates, make sure you have automatic security updates enabled for your Ubuntu! The command is:

    dpkg-reconfigure -plow unattended-upgrades
    

    However, that just covers critical security updates. Every so often you should get all the OS updates like so:

    apt-get update
    apt-get dist-upgrade
    

Due to the way docker packaging has changed you may also have to update your docker from lxc-docker or docker-engine packages. One way to do that is via the Docker script here (it will warn about an existing install but should upgrade ok):

wget -qO- https://get.docker.com/ | sh

This will now use the docker-ce main versions.

This is completely safe, we have never seen anything get broken by base Ubuntu updates.

To summarize:

  • update Discourse twice a month via web updater
  • update the container every two months
  • update the OS every six months

You could double these numbers and still be fairly safe, e.g. update Discourse once a month, container every 4 months, OS once every 12 months, and so on.

But you really, really want automatic security updates enabled in Ubuntu, as listed above – all our Digital Ocean “one-time installs” already have automatic security updates set up.

FAQ

What is the right time to update?

It just depends on the time you have available and how close to bleeding edge you want to be. If you have non-official plugins, it is highly advisable to utilize a test/staging site. If you do not have any non-official plugins, you can likely upgrade immediately, but even then, some plugins may break for a couple of days as the team fixes them (there are a lot of them).

What is common practice when updating with many plugins installed?

If you have a lot of plugins, testing locally or on a test server is highly advised. Especially if you have non-official plugins, as something could have broke. If you find something does break, then it is a matter of, do you have time to fix it? Does the original plugin author have time to fix it? Either of those could take weeks. So at least this way, you simply have a broken test site and not a broken production site.

I’m running low on disk space

If you are running low on disk space (check with df) try clearing up old images using:

./launcher cleanup
apt-get autoclean
apt-get autoremove

Does updating the actual server version of Ubuntu matter since Discourse always operates in Docker?

It matters a lot less. But you should not get so far behind that, say, you are on Ubuntu 12.04 LTS today (time of writing: June 1st, 2016), which was released in mid-2012, four years ago. That version will be end of support life by early 2017.


Trouble while upgrading docker
No longer getting notifications for out of date containers
Daily performance reports keep asking to rebuild container
"Upgrade all" button is awesome!
Ubuntu 16.04 LTS - upgrade or migrate?
Best practices for removing old containers?
Installed OK. Working fine for one day. Suddenly stopped working
Docker and Discourse upgrade
Upgrade from v2.0.0.beta10 +37 to 2.1.0.beta1 does fail
Site fails to load with js errors
Problem with category style = box under firefox
Update error, website unavailable, possibly plugin related?
Why do I need a block storage?
Digital Ocean hosting: Do I need a system admin?
Service not available | Update Error
Cannot rebuild following site failure: "postgres already running"
Upgrade button is 500-ing for me
Will not load, no access to installation, aufs not installed - my fix
1.4.3 Upgrade Oddity?
Postgres changing ownership error when running launcher rebuild app
How do you update Discourse?
Proper Procedure for Upgrading Discourse Docker Container
Add path to cookie
Problem running `./launcher rebuild app` : no output and nothing appears to happen
PNG's a no show
Failed to bootstrap 1.6.0.beta 8 with out of date docker
What do you want to do about modified configuration file grub?
Upgrade V2.1 Beta 2 to Beta 4 Require ./launcher rebuild app Twice
Cannot upgrade due to old version of docker
#2

It might be worth noting here that running these updates takes your site offline for a noticeable period of time (unlike the admin/upgrade ones, which always feel pretty seamless).


(Jeff Atwood) #3

Should take about 10-15 minutes but it depends where you are hosted. Good news is the Docker images don’t change too often.


Site maintenance mode during rebuilds?
(Wayne Werner) #16

Is there discussion anywhere about improving the amount of downtime when rebuilding the image?


(Sam Saffron) #17

If you want minimal downtime you must run a separate data container, there is an advanced howto covering this.

If you want zero downtime, you must run 2 web containers and cycle them in and out using haproxy … or you could just sign up with us and get that with the standard plan :slight_smile:


Can you upgrade Discourse seamlessly if there is a breaking db change?
(Tudor Vedeanu) #19

How do I know when my Docker image needs to be updated? Do I have to check manually for updates?


(Sam Saffron) #20

If a command-line Docker image update is required, you’ll now see instructions on the admin page to that effect.


(caue rego) #42

On DigitalOcean it just took me less than 10 minutes.

Adding some positive feedback for a change. :wink:


(Danilo) #43

The container is independent of the data, right? So I can safely upgrade without losing data?

(Of course, I’ll do a backup anyways. But still :))


(Jeff Atwood) #44

Yes, the data is outside the image.


#105

Does using cleanup require current session to be turned off?


(Andrew Waugh) #106

No, all cleanup does is remove the docker images which are no longer in use - it doesn’t affect the running site.

n.b. if you are only running discourse on the box then cleanup is 100% safe, but if you have other docker images installed it may cause problems.


(David Kwan) #162

I got this message when updating to the latest version of Discourse. Do me or my users need to hold off on using the site (ex: posting) until we do this???

29%20PM


(Felix Freiberger) #163

You can keep using the site until this is done :slight_smile:

However, you should follow these steps soon (i.e. within a few days, if possible) because Discourse updates often contain security fixes. Note that running these commands will take your site offline for a few minutes.


(Samy Rabih) #206

It seems this message (about old version of Discourse) stills appears when you try to update from v2.3.0.beta3 to 2.3.0.beta5


(Felix Freiberger) #207

Yes, this will happen regularly, whenever the base image contains an important update :slight_smile: