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.
| State | What changes |
|---|---|
| Active | Normal operation. |
| Expiring Soon | A warning banner appears, but nothing is restricted yet. |
| Write Restricted | Creating new users and stations is blocked. Existing data and runs are unaffected. |
| Expired | A 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:
- In TofuPilot Orbit, open the instance menu and select Copy license token.
- In your dashboard, go to Settings > Subscription.
- Click the upload button on the license card.
- 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 | bashTo pin a specific version, pass it explicitly:
curl -sSL https://tofupilot.sh/deploy | bash -s -- --version 2.8.0Downgrades 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 | bashData 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 servicesWhen something is not working as expected, check the application logs first:
docker compose logs tofupilot-dashboard --tail 100Backups
Your data lives in two Docker volumes. Back them up on a regular schedule.
| Volume | Contents |
|---|---|
tofupilot-pg-data | PostgreSQL database |
tofupilot-seaweed-data | Uploaded files and attachments |
Uninstall
To remove TofuPilot from your server completely, run:
curl -sSL https://tofupilot.sh/deploy | bash -s -- --uninstallThis deletes all containers, volumes, configuration, and data. To also revoke the license, delete the instance from TofuPilot Orbit.
How is this guide?