# Addon Module

The PUQ Web Hosting addon is the control centre for your whole fleet: a dashboard, the Infrastructure pages (web / mail / DNS servers, server groups, DNS zones & templates), per‑node Server actions, module Settings, the task queue and operation logs, and the Vanity widget generator. The addon is required — it owns the schema, the queue and the cron runner.

# Dashboard

### PUQ Web Hosting module **[WHMCS](https://puqcloud.com/)**
#####  [Order now](https://puqcloud.com/) | [Download](https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-WEB-Hosting/) | [Community](http://community.puqcloud.com/)

The addon **Home** page is a one‑glance view of your whole hosting operation.

![Addon dashboard](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-v9yl0vne.png)

## Cards

| Card | Shows |
|------|-------|
| **Services** | Total provisioned services (View → the Services list). |
| **Servers** | Total servers (Manage → Infrastructure). |
| **Task Queue** | Tasks currently in the queue (View → Logs → Task Queue). |
| **DNS Zones** | Total logical DNS zones (Manage). |
| **Server Groups** | Shortcut to group management. |
| **Settings** | Shortcut to cron / retry policy / tables. |

## Panels

* **Server capacity** — every node by **type** (web/mail/dns), its capacity used/max and its **last sync** time. A quick health view of each tier.
* **Recent terminal errors** — services whose deploy terminally failed (so you can act fast). Empty is good.
* **Recent services** — the latest provisioned services with their WHMCS and deploy status.

## Navigation

The top bar is the same everywhere:

* **Home** — this dashboard.
* **Services** — the cross‑service admin list (search/filter, open the admin panel, redeploy/verify).
* **Statistics** — per‑domain usage (web/mail split).
* **Infrastructure** — Web / Mail / DNS Servers, Server Groups, DNS Zones, DNS Zone Templates.
* **Logs** — Task Queue, Operation Log.
* **Settings** — General, Cron, Vanity widget.
* **Help** — documentation & support links.


<!-- sync:7c9a2e0167772a5e -->

# Infrastructure: Servers

### PUQ Web Hosting module **[WHMCS](https://puqcloud.com/)**
#####  [Order now](https://puqcloud.com/) | [Download](https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-WEB-Hosting/) | [Community](http://community.puqcloud.com/)

**Infrastructure** is where you register and monitor every node. The same servers are presented under three filtered lists — **Web**, **Mail** and **DNS** — based on their capabilities.

![Web servers](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-hyi5izsd.png)

Each row carries live **CPU / RAM / Disk / Load** bars, the panel‑OK probe, the Hestia version & OS, the group, the capacity used/max, and per‑row actions (open Server Actions, refresh status, sync, edit, delete).

## Capabilities decide the pools

A node's **Web / Mail / DNS** capability flags decide which list it appears in and which roles can be placed on it. See **Add web / mail / DNS servers** for the editor and **Deployment & Segmentation → Server segmentation** for how to design your topology.

![Mail servers](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-6gxki3mi.png)

DNS servers are independent and attached to groups (one server can serve many groups):

![DNS servers](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-2yr2i8a8.png)

## Open a server → Server Actions

Clicking a server's open/manage action takes you to the **Server Actions** page for that node — a full per‑node management console (live config, group‑config drift, PHP versions, file‑manager installs, system services, Hestia users & packages, IPs, maintenance, logs). That page is documented next.


<!-- sync:e4577232209c82be -->

# Server Actions (per node)

### PUQ Web Hosting module **[WHMCS](https://puqcloud.com/)**
#####  [Order now](https://puqcloud.com/) | [Download](https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-WEB-Hosting/) | [Community](http://community.puqcloud.com/)

Opening a server gives you a per‑node console with live stat cards and a tab bar: **System config · Group config · PHP · File Manager · Services · Users · Packages · IPs · Maintenance · Log**.

![Server Actions — system config](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-teb9icdx.png)

## System config

A live, read‑only dump of the node's `hestia.conf` key/value pairs — handy for confirming what a server is actually running.

## Group config (drift)

