Licensing & paid features
Introduced in v1.14.0
The self-hosted ZaneOps core is free and MIT-licensed, and always will be. A small set of team-oriented features are additive, shipped in the Enterprise Edition (EE) build, and unlocked by an optional paid license.
Free tier
Section titled “Free tier”Without any license, your instance runs on the free tier:
| Limit | Value |
|---|---|
| Workspaces | 1 |
| Users | 3 (workspace members + pending invitations) |
Everything else (unlimited projects, services, environments, deployments, preview environments, Docker Compose stacks, Git apps) is unaffected by licensing.
What a license unlocks
Section titled “What a license unlocks”Licenses come in tiers. The Starter tier unlocks:
| Feature | Description |
|---|---|
| Extra workspaces | Create more than one workspace on the same instance |
| Extra user seats | Add more than 3 users across your workspaces |
And more features will be available for licensed instances.
Enterprise Edition build
Section titled “Enterprise Edition build”Licensing and every paid feature live in the Enterprise Edition image, published as ghcr.io/zane-ops/app:ee-<version>. The default ghcr.io/zane-ops/app:<version> image is pure MIT and contains no licensing code at all: the Server admin > License page and the paid features are simply absent.
To switch an existing instance to the EE image, edit docker-stack.prod.yaml and add the ee- prefix to the image tag on the zane-app, zane-temporal-main-worker and zane-temporal-schedule-worker services:
zane-app: image: ghcr.io/zane-ops/app:ee-${IMAGE_VERSION} # ... zane-temporal-main-worker: image: ghcr.io/zane-ops/app:ee-${IMAGE_VERSION} # ... zane-temporal-schedule-worker: image: ghcr.io/zane-ops/app:ee-${IMAGE_VERSION}The zane-proxy image is unchanged. Then redeploy:
make deployHow licensing works
Section titled “How licensing works”- A license is a signed key issued by the ZaneOps license server (
api.zaneops.dev). - It is bound to your instance: an instance fingerprint (a hash of an ID generated on first boot) is registered with the license server when you install the key. The same key cannot be used on another instance at the same time.
- Your instance re-validates the license with the license server periodically (roughly every 12 hours). If the license has expired, been unbound, or been rebound to another instance, it is removed automatically and the instance falls back to the free tier.
- There is one license per instance (a singleton). Installing a new key replaces the previous one.
Installing a license
Section titled “Installing a license”-
Buy a license from zaneops.dev. You receive a License ID.
-
In ZaneOps, go to Server admin > License. This area is only available to the instance owner (the first user of the instance).
-
Enter your License ID, then submit. ZaneOps contacts the license server, binds the license to this instance, and installs it.
-
Once installed, the page shows the tier, expiry date, who installed it, and the instance fingerprint the license is bound to.
Removing a license
Section titled “Removing a license”From the same page, choose Uninstall. ZaneOps unbinds the license from this instance on the license server, so you can re-use it elsewhere, and stops the periodic re-validation. The instance returns to the free tier.
Privacy
Section titled “Privacy”Installing a license shares your instance fingerprint and license ID with the ZaneOps license server so the key can be issued and bound. See the Privacy Policy for what is collected and retained.