Supaffi

Self-hosting/Updates

Updates

Update when you choose. The installer backs up your database first.

Update Supaffi

Updating is the install command, run from the install folder:

Terminal
cd /opt/supaffi && curl -fsSL https://raw.githubusercontent.com/ugolbck/supaffi/main/install.sh | sudo bash

It moves you to the newest release. Settings and secrets are kept. On the way, it:

  1. Checks for local edits

    If you changed files in /opt/supaffi that the update would overwrite, it lists them and stops. Your .env and files you added are never touched.
  2. Backs up the database

    A compressed dump goes to /opt/supaffi/backups. If the backup fails, the update stops and your install keeps running the version it was.
  3. Moves to the new release

    It checks out the release tag, pulls the new images and restarts the stack.
  4. Runs migrations

    Database migrations run when the app starts. If one fails, the app does not start rather than run against a schema it does not match.

What changed in each release is in the changelog.

If the update stops, the message says why:

  • The database backup failed. Check the database with cd /opt/supaffi && docker compose logs db. To update without a backup, add SUPAFFI_SKIP_BACKUP=yes.
  • Local changes. Keep a copy of the listed files, then add SUPAFFI_DISCARD_LOCAL_CHANGES=yes.
  • The newest release is older than yours. This usually means a release was withdrawn. Nothing was changed. Check the releases.

Update notices

Supaffi never updates itself: the dashboard has no access to Docker on your server. When a release is out, it tells you instead.

  • A dot appears on your account avatar, red for a security release and blue otherwise. A release is a security release when its notes have a Security section.
  • The account menu shows Update available or Security update with the version. It opens a dialog with the command to run, pinned to that release.
  • Account, section This instance, shows your version and whether a newer one is out.
supaffi.yourserver.com/dashboard

Supaffi 0.4.0 is out

You are on 0.3.4. Nothing breaks if you wait.

Run this on your server. It backs up your database first and stops if that fails.

cd /opt/supaffi && curl -fsSL https://raw.githubusercontent.com/ugolbck/supaffi/v0.4.0/install.sh | sudo bash
What changed
The update dialog, opened from the account menu. Copy the command and run it on your server.

To stop the check, see Update check. Only the latest release gets security fixes.

Install a specific version

Pass SUPAFFI_VERSION to move to an exact release instead of the newest:

Terminal
cd /opt/supaffi && curl -fsSL https://raw.githubusercontent.com/ugolbck/supaffi/main/install.sh | sudo SUPAFFI_VERSION=0.4.0 bash

To check the version you run, open the account menu: its footer shows Supaffi 0.4.0, for example.

Downgrade

Downgrading moves the code back, not the database. Migrations only run forwards, so the installer refuses unless you ask:

Installer output
Refusing to move from 0.4.0 back to 0.3.4.

Migrations only run forwards, so the older release would start
against the newer schema. Restore a backup from /opt/supaffi/backups
taken while 0.3.4 was running, or say you understand:

  SUPAFFI_ALLOW_DOWNGRADE=yes
Terminal
cd /opt/supaffi && sudo SUPAFFI_VERSION=0.1.0 SUPAFFI_ALLOW_DOWNGRADE=yes bash install.sh

The installer backs up the current database first. If the release you are leaving changed the schema, then restore a dump taken while the older version was running, as described in Restore a backup.

Verify an image

Every published image carries an attestation from the repository's release workflow. To confirm an image was built there, run this with the GitHub CLI, using your version:

Terminal
gh attestation verify oci://ghcr.io/ugolbck/supaffi:0.4.0 --repo ugolbck/supaffi

If verification fails, the image did not come from the release workflow. Do not run it, and report it as described in Security.