Part 1 of Hetzner Cloud Module Installation for WHMCS
Part 2 of Hetzner Cloud Module Installation for WHMCS
Continuing from part 3 of Hetzner Cloud Module Installation for WHMCS
What's new in 3.9.5
Upload the two module folders over the ones already installed and open any addon page once. There is nothing to run.
Resources covers the whole Project
The addon's Resources page used to hold load balancers, certificates, placement groups and published snapshots. It now adds volumes, firewalls, floating IPs, primary IPs, private networks and SSH keys, each with full management — create, rename, label, resize, attach, assign, reverse DNS, rules, subnets, delete protection, delete.
Only the panel you are looking at is fetched, so the page stays quick.
Destructive actions refuse rather than cascade. An attached volume, an assigned IP, a network with servers on it, or anything delete-protected is reported back with what to do instead. Nothing is forced through.
Three things to pass on to staff:
- A new firewall drops all inbound traffic, including SSH, until you add an inbound rule. Outbound is unaffected.
- Firewall CIDRs must be network-aligned —
10.0.0.0/8, not10.0.0.1/8. - A primary or floating IP bills from the moment it exists, assigned or not. Unassigning does not stop the charge; deleting does.
Long lists are no longer cut short
Hetzner returns 25 rows per request and caps them at 50. Lists that were meant to be complete are now walked page by page.
Two things you may notice immediately on a Project with more than 25 servers: the Dashboard figures were calculated from the first 25 only, and the orphan report treated everything past the 25th as having no WHMCS servers. Both are now correct.
Every paginated table also gains a Per page control offering 10, 25, 50 or 100 rows. The default stays at 10 and the choice follows the administrator, not the installation.
Every table now also says where you are — Showing 21-30 of 237 — page 3 of 24 — rather than four unlabelled arrows that gave no clue how much was left. The same wording appears on the client dashboard, so the two modules read alike, and it is translated into all 28 languages.
The Orphan Report is paginated too, and its statuses render as badges. WHMCS's Terminated, Cancelled and Fraud statuses are now coloured as problems rather than left grey alongside Active.
What the customer sees
Two cards sit under the Billing panel: Configurable Options — every
option written out plainly, so alma-10|AlmaLinux 10 reads as AlmaLinux 10 —
and Add-ons, with billing cycle and status. Both come from WHMCS, so they are
right even when the provider cannot be reached.
A service that is not Active no longer draws the dashboard. A terminated service used to render the whole shell over an error banner because its server was already gone. Each status now gets a short notice, the dashboard script is not loaded, and the module refuses every action for that service. This applies to administrators too — a suspended service cannot be managed from the service tab until it is unsuspended.
Who can do what
Volumes are read-only for a customer: mount instructions and action history. Resizing, labelling, protecting and detaching are yours. Renaming is replaced by labelling, because the mount path the customer already followed is derived from the name.
Snapshots can be created and restored by a customer but not deleted. The new Snapshot Limit product setting caps how many a service may hold, default one. Scheduling is admin-only, and says plainly that it runs from the WHMCS daily cron rather than from Hetzner, so a missed day is skipped rather than caught up.
Smaller additions
- Labels on volumes and IPs, Show instructions on volumes and floating IPs, Action history from the provider's own log.
- Convert a backup to a snapshot before the rotation discards it.
- Reset reverse DNS to the provider default.
- Live progress bars for snapshot, restore and reinstall.
- The Console tab shows the root password, with reveal and copy.
Order Form Styling (optional, off by default)
A per-product switch in Module Settings under Order Form. Turned on, the configure-product step is restyled to match the client dashboard: each configurable option becomes a full-width card whose label carries a coloured icon for what it is — a purple camera for Snapshots, green storage for Volume Size, a red shield for Firewall, an orange globe for Floating IPs. Configure Server and Additional Information fields match, and the SSH key and cloud-init boxes become resizable monospaced areas.
It is cosmetic only — a stylesheet, no scripts, no markup changes. It loads only on the cart page, only for a product this module provisions, and only when the switch is on. It works on any order form template, and the icons are drawn in the stylesheet rather than taken from an icon font, so they appear even on a cart theme that ships none.
Turned off — the default — nothing is injected at all.
Prices in every currency
The module wrote the product price into your default currency only, leaving the rest blank on the Pricing tab so customers paying in them could not order. Saving a product now fills every other currency, converted at the exchange rate WHMCS already holds, covering recurring prices and setup fees.
It only ever fills a blank. WHMCS records a cycle you have not enabled as
-1, and that is the only value replaced — a price you typed yourself, including
a deliberate 0.00, is never touched. If your exchange rates are stale so are
these prices; the module reads what is under Setup → Payments → Currencies
and fetches no rates of its own.
Fixes worth knowing
- Reverse DNS could never be set on a floating IPv6: the whole
/64block was sent where one address was expected. - The client area tab strip wrapped onto a second line with every feature on.
- Eight tab loads and ten action buttons had no visible busy state.
- Reinstall and ISO lists now offer only builds for the server's own CPU architecture; previously each OS appeared twice and half could not boot.