New Deployment
Provisioning Configuration
These settings come from Settings → Provisioning. Hestia API credentials are managed in Settings → Hestia Connection only.
Which product this deployment runs. Each application owns its own source paths, port range, service unit and proxy template.
The console picks the next free port and verifies nothing on this server is already listening on it — there is nothing to type here.
JWT secrets, CORS origin, and rate limits are generated automatically into the tenant .env.
Instances
| Tenant | Domain | Port | Status | Deployed |
|---|
Tenant Dashboard
Loading dashboard…
Licenses
Vendor License Key
Checking…
| Tenant | Domain | Package | License Status | Expires | Actions |
|---|
SQL Maintenance
Connection Budget
Loading capacity report…
Per-Tenant Capacity
Pool = how many connections the tenant's .env lets it open (its share of the budget). Live/idle come from the server's processlist — the idle column is what "Shed idle" can free without restarting anything.
| Tenant | App | Pool | Live | Idle | Actions |
|---|
Reduce the Budget
Lowering a tenant's pool is the durable fix — the value is written into its .env, so it survives restarts and redeploys. Raising the server ceiling buys headroom for the whole fleet instead.
Applies immediately with SET GLOBAL. Requires the privileged DB account below.
Kills only SLEEP connections older than the idle window (max 50 per tenant). No service is restarted and no running query is dropped.
Incident History
Recorded by the background watch and by ceiling changes — one entry per escalation (not one per sample), so a long incident stays readable.
| When | Event | Detail |
|---|
Monitor & Privileged Access
The watch samples MySQL in the background, records an incident whenever the fleet enters the red zone and (optionally) sheds idle connections first. A privileged DB account is optional: without it the panel falls back to per-tenant probes and cannot raise max_connections.
Checking…
Disabled also turns off the pre-deploy check, so nothing is refused.
Kept free for the console, backups and bursts.
A SLEEP connection older than this may be reclaimed.
Privileged MySQL account (optional)
Only used for information_schema.PROCESSLIST and SET GLOBAL. Seeded from config.json credentials when left blank — the console never echoes it back.
Console Users
| Username | Name | Role | Created |
|---|
Settings
Applications
One console, several products. Every application keeps its own source paths, port range, service user and start command. A deployment records the application it belongs to, so changing the wizard default never moves an existing instance.
Shared Runtime Sources
Legacy Dira360 sources — these are the same paths as the Dira360 card above (they are mirrored into it on save). Dira School and Dira Hotel have their own paths in Applications.
Provisioning
Defaults used by the deployment wizard.
Deployment ports are never typed in: the console probes this server and assigns the next free port. Each application owns a separate range — see Settings → Applications (Dira360 56001–56999, Dira School 57001–57999, Dira Hotel 58001–58999).
Hestia Connection
Credentials for the Hestia Control Panel API. Values are masked — leave blank to keep the existing secret.
Configuration Safety
config.json holds the console users, the Hestia connection and every deployed instance. Each write keeps a timestamped copy of the previous version and every deploy leaves a named restore point, so a bad config can be rolled back — and if the instance list is ever lost, it can be rebuilt from what is actually running on this server (systemd units plus the tenants' own .env files, secrets included).
Backup history — newest first
Loading…