DomainMonitor

Sign in to continue

DomainMonitor
—
Health overview
App types
Server resources
Offline domains—
SSL expiring / expired—
Uptime breakdown
Domain renewals
Cloudflare zones
Recent SMS alerts—
Servers
—
Total
—
Online
—
Offline
—
SSL Warning
—
SSL Expired
—
Servers

Subdomains

Loading…

Primary Domains

Infrastructure

All VMs

Storage Servers

Click "Check for updates" to query Gitea for new commits.
Per-module documentation (migrations, gotchas). Agents can read it via /api/agent-tasks/doc?module=…
Select a doc from the list, or click “+ Add doc”.
Update — —

Backups

Live log

IG Operator

💬یک گفتگو را از لیست انتخاب کنید

Design Tasks

Import preview
Send to agent
Creates a normal design task (branch + merge request) directly from the converted HTML — no Figma pass. Review it in Design Tasks as usual.
Design task
FTP backup target
Files upload to ftp://host:port/<server>/<date>/<db>_<time>.sql.gz. VMs connect directly; the panel never stores dumps unless you download.
Log — —
Add backup policy
Select a server to list databases…

SMS Logs

Domain Message Recipients Status Sent At

Agents

Central agent rules — served at /api/agent-tasks/playbook, read by every agent before each task.
Role-based agent setup guides + commands — served to agents at /api/agent-tasks/guide/<slug>
Select a guide from the list, or click “+ Add guide”.
Agents have no direct access to main. The final merge is performed by the operator after a conflict check.
Shared Claude account pool. When an account hits its usage limit, the agent runner auto-switches to the next by each agent's priority (set priority per agent in the Registry → edit agent).
Remote-egress Claude Code for developers — they run Claude locally; all Anthropic traffic egresses srv1's clean IP via the WSS relay (ai-gw.iserverplus.com). Each seat = a per-dev token.
Central agent config (source of truth). init.sh pulls each agent's .env from the panel; secrets are encrypted.
Per-project shared memory. Every agent linked to a project reads & writes this; a new agent on the same project inherits it.
Per-role profile: how this KIND of agent works (methodology/behaviour). Every agent of a role reads & writes it; a new agent of the same role inherits it — and can study a peer role too.

Sites

Firewall

Routers

Address lists

Settings

Account

…

Change password

Two-factor authentication (Google Authenticator)

Users

The new user logs in and sets up their own 2FA.

Roles

admin  Full access to everything (current panel behaviour).
operator  Reserved for limited access. Note: fine-grained per-section read/write permissions (e.g. Monitoring only) are not enforced yet — that is the next phase. For now an operator can sign in but section-level limits are not active.

Roles are assigned per user in the Users tab. Per-section permissions will plug in here later without changing your accounts.

Add Agent
Add Claude account

Get it by running claude /login on any machine, then copy ~/.claude/.credentials.json. Subscription type is auto-detected. Stored encrypted; served only to authenticated runners.

Bootstrap command

Run this in the ROOT of the project the agent will work on. It pulls the agent's .env (with credentials) from the panel and writes .agent/.

CRM settings

A vTiger admin login (CTMobile) the wizard uses to create agent users. Stored encrypted (AES). The Custom*User operations are admin-only — a non-admin account returns 403.

New agent wizard
1 Server & identity 2 vTiger user 3 Runtime & knowledge
Add Server
Leave empty to keep existing key
System Control — —
These actions affect the live operating system. All require an authenticator code when 2FA is enabled.
Change root password
Restart service
Reboot server
The VM will go offline for a short time while it restarts.
Required for each action above
Add ESXi Host
Billing SMS reminder
SMS 3 days before the billing day
Add Domain
SMS SSL Alert
Alert when SSL expires within threshold
Add Primary Domain
Auto Renew
Cloudflare Settings
DNS Records — —
—
TypeNameContentTTLProxied
Add Record
Proxied through Cloudflare
Create Site
The main SSH user for the site
Create Cloudflare A record
Points domain to the server IP
Proxy through Cloudflare
Orange-cloud the A record (hides origin IP)
Issue SSL certificate
Run Let's Encrypt DNS-01 after creating the site
Add to monitoring
Track this site in the monitoring list
Auto-Sync Domains

Scans Cloudflare A records and matches them to your servers' IPs. Domains pointing to a known server that aren't yet monitored will appear below.

Verify on server (SSH)
Confirm each site actually exists on the CloudPanel server
Delete —

Choose what to delete. Destructive actions are irreversible.

Enter the code from Google Authenticator
Two-Factor Authentication
Add Storage Server
Create Storage Server

Provisions MinIO + management API on a fresh Ubuntu VM via Docker, creates 3 DNS records, configures nginx + SSL.

Issue SSL (certbot)
Request Let's Encrypt certs for all 3 subdomains
Bucket — —
New Product

off — uses component branch

🗄 DB Source global (shared)
Override the global DB source for this product. Leave host empty to use global.
Product — —
Add Component
Deploy Instance
Custom domain
Override the generated FRONT / API / SOCKET hostnames (CloudPanel users stay tied to the Customer ID)
If a host's domain is on Cloudflare, its DNS A-record is created automatically; otherwise point it to the server manually and DNS is skipped.
① Backend
PHP site · DB restore · git · config
② Socket optional
reverse-proxy · systemd socketServer.php
③ Frontend
build on panel · standalone · systemd node
Create S3 bucket
Provision storage + write S3 vars into config
Issue SSL
Let's Encrypt for each host after DNS resolves
Force fresh build
Off = reuse cached build if code unchanged (faster)
Instance — —
🔑 Credentials — —
📸 Instagram account
DB Source

The dev/master database that each deploy dumps and restores into the new instance DB. Dump runs on the panel server; restore uses MySQL root on the target VM with foreign-key checks off.

Logs — —
Loading…
Gitea Access

Private repos are cloned over HTTPS using a personal access token. Create one in Gitea → Settings → Applications → Generate Token (scope: read:repository). The token is stored encrypted and never written to any config file.