Skip to main content

Updating the single-server install

Written by Aron Day

Updating is intentionally simple.

If this server was installed before v2.2.1, do the one-time installer refresh first. After that, the steps below apply.

When upgrading from v2 to v3, follow upgrading from v2 to v3 if you need to retain existing Blobstore data. That guide also explains how to start the Blobstore upgrade fresh when retaining the existing data is unnecessary.

Standard (online) server

bootstrap.sh is only used for the initial installation. The installed setup.sh handles subsequent upgrades.

  1. Edit /opt/3b/.env and change VERSION to the new release.

  2. Run the installed setup script:

sudo bash /opt/3b/setup.sh

The setup script compares the requested VERSION with the release stamped into its installed bundle. When they differ, it downloads and verifies the requested bundle, replaces its installer, Helm chart, and bundled tools, and re-executes the new setup.sh before touching Helm or application images. Your data in Kubernetes persistent volumes is preserved, and your configuration and secrets in /opt/3b/.env are reused. Nothing rotates.

The server needs outbound access to oci.tines.com for every update, just like the first install.

Air-gapped (offline) server

The offline server can’t reach the registry, so you build the new version’s bundle on a connected machine, copy it across, extract it into /opt/3b, and re-run setup.sh.

On a machine that meets the build host requirements, run the air-gapped bundle builder and provide your registry credentials:

VERSION=<new-version> \
  REGISTRY_USERNAME="$OCI_USERNAME" \
  REGISTRY_PASSWORD="$OCI_PASSWORD" \
  bash -c "$(curl --proto '=https' --tlsv1.2 -fsSL https://sh.3b.dev/airgapped.sh)"

This creates 3b-self-hosted-<new-version>.zip in the current directory. Copy it to the offline server by whatever means you use. Change VERSION in /opt/3b/.env, replace the previous chart, images, and bundled tools, and re-run the installer:

sudo rm -rf /opt/3b/chart /opt/3b/images /opt/3b/bundled
sudo unzip -o 3b-self-hosted-<new-version>.zip -d /opt/3b
cd /opt/3b && sudo bash setup.sh

Your configuration and secrets in /opt/3b/.env are preserved. For the full flow, see updating an air-gapped server.

Verify

After the installer finishes, confirm everything rolled out and the UI responds. See verifying the install.

Recommendations

  • Read the release notes for every version between yours and the target before updating.

  • Back up /opt/3b/.env and the database before updating anything you care about.

  • The installer is safe to re-run. If an update is interrupted, run sudo bash /opt/3b/setup.sh again.

Did this answer your question?