# DNS Manager — Servers

### PUQcloud Panel

##### [Order Now](https://puqcloud.com/puqcloud-panel.php) | [Download](https://github.com/puqcloud/PUQcloud) | [FAQ](https://faq.puqcloud.com/)

#### 1) Purpose of this section

In **Servers** you connect your **real DNS servers** to PUQcloud. Then you attach these servers to **Server Groups**, and groups power your **Zones** (create/update records, reload zones, import/export).

**Path:** **Settings → DNS Manager → Servers**  
[![DNS Servers list (e.g., hCP-211 / pDNS-194 / pDNS-204, Module column visible)](https://doc.puq.info/uploads/images/gallery/2025-11/scaled-1680-/3.png)](https://doc.puq.info/uploads/images/gallery/2025-11/3.png)

- - - - - -

#### 2) Supported modules

PUQcloud integrates via pluggable modules:

##### • PUQ PowerDNS

Direct integration with the **PowerDNS HTTP API** (typically port `8081`). The panel creates/updates zones and records through the REST API and provides **Save and Test** to confirm connectivity and show the PowerDNS version.

**Use when:** you run your own PowerDNS authoritative servers and want fast, transparent automation (including ACME/SSL “tech zone” workflows).

##### • PUQ HestiaCP DNS

Manages zones/records via the **HestiaCP API**. Operations are performed under a HestiaCP user/API key you supply.

**Use when:** your DNS lives inside HestiaCP and you want to centralize control via PUQcloud.

> You can run both modules side-by-side in different **Server Groups** (handy for migrations or prod/staging separation).

- - - - - -

#### 3) Create a server — step by step

1. Open **Servers** and click **+ Create**.
2. Enter a **Name** (a friendly label).
3. Choose **Module**: **PUQ PowerDNS** or **PUQ HestiaCP DNS**.
4. Click **Save** — you’ll land on the edit page with connection fields.

[![Create DNS Server (module selector with PUQ PowerDNS / PUQ HestiaCP DNS)](https://doc.puq.info/uploads/images/gallery/2025-11/scaled-1680-/4.png)](https://doc.puq.info/uploads/images/gallery/2025-11/4.png)

- - - - - -

#### 4) Configure PowerDNS (PUQ PowerDNS)

**[![Edit DNS Server (PowerDNS): Name, Description, Server, API Key; buttons Save / Save and Test / Import](https://doc.puq.info/uploads/images/gallery/2025-11/scaled-1680-/5.png)](https://doc.puq.info/uploads/images/gallery/2025-11/5.png)**

[![Connection Test Result — “Server is available”, PowerDNS version shown](https://doc.puq.info/uploads/images/gallery/2025-11/scaled-1680-/6.png)](https://doc.puq.info/uploads/images/gallery/2025-11/6.png)

##### Fields

<table id="bkmrk-field-what-to-enter-"><thead><tr><th>Field</th><th>What to enter</th><th>Example / Tip</th></tr></thead><tbody><tr><td>**Name**</td><td>Any friendly name</td><td>`pDNS-194`</td></tr><tr><td>**Description**</td><td>Optional note</td><td>`PowerDNS on dev node`</td></tr><tr><td>**Server**</td><td>Full API URL incl. protocol &amp; port</td><td>`http://203.0.113.194:8081` or `https://dns.example.com:8081`</td></tr><tr><td>**API Key**</td><td>PowerDNS API token (`api-key=` in config)</td><td>Create a **dedicated key** for PUQcloud only</td></tr></tbody></table>

##### Buttons

- **Save and Test** — checks connectivity and displays the **PowerDNS version**.
- **Import** — pulls existing zones from this server (useful on first attach).
- **Save** — persists the settings.

##### Security tips

- **IP-restrict** the PowerDNS API to your PUQcloud host.
- Prefer **HTTPS** to the API, use a separate **API Key** with least privilege.
- Watch PowerDNS logs during imports or bulk changes.

- - - - - -

#### 5) Configure HestiaCP (PUQ HestiaCP DNS)

After selecting **PUQ HestiaCP DNS**, the edit form shows the HestiaCP API connection fields (API URL + authentication parameters according to your HestiaCP setup — token or user/password).

**Recommendations:**

- Create a **dedicated HestiaCP user/API key** for PUQcloud.
- Confirm the API is **enabled and reachable** from the PUQcloud host.
- After **Save and Test**, verify by creating a test zone under **Zones**.

- - - - - -

#### 6) Add the server to a group

Once the server tests OK, go to **Settings → DNS Manager → Server Groups → Edit** and add it under **DNS Servers** for the target group.  
Then click **Reload All Zones** to deploy **all group zones** onto this newly attached node.

- - - - - -

#### 7) Typical scenarios

##### A. PowerDNS cluster for the ACME tech zone

1. Add **2+ PowerDNS servers** (in **Servers**), test each with **Save and Test**.
2. Create a group **PowerDNS (devns)**, set **NS Domains** (e.g., `devns1.example.com`, `devns2.example.com`), and attach both servers.
3. Delegate those NS at your registrar.
4. Create the **tech zone** `acme.example.com` in this group.
5. In **SSL Manager → Certificate Authorities**, select this tech zone as **DNS Zone**. Done.

##### B. Migrating from HestiaCP to PowerDNS

1. Connect your PowerDNS servers.
2. Import zones from HestiaCP (use the **Import** button on PowerDNS or **Zones → Export / Import**).
3. Create a new **Server Group** for PowerDNS and **Move To** switch zones into it.
4. After validation, change domain **delegation** at the registrar to the new NS.

- - - - - -

#### 8) Best practices

- **Redundancy:** attach **at least two** servers to each group (ideally different regions/ASNs).
- **Naming:** keep labels clear — `pDNS-194`, `pDNS-204`, `hCP-211`.
- Always run **Save and Test** after changing connection params.
- Keep zone **TTL 300–600s** during active changes/migrations.
- Lock down APIs by **IP allowlists** and use **HTTPS** where possible.
- Export zones as backups before **bulk operations**.

- - - - - -

#### 9) Troubleshooting

<table id="bkmrk-symptom-likely-cause"><thead><tr><th>Symptom</th><th>Likely cause</th><th>Fix</th></tr></thead><tbody><tr><td>**Save and Test** fails</td><td>Wrong URL/port/key or firewall blocks access</td><td>Verify `http(s)://host:port`, API key, and allow the PUQcloud IP</td></tr><tr><td>Zone import incomplete</td><td>API/user lacks permissions</td><td>Grant appropriate rights or use **Zones → Import**</td></tr><tr><td>Group zones don’t deploy to the new server</td><td>Server not added to **Server Group**</td><td>Add it, then **Reload All Zones**</td></tr><tr><td>Different answers from NS nodes</td><td>One node out of sync or offline</td><td>Check health/logs, **Reload All Zones**, restore connectivity</td></tr></tbody></table>