Sites
Nội dung này hiện chưa có sẵn bằng ngôn ngữ của bạn.
Sites (/sites) is your fleet-wide view of every website across every connected
server. It’s the same rich cards and manage drawer the per-server Sites tab uses,
so you can triage the whole fleet in one place — what needs updates, what’s vulnerable,
whose certificate is expiring — and then manage any single site without leaving the
page. Available on all plans. (Docker apps and stacks live on their own Apps
page, not here.)
Manage a site, step by step
Section titled “Manage a site, step by step”- Find the site — type in the search box (matches domains and aliases) or narrow with the Filters dropdown (type, attention, server, status).
- On a WordPress site, click the card to open its content shell, or click Manage to open the infra drawer. Non-WordPress sites (PHP, static, runtime) open the Manage drawer directly.
- In the Manage drawer, work through the tabs — plugins & themes, PHP version, SSL, cache, tools, security. When the site’s server is online these panels are live; the drawer targets that site’s own agent.
- Changes reflect in place — a switched PHP badge, a new certificate state, a site that appears or disappears. Errors surface as an inline red banner at the top of the list or drawer (never a toast), because a background job can finish after you’ve closed the drawer.
What else you can do
Section titled “What else you can do”- Filter by attention — the Filters dropdown has a dedicated attention select: Needs updates, Vulnerable (a plugin with a known CVE), or SSL attention (a certificate expiring or expired), each with a live count. This is the fast path to “what needs me right now” across the whole fleet.
- Filter by type, server, status — WordPress / PHP / Apps / Static; any one server; and Active / Stopped / Suspended / Error.
- List or Grid view — toggle between dense rows and a screenshot grid (grid cards show the site’s homepage thumbnail and the host server’s IP). Your choice syncs to your account and follows you across devices.
- Group by server — the Layers toggle clusters rows under each server heading.
- Refresh from agents — the refresh button asks every online agent to recompute and re-push its inventory, then reloads the aggregate. The icon reflects the outcome: spinner → check, or a warning if no agent was online to pull from.
- Add site — provision a new site on any online server (pick the target in the create drawer). Hidden for handed-over, site-scoped members, who can’t provision.
- Open site — the Open site button jumps straight to a domain you already know.
- Per-card quick menu — magic login to wp-admin, clone, back up, jump to the Security or Cache tab, enable/disable, or delete — each routed to that site’s own server.
- Domain Manager tab — the Domains button switches to a fleet domain roll-up (see below).
Domain Manager
Section titled “Domain Manager”The Domains button opens the Domain Manager tab (URL /sites?tab=domain-manager,
also reachable at /domains). It’s one row per registrable domain across your fleet —
HTTPS/certificate state and days-to-expiry, Cloudflare vs external DNS, registrar and
domain-registration expiry (via RDAP/WHOIS), host server and created date. A Needs
attention band summarises expiring certs and domains renewing soon. Use Look up
WHOIS to fetch registrar and registration-expiry for every domain, or the per-row
refresh for one. Click a row to jump to that server’s DNS & TLS detail.
How it works
Section titled “How it works”The fleet list is control-plane aggregation, not a live fan-out:
-
The card list reads
GET /v1/servers/sites/all— the agent-pushedsitesinventory cache for every server your grant covers, joined in one query. No per-server WebSocket round-trip, so the page loads instantly; servers that never connected contribute no rows. Each row is tagged with its host server (server_id/server_name/is_online/synced_at) so per-site actions route to the right agent. -
Refresh dispatches a re-push request to every online server, waits a short settle window, then refetches the aggregate — the fresh push arrives via an
inventoryevent. -
The Domain Manager tab reads
GET /v1/servers/domains/all(thesitescache overlaid with the cachedsslcert facts) plus/v1/domainsregistrations (RDAP). -
Per-site actions dispatch a job to that site’s own agent, which runs it natively:
Action Job Agent runs Add site site.createmz site create <domain> [--type …] --jsonDelete site.deletemz site delete <domain> --jsonEnable / disable site.enable/site.disablere-links / unlinks the nginx vhost Switch PHP php.switchmz php switch <domain> <ver> --jsonIssue / remove SSL ssl.issue/ssl.deletecertbot issue / revert to HTTP Magic login wp.login-urlmints a single-use wp-admin login URL Clone site.cloneprovisions a copy on the chosen target
Successes are reflected by the list or drawer changing state; the only error channel is a dismissible inline banner.
CLI & automation
Section titled “CLI & automation”The Sites page itself is a control-plane aggregator (there’s no single box behind it), but
every per-site action it fires is an ordinary mz command on that site’s server. SSH into
the box and run them directly, or let an on-box AI (ClaudeCode) run the same commands:
mz site list --json # every site on this boxmz site create example.com --json # provision a WordPress site + auto HTTPSmz php switch example.com 8.3 --json # zero-downtime per-site PHP switchmz ssl issue example.com --json # issue / renew the certificateThe argv is identical to the job dispatch behind the buttons above. See The mz CLI and the command catalog. For fleet-wide scripting against the aggregator endpoints, see the API reference (Max plan).
Gotchas & troubleshooting
Section titled “Gotchas & troubleshooting”- The list is cached, not live. Rows come from each agent’s last inventory push, so a change made outside MZPanel (or a brand-new site) may lag until the next push. Hit Refresh to force every online agent to re-push. Offline servers still show their last-known sites — dimmed, not gone.
- Actions need the site’s server online. Provision, delete, enable/disable, PHP and SSL all dispatch to that site’s agent; if it’s offline you get an inline “server is offline” message instead of a silent failure.
- Docker apps aren’t here. Sites of type
app/dockerare filtered out of this list — manage them on the Apps page. - Some manage-drawer actions are still mock. When the site’s agent is online, the drawer’s plugins/themes, PHP, SSL, cache, optimize and tools panels are live. A handful of drawer actions — back up now, deploy/rollback for git sites, and a few legacy cache/DB tools — are not yet wired to a real job and are placeholders; the honest status of each lives on the relevant per-site guide.
- Domain Manager collapses subdomains. It shows one row per registrable apex; a subdomain-only domain still appears under its apex. Registrar/expiry come from RDAP and fill in over a few seconds after Look up WHOIS (a failed lookup shows n/a with the reason on hover).
- Site-scoped members see a tailored page. A handed-over customer sees only the sites shared with them and no fleet-only actions (Add site is hidden).
Related
Section titled “Related”- Servers — the fleet server list these sites live on.
- Create a site — provisioning WordPress and other site types.
- Site overview — the per-site health cockpit.
- PHP versions · SSL certificates — the per-site actions this page fires.
- DNS & TLS — the per-server detail behind Domain Manager.