Skip to content

Upgrades

Sail never updates itself. You choose when to upgrade, so it fits your change windows.

An upgrade is a backup, a one-line change and a restart. Sail updates its own database when it starts.

Images are tagged three ways, such as 1.4.2, 1.4 and sha-….

  • Pin the minor version, such as 1.4. You get patch releases, including security fixes, when you pull, and nothing bigger.
  • Pin an exact version, such as 1.4.2, if every change must go through review.
  • Never use latest. You’d get a new minor version without deciding to.

Within a major version, you can jump straight from any older version to the newest. You don’t need to install the ones in between.

  1. Back up. Always, before every upgrade:

    ./backup.sh --out /srv/sail-backups

    See Backups and restore.

  2. Change the version in .env:

    SAIL_IMAGE=ghcr.io/cloudstack-llc/msty-sail:1.5
  3. Pull and restart:

    docker compose pull sail && docker compose up -d

    Add the same --profile tls or -f files you started Sail with.

  4. Check it’s healthy:

    docker compose ps

    Wait for sail to show healthy. Sail updates the database before it starts serving, so a big update can take a minute.

People with Sail open see “A new version of Sail is available.” and a Reload button. Replies that were in progress pick up where they left off.

Something wrong after an upgrade? Go back to the previous version:

  1. Set SAIL_IMAGE back to the version you had.
  2. Run docker compose up -d.

That’s all. Each release only adds to the database, never removes, so the previous version keeps working against the newer database. Every release is tested this way.

If an upgrade damaged data, which is rare, restore the backup you took in step 1.

To run the database update as its own step, for example in a change window before the restart:

docker compose run --rm sail migrate

It updates the database and exits. Starting Sail afterwards finds nothing left to do.

The bundled Compose file runs one copy of Sail, with a short restart during upgrades. Sail is built to run as several copies behind a load balancer, but the files they store need a shared disk, and there’s no ready-made recipe yet. Talk to Msty if you need zero-downtime upgrades.