Compares the node's live config against what its **group** expects, key by key, with a **MATCH / drift** status, and lets you **Apply group config** to push the managed values:

![Server Actions — group config drift](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-qss2p7yw.png)

This is the per‑node view of the group's managed `hestia.conf` (see *Server‑group editor*).

## PHP

Install / remove PHP versions (5.6 – 8.4) with their FPM service, IonCube, and the Ondrej/Sury repositories — with an online gate and a recent‑tasks panel.

![Server Actions — PHP](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-ssnbymst.png)

## File Manager

Install and manage the two built‑in file managers per node — **FileGator** (Vue SPA, drag‑and‑drop) and **net2ftp** (native chmod UI). Each shows its installed version & URL, a custom download URL, and Reinstall / Uninstall / Refresh.

![Server Actions — file managers](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-ji0alqsf.png)

## Services / Users / Packages

* **Services** — system services (apache2, php‑*‑fpm, exim4, dovecot, nginx, bind9…) with state/CPU/memory/uptime and start/stop/restart.

  ![Server Actions — services](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-cw1ymldc.png)
* **Users** — every Hestia user on the node with its package, disk used/quota, bandwidth, domains, DBs and state.

  ![Server Actions — users](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-t0nsqdgn.png)
* **Packages** — the Hestia hosting packages on the node (the module creates a per‑service package automatically).

  ![Server Actions — packages](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-zrnl6ilc.png)

## Maintenance & Log

* **Maintenance** — Test connection / Refresh status, rebuild commands (`v‑rebuild‑*` for users/web/mail/DNS), and Purge Nginx cache.

  ![Server Actions — maintenance](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-wdjluq7w.png)
* **Log** — the operation log filtered to this one node.

  ![Server Actions — log](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-gk5itulf.png)


<!-- sync:559dffde053e8974 -->

# Server‑Group Editor

### PUQ Web Hosting module **[WHMCS](https://puqcloud.com/)**
#####  [Order now](https://puqcloud.com/) | [Download](https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-WEB-Hosting/) | [Community](http://community.puqcloud.com/)

Open a group (Infrastructure → Server Groups → **Open**) to manage its members, its centrally‑managed `hestia.conf`, its DNS cluster and (for vanity groups) its sellable domains. A standard group has these tabs: **Actions · General · All‑servers config · Web config · Mail config · DNS config · Variables · Standard files · DNS servers**.

## Actions — bulk apply per role

![Group — Actions](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-rrr9uh7y.png)

The Actions tab lists the members with their **Type** and **Status**, and pushes config/files **per role**: *Apply Hestia config to all / web only / mail only / DNS only*, *Apply standard files to web*, *Refresh status*. Applying enqueues one task per matching active node.

## General — name & purpose

Name, description and the **Group purpose** (Standard vs Vanity). See **Server Groups** and the **Vanity Mode** chapter.

## Managed `hestia.conf` (role‑targeted)

