Licensing
30-day trial, activating a paid license, tier and capacity limits, heartbeat health, troubleshooting.
Every Vloud install starts with a 30-day trial. After that, you need a license to keep making changes — read access stays free.
The 30-day install trial
When you run the bootstrap installer, the engine writes a signed trial row into its SQLite DB and starts a 30-day countdown. Until the trial expires, every feature is available at the dev-default enterprise tier so you can fully evaluate the platform.
- Trial state is bound to your server’s machine ID via HMAC.
- Editing
/etc/vloud.envto extend the expiry flips state totampered— writes get blocked, just like expiry. - You can check your trial status anytime at Settings → License in the dashboard, or via the banner that appears in the last 7 days of the trial.
[!NOTE] The trial is tamper-resistant by design. Don’t edit
VLOUD_TRIAL_EXPIRES_ATdirectly — the HMAC will mismatch and your state flips totampered, which blocks writes the same way expiry does. Activate a real license to recover from any tampered state.
What happens when the trial expires
Write actions return HTTP 402 with a trial_expired body. Specifically:
- Creating accounts, deploying apps, attaching domains, sending mail, etc. — paused.
- Reading the dashboard, viewing logs, inspecting existing accounts — still works.
- An amber banner appears at the top of every page with a one-click activation path.
Your data and configuration are preserved. Activating a license restores writes without any data migration step.
Buying a license
See Pricing for current plans. After purchase you’ll receive a license key (16–256 characters, letters/digits/-/_) by email and in your customer portal.
Activating a license
From the dashboard:
- Open Settings → License (or click the sidebar capacity widget, or click Activate license in any trial banner).
- Paste your key into the Activate a license form.
- Click Activate.
The engine contacts the Vloud license server, verifies the key, and downloads a signed license file. Your trial state flips to licensed and writes resume immediately. Tier and capacity limits refresh on the next heartbeat (within the next 6 hours; an immediate refresh is on the roadmap).
Tier and capacity
Your license defines two locked-model dimensions:
- max_instances — the total number of running apps (systemd-managed, Docker, or Vloud-managed) across all your hosting accounts.
- max_linux_users — the number of Linux user accounts (one per hosting customer) the engine will provision.
Plus a feature set: things like email, security-engine, multi-region, reseller, white-label. When you try to create a resource that would exceed your limits, or use a feature your tier doesn’t include, the dashboard surfaces an Upgrade modal with a direct path to plan changes.
License health
The engine sends a heartbeat to the Vloud license server every 6 hours to confirm your license is still valid. The dashboard’s sidebar widget shows your current status:
- Active — heartbeats succeeding, all good.
- Warning — 7+ days without a successful heartbeat.
- Degraded — 14+ days without one. The dashboard still works.
- Revoked — 30+ days, or the license server explicitly revoked. Writes blocked, identical to trial expiry.
The 30-day window is generous on purpose — temporary outbound network outages won’t lock you out.
Changing or cancelling a plan
Manage your subscription through the Billing portal linked from the License page. Plan changes propagate within one heartbeat cycle. Cancelling drops you back to the install-trial state (writes block until you re-activate; data preserved).
Self-hosted and air-gapped installs
Vloud is open-source. If you need to run an install with no outbound license-server connectivity, contact us — we issue offline-mode licenses with longer heartbeat windows or static signed claims for fully air-gapped environments.
Troubleshooting
The activation form says “We couldn’t find that license”
Double-check the key — copy/paste sometimes picks up a trailing newline. If the problem persists, your install’s machine ID may differ from the one bound to the license (e.g. moved between hardware). Contact support with your install_id from Settings → License.
The activation form says “Could not reach the license server”
The engine needs outbound HTTPS to the configured license server (default: https://license.vloud.app). Check firewall rules, then retry.
I see “Trial state was tampered with”
The HMAC over the trial row no longer matches. Most often: /etc/vloud.env was edited to change VLOUD_TRIAL_EXPIRES_AT or VLOUD_MACHINE_ID. Activating a real license restores writes — the trial values are recomputed at activation time.