Upgrading

How to update Tether to a newer version safely. The process is the same whether it is a minor patch or a major version.

Always back up before upgrading

If an upgrade goes wrong, you need to be able to restore. Run a database backup before every upgrade — no exceptions. See Backup & restore.

Step 1 — Read the release notes

Before upgrading, check the GitHub releases page for the version you are upgrading to: github.com/atechlab-am/tether/releases

Look for:

Most upgrades are zero-downtime

For releases that only add new features or fix bugs (no destructive schema changes), the upgrade process takes under 60 seconds and does not require a maintenance window. The app is briefly unavailable while the container restarts.

Docker upgrade

bash
# 1. Back up the database docker exec tether-db mysqldump -u tether -ptether tether > backup-pre-upgrade-$(date +%Y%m%d).sql # 2. Pull the latest code git pull # 3. Stop just the app container (keep the database running) docker compose stop app # 4. Rebuild the app image with the new code docker compose build --no-cache app # 5. Start the updated app docker compose start app # 6. Watch the logs for any errors docker compose logs -f app # Look for "Application startup complete"

Schema changes (new tables, new nullable columns with defaults) are applied automatically on startup. You do not need to run migration scripts for most upgrades.

Bare-metal upgrade

bash
# 1. Back up the database mysqldump -u tether -p tether > backup-pre-upgrade-$(date +%Y%m%d).sql # 2. Pull the latest code git pull # 3. Activate the virtual environment and update dependencies source .venv/bin/activate pip install -r requirements.txt # 4. Restart the service sudo systemctl restart tether # 5. Check the service started cleanly sudo systemctl status tether journalctl -u tether -n 50

Rolling back

If the upgrade causes problems:

bash
# Docker rollback git checkout HEAD~1 # revert to the previous version docker compose build --no-cache app docker compose start app # Bare-metal rollback git checkout HEAD~1 pip install -r requirements.txt sudo systemctl restart tether # If the schema changed and the rollback fails due to new columns: # Restore the database backup instead docker exec -i tether-db mysql -u tether -ptether tether < backup-pre-upgrade-20260531.sql
Schema rollbacks require database restore

If the new version added a column or table, the old code may fail to start because it doesn't know about the new schema. Restore the database backup when rolling back after a schema-changing upgrade.

Staying notified of releases

Subscribe to GitHub release notifications:

  1. Go to github.com/atechlab-am/tether
  2. Click WatchCustom → check Releases
  3. You'll get an email whenever a new version is published
Last updated: May 2026