Skip to content

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.env to extend the expiry flips state to tampered — 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_AT directly — the HMAC will mismatch and your state flips to tampered, 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:

  1. Open Settings → License (or click the sidebar capacity widget, or click Activate license in any trial banner).
  2. Paste your key into the Activate a license form.
  3. 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.