The module can centrally manage Hestia config keys and keep every node in sync (with drift detection on the node's *Group config* tab). The keys are split by role so they only ever land on the right tier:

* **All‑servers config** — applied to every node (language, theme, security/API, user policies, plugins…).

  ![All-servers config](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-6wdgc3dd.png)
* **Web config** — web‑only (Apache/SSL/Nginx ports, web backend, sync error pages/skeleton, phpMyAdmin/phpPgAdmin aliases).

  ![Web config](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-njtgeang.png)
* **Mail config** — mail‑only (SMTP/IMAP/Sieve systems, antispam/antivirus, webmail, use‑server‑SMTP, notification from‑address).

  ![Mail config](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-pwslch2b.png)
* **DNS config** — Hestia‑DNS‑only (DNSSEC, DNS cluster / remote NS list). PowerDNS nodes have no `hestia.conf` and are skipped.

  ![DNS config](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-hcvvbfxw.png)

Empty fields are **not managed** — the module only pushes the keys you fill in.

## Variables

Group‑wide `{name}` key/value pairs substituted into DNS zone template records (e.g. `ns1`, `ns2`). Empty values fall through to the product's WHMCS configoptions; if both are empty the worker drops template records that reference the variable.

![Variables](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-slcwbyfg.png)

## Standard files (rebranding)

Rebrandable Hestia skeleton files for **web** nodes — error pages (403/404/410/5xx), the default user `index.html` / `robots.txt`, the suspended‑account page, and the unassigned‑IP vhost. Each can be **Overridden** (your content) or **Pulled** from a server, with default/overridden badges.

![Standard files](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-n0kae7oa.png)

## DNS servers (the cluster)

Attach independent DNS servers to the group (active‑active replication) and set the group's default zone template + SOA defaults.

![Group — DNS servers](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-b4zdknla.png)

> A **Vanity** group shows only General / Variables / DNS servers / **Vanity domains** — the hosting‑config tabs are hidden. See **Vanity Mode → Setting up the vanity group**.


<!-- sync:3710820494d38aa8 -->

# DNS Zones & Templates

### PUQ Web Hosting module **[WHMCS](https://puqcloud.com/)**
#####  [Order now](https://puqcloud.com/) | [Download](https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-WEB-Hosting/) | [Community](http://community.puqcloud.com/)

## DNS Zones

Infrastructure → **DNS Zones** lists every **logical** zone (one row per zone). The **Cluster** column shows the per‑DNS‑server deploy state, so you can see at a glance that a zone is live on every nameserver. A **Redeploy** action re‑pushes the zone.

![DNS zones](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-5ucm8gbe.png)

Because zones are logical and replicated, the module gives you an **active‑active** nameserver cluster — the same zone is served identically by every attached DNS node.

## DNS Zone Templates

Infrastructure → **DNS Zone Templates** holds the record sets used when a new zone is created. You can mark one **Default**, add more, or **Seed from file**.

![DNS zone templates](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-ugvhpipj.png)

Open a template to edit its records. Placeholders are substituted at provisioning time — `{domain}`, `{server_ip}`, `{mail_server_ip}`, `{mail_server_hostname}`, `{ns1}`…`{ns8}`, `{domainkey}` (DKIM), `{client_id}`, `{service_id}`, `{year}`, `{unixtime}`.

![DNS zone template editor](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-fywbufdu.png)

The shipped **Default** template is a complete, modern web + mail record set:

* **NS** `@` → `{ns1}` / `{ns2}`
* **A** `@` → `{server_ip}`, **CNAME** `www` / `ftp`
* **CAA** for Let's Encrypt (issue / issuewild / iodef)
* **A** `mail` → `{mail_server_ip}`, **CNAME** `webmail`, **MX** `@`
* **TXT** SPF, DMARC, DKIM (`mail._domainkey` → `{domainkey}`), TLS‑RPT
* **MTA‑STS** (`mta-sts` CNAME + `_mta-sts` TXT), **autodiscover/autoconfig**

> A record that references an empty placeholder (e.g. `{domainkey}` when DKIM isn't ready) is simply skipped — so partial state never produces broken records.


<!-- sync:e4f8ca04d128c0d8 -->

# Settings

### PUQ Web Hosting module **[WHMCS](https://puqcloud.com/)**
#####  [Order now](https://puqcloud.com/) | [Download](https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-WEB-Hosting/) | [Community](http://community.puqcloud.com/)

**Settings** has three pages — **General**, **Cron** and **Vanity widget**. The General page is organised into tabs. The defaults are sensible; tune them as you scale.

## General

The **General** tab itself holds API timeouts and the **task retry policy** (max attempts, back‑off minutes, batch size per cron run, finished‑task retention):

![Settings — General content](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-8ddwbign.png)

The remaining tabs:

| Tab | Controls |
|-----|----------|
| **Provisioning** | Defaults for new users — FTP root path, login shell (`nologin` for managed hosting), Hestia admin/SSH usernames. ![Provisioning](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-gpxlikm5.png) |
| **DNS** | Record TTL (default/min/max, max value length) and module‑wide **SOA defaults**. ![DNS](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-o0pqlnab.png) |
| **SSL** | Auto‑SSL cadence (fast‑mode count/interval, normal interval, active‑cert interval) and the Let's Encrypt **rate‑limit guard**. ![SSL](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-apmjwp7l.png) |
| **Mail & Security** | Webmail / phpMyAdmin URL patterns, DKIM key size, max auto‑reply length, minimum password length. ![Mail & Security](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-dpxqkdop.png) |
| **Logging & Performance** | Log download size cap, tail line limits, mail‑log filter window, SSH heavy‑bash & apt‑lock timeouts. ![Logging](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-oqvgbiox.png) |
| **Integrations** | Overridable upstream URLs — FileGator/net2ftp zips, FTP host fallback, PHP repos (Ondrej PPA, Sury), GPG keyserver, IonCube installer. ![Integrations](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-utvazopv.png) |
| **Notifications** | Failure‑ticket toggle (department + priority), client‑area toast/poll durations, analytics lookback windows. ![Notifications](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-oh3cbu64.png) |
| **Maintenance** | The schema **Check & repair** tool + the deactivation data‑retention toggle. ![Maintenance](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-yprmfitv.png) |

## Cron

The **Cron** page picks the cron mode (WHMCS vs Standalone), shows the crontab line to install, and lists every scheduled task with its enable/interval/last‑run/status, plus concurrency limits.

![Settings — Cron](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-vcejb51t.png)

## Vanity widget

Generates the standalone "claim your name" shop widget — see **Vanity Mode → The vanity shop widget**.


<!-- sync:50d2f2eb0f8ed9ba -->

# Task Queue & Logs

### PUQ Web Hosting module **[WHMCS](https://puqcloud.com/)**
#####  [Order now](https://puqcloud.com/) | [Download](https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-WEB-Hosting/) | [Community](http://community.puqcloud.com/)

Everything the module does runs through a **task queue** processed by the cron runner. The **Logs** menu exposes both the live queue and a persistent operation history.

## Task Queue

Logs → **Task Queue** is the live worker view: each task's ID, service, target, action (e.g. `server.collectStatus`, `web.addFtp`), status, attempts, priority, schedule and error.

![Task Queue](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-6r0kuqvj.png)

Bulk controls let you tidy up: **Delete success / error / cancelled**, **Clean all completed**, and **Force‑fail stuck** (for tasks wedged by an unreachable node).

## Operation Log

Logs → **Operation Log** is a persistent, per‑operation timeline (status collection, deploys, etc.) — useful for auditing what happened and when.

![Operation Log](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-86wklv4a.png)

Click a row to open the full detail — the operation, target, step, status and the complete message body:

![Operation Log detail](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-vqvqchx0.png)

> The retry policy (how many times and how fast failed tasks retry) and the optional **support ticket** on terminal failure are configured in **Settings → General / Notifications**, and explained in **Cron & Automation → Task queue, retries & tickets**.


<!-- sync:f67bda18ff255850 -->

# Vanity Widget

### PUQ Web Hosting module **[WHMCS](https://puqcloud.com/)**
#####  [Order now](https://puqcloud.com/) | [Download](https://download.puqcloud.com/WHMCS/servers/PUQ_WHMCS-WEB-Hosting/) | [Community](http://community.puqcloud.com/)

**Settings → Vanity widget** generates a standalone "claim your name" landing page (two files) that you can drop on any marketing domain to sell vanity slots outside the WHMCS portal.

![Vanity widget config](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-7tkzmcng.png)

In short, you: (1) get/regenerate a **shared API key**, (2) pick the **vanity product**, (3) copy the config block into `proxy.php`, (4) choose the **cart behaviour**, then **download** `proxy.php` + `index.html` and upload both to each marketing domain's web root.

![Vanity widget download](https://doc.puq.info/uploads/images/gallery/2026-06/embedded-image-hhslnk00.png)

The browser only ever talks to the widget's own `proxy.php` (which holds the key and caches answers) — the key never reaches the visitor.

> The full setup, the buyer's flow and the security model are documented in the dedicated **Vanity Mode → The vanity shop widget** page.


<!-- sync:0d21949f35697f3b -->

