Upgrade Temps
Temps includes a self-upgrade command that downloads the latest release from GitHub, verifies its checksum, and replaces the binary atomically. Database migrations run automatically on the next restart.
Check your current version
temps --version
Output:
v1.0.0 (abc1234) built 2026-01-15 12:34:56 UTC
Check for updates
See if a newer version is available without installing it:
temps upgrade --check
Or use the health check command, which includes an update check along with other system diagnostics:
temps doctor
If a newer version exists, you will see:
WARN Update: v1.1.0 available - run 'temps upgrade' to update
Back up before upgrading
Before any upgrade, create a backup of your data:
If you have S3 backup storage configured:
Trigger a manual backup from the dashboard (Settings > Backups > Run Backup) or via the API.
If you do not have S3 configured:
At minimum, back up the Temps data directory and database:
# Back up the data directory (contains encryption key, auth secret, GeoLite2 DB)
cp -r ~/.temps ~/.temps-backup-$(date +%Y%m%d)
# Back up the PostgreSQL database
docker exec temps-timescaledb pg_dumpall -U postgres | gzip > temps-db-backup-$(date +%Y%m%d).sql.gz
The ~/.temps/encryption_key file is critical — it encrypts managed service credentials. If this file is lost, you cannot decrypt stored passwords. Always include it in your backups.
Run the upgrade
Upgrade to the latest version
temps upgrade
If the binary is in a root-owned location (e.g. /usr/local/bin/temps):
sudo temps upgrade
The upgrade process:
- Detects your platform (Linux/macOS, x86_64/ARM64)
- Fetches the latest release from GitHub
- Compares versions — exits if already up to date
- Shows the upgrade plan (current version, target version, download size)
- Asks for confirmation
- Downloads the release tarball
- Verifies the SHA-256 checksum (if available)
- Replaces the binary atomically (write to temp file, then rename)
Options
# Upgrade to a specific version
temps upgrade --version v1.1.0
# Skip the confirmation prompt
temps upgrade --yes
# Only consider stable releases (skip pre-releases)
temps upgrade --stable
# Upgrade a binary at a different path
temps upgrade --path /opt/temps/bin/temps
Restart Temps
The upgrade replaces the binary but does not restart the running process. You need to restart manually.
If running under systemd (typical server setup)
sudo systemctl restart temps
If you run the proxy as a separate process:
sudo systemctl restart temps-proxy
If running in a terminal
Stop the current process (Ctrl+C) and start it again:
temps serve
Database migrations
Migrations run automatically when temps serve starts. There is no separate migration command. When the server boots, it:
- Connects to PostgreSQL
- Runs all pending migrations (120-second timeout)
- Backfills any new TimescaleDB continuous aggregates
- Starts serving traffic
If migrations fail, the server will not start. Check the logs for the specific migration error.
Verify the upgrade
After restarting:
# Check the version
temps --version
# Run diagnostics
temps doctor
The doctor command checks:
- Data directory integrity
- Encryption key presence
- Database connectivity and version
- TimescaleDB extension
- Migration count
- Docker daemon availability
- External connectivity (GitHub API, Docker Hub, Let's Encrypt)
- Git providers and DNS providers
If everything passes, your upgrade is complete. Visit the dashboard to confirm it loads correctly.