Operations

Last updated on May 21, 2026

This page covers the lifecycle of a self-hosted instance: license, updates, runtime management, and clean shutdown.

License

Your instance pulls its license from Orbit on first boot. The license controls plan, usage limits, and feature availability.

View your license

To inspect your current license, open Settings > Subscription in your dashboard. You see your plan, license status, and current usage.

Refresh your license

When you upgrade your plan or renew, click the refresh button on the license card to sync the latest license from Orbit.

License expiry

Licenses are valid for a set period. As a license approaches or passes its expiry date, the instance gradually restricts write operations.

StateWhat changes
ActiveNormal operation.
Expiring SoonA warning banner appears, but nothing is restricted yet.
Write RestrictedCreating new users and stations is blocked. Existing data and runs are unaffected.
ExpiredA renewal prompt appears on every page. Contact sales to renew.

Air-gapped activation

When your server has no internet, you can paste the license manually:

  1. In TofuPilot Orbit, open the instance menu and select Copy license token.
  2. In your dashboard, go to Settings > Subscription.
  3. Click the upload button on the license card.
  4. Paste the token and click Activate.

Manage from Orbit

Orbit gives you an overview of every self-hosted instance, with running version, domain, and last check-in. From the instance menu you can open the dashboard, re-deploy, trigger an update, copy the license token for air-gapped activation, or delete the instance.

Update

To update to the latest version, re-run the deploy script:

curl -sSL https://tofupilot.sh/deploy | bash

To pin a specific version, pass it explicitly:

curl -sSL https://tofupilot.sh/deploy | bash -s -- --version 2.8.0

Downgrades are not supported, which protects your data. Orbit shows the new version once the update finishes.

Reconfigure

When you need to change configuration after deploying, such as adding an OAuth provider or updating SMTP, edit .env and re-run the deploy command:

curl -fsSL https://tofupilot.sh/deploy | bash

Data and auto-generated secrets are preserved across re-runs.

Manage with Docker Compose

You can manage the instance from the server with Docker Compose:

docker compose ps          # Check service statusdocker compose logs -f     # Follow live logsdocker compose restart     # Restart all servicesdocker compose down        # Stop all servicesdocker compose up -d       # Start all services

When something is not working as expected, check the application logs first:

docker compose logs tofupilot-dashboard --tail 100

Backups

Your data lives in two Docker volumes. Back them up on a regular schedule.

VolumeContents
tofupilot-pg-dataPostgreSQL database
tofupilot-seaweed-dataUploaded files and attachments

Uninstall

To remove TofuPilot from your server completely, run:

curl -sSL https://tofupilot.sh/deploy | bash -s -- --uninstall

This deletes all containers, volumes, configuration, and data. To also revoke the license, delete the instance from TofuPilot Orbit.

How is this guide?

On this page