Overview
The backup server requires a valid license to operate. Agents do not require a license — they are managed by the server.
- Validation: Checked at startup and every 24 hours
- Expired license: Blocks new backups, but restore operations continue to work
Contact vishnu@xmigrate.cloud or your vendor to obtain a license file.
Editions
| Edition | Tenant model | VM scope | Notes |
|---|---|---|---|
| Community Edition | Single tenant | Up to 5 protected VMs for life | Default free edition. MSP multi-tenancy is not supported. |
| MSP / Enterprise Edition | Multi tenant | Commercial license entitlement | Unlocks tenant isolation, user management, and larger fleet licensing. |
For the MSP feature boundary, see MSP Edition.
Installing a License
Method 1: Default Location (Recommended)
sudo cp license.json /var/lib/backup/repo/license.json
sudo systemctl restart backup-serverMethod 2: Custom Path via CLI Flag
Edit the systemd service file:
sudo nano /etc/systemd/system/backup-server.serviceExecStart=/usr/local/bin/xreplicator server \
--listen 0.0.0.0:50051 \
--repo /var/lib/backup/repo \
--license /etc/xreplicator/license.jsonsudo systemctl daemon-reload
sudo systemctl restart backup-serverMethod 3: Environment Variable
export LICENSE_FILE="/etc/xreplicator/license.json"
sudo systemctl restart backup-serverPriority Order
--licenseCLI flag (highest)LICENSE_FILEenvironment variable<repo>/license.json(default location)
License File Format
License files are JSON:
{
"data": "base64-encoded-json-payload",
"signature": "base64-encoded-rsa-signature"
}VM Count Limits
The license enforces a maximum number of connected agents. When the limit is reached, new agent registrations are rejected with:
license limit exceeded: X/Y agents connectedDisconnect unused agents or contact your vendor to upgrade the license.
Checking License Status
sudo journalctl -u backup-server -fLook for messages like:
# Valid
License validated: <org> (expires: <date>, VMs: <count>)
# Expired
WARN: License expired on <date>Troubleshooting
License file not found
Ensure the license file exists at the expected path, or use the --license flag to specify its location.
License hostname mismatch
The license must be generated for the exact server hostname. Verify with:
hostnameLicense expired
Generate a new license with a future expiry date.
License limit exceeded
The maximum agent count has been reached. Disconnect unused agents or upgrade the license.