WHMCSModule Networks
AUTOMATION PLATFORM ...
Article Guide

Module Installation for Hetzner Dedicated Servers for WHMCS

Hetzner Modules • 5 Sep 2025 • By Ankita
Home / Docs / Module Installation for Hetzner Dedicated Servers for WHMCS
Hetzner Server Manager — installation

Hetzner Dedicated Servers Automation for WHMCS is a highly convenient tool for anyone looking to automate the management of their Dedicated Servers.

This module enables your clients to remotely manage server status, access the docker details (if installed), and rebuild their machines with ease. It also offers flexibility to customize your services, making it easy to meet even the most demanding client requirements.

Prerequisites

  • WHMCS 9.x with a working system cron.
  • PHP 8.2+ version your WHMCS version requires (cURL enabled).
  • Ioncube v14 and above
  • A Hetzner Robot webservice user. Allow the WHMCS server IP in Robot if you use IP restriction.
  • A license key for Hetzner Server Automation from WHMCSModule Networks.
Fresh installation

Use this when the old hetzner module is not in production on this WHMCS.

1. Copy files

Copy the folders and optional catalog files from the table above. Do not skip the provisioning module: addon activate refuses to run without it.

2. Activate the provisioning module
  1. Setup → Products/Services → Servers is optional. This module sets RequiresServer to false.
  2. Setup → Addon Modules is next; products pick this module later.
  3. Create or edit a product: Module Settings → Module Name = Hetzner Server Manager.

WHMCS creates serverId|Server ID (admin-only) and sshKey|SSH Key (order) custom fields when you open Module Settings.

3. Activate the addon
  1. Setup → Addon Modules → Hetzner Server Manager → Activate.
  2. Grant admin role access.
  3. Paste the License Key and save.
  4. Open Addons → Hetzner Server Manager. If the license is empty or invalid you only see the License page.
4. Add a Robot account

Addons → Hetzner Server Manager → Accounts: name, Robot username, password. Test connection. Three failed Basic-auth attempts can IP-ban Robot access; do not hammer 401s.

5. Configure the product

Module Settings (sectioned UI):

  1. API Account — the row from step 4.
  2. Product Type — standard or market.
  3. Product ID — Robot product id (standard) or auction product id.
  4. Location — e.g. FSN1 for standard orders.
  5. Dist / language / IPv4 addon as needed.
  6. Client feature toggles 13–20.
  7. Optional: Test order (extra product setting, not a Robot live order).
  8. Save.

Do not put Robot credentials on a WHMCS server record.

6. Catalog pages (optional)
  1. Copy standard-servers.php and marketing-servers.php to the WHMCS root, or copy them to the filenames you will save in Catalog.
  2. Copy the matching .tpl into templates/<active-theme>/.
  3. Addons → Catalog: Robot account, product groups, page URIs, template filenames, navbar on/off.
  4. Navbar reads those URIs. Empty URI hides that link. Custom URI examples: dedicated.php, cart.php?gid=3.
  5. External HTML sites: enable API, allowlist hostnames, issue token, paste the embed snippet. Checkout always returns to this WHMCS cart.

Upgrade (already on hetzner_server)

Use this when 1.x is already activated.

  1. Back up the WHMCS database and modules/{servers,addons}/hetzner_server/.
  2. Overwrite those two module directories with the new package (same folder names).
  3. Overwrite catalog root PHP files only if you still use the shipped names and have not customized them. If you renamed standard-servers.php, merge by hand.
  4. Catalog templates ship only in modules/addons/hetzner_server/templates/storefront/. The package has no WHMCS-theme templates/ folder. Edit those addon files to customize. If an older install still has standard-servers.tpl or marketing-servers.tpl under a client theme, delete those files.
  5. Setup → Addon Modules → Hetzner Server Manager → Upgrade if WHMCS shows an Upgrade button. hetzner_server_upgrade() calls ensureTable() on all module tables; missing columns/tables are created.
  6. Confirm both version constants show the same number

Do not run the Migration page for an upgrade. That page is only for products still on servertype=hetzner.


Migration from the old hetzner module

Goal: products and services keep working, now on hetzner_server, without deleting the old files until you cut over.

Before you start
  • Old and new folders both exist on disk.
  • License for the new addon is active.
  • At least one Robot account in the new addon (Migration also imports hetzner accounts when it can unseal or read the password).
  • Snapshot the database.
  • Note every product that has Module Name = Hetzner (hetzner).
  • Leave old crontab running until new cron has delivered a test order, then disable modules/addons/hetzner/crons/hetznercron.php.
What Migration does

Addons → Hetzner Server Manager → Migration, one product at a time:

  1. Sets tblproducts.servertype from hetzner to hetzner_server.
  2. Ensures serverId|Server ID.
  3. For each service without a Server ID: copies integer server_number from tblservers.accesshash, else from hosting username.
  4. Imports Robot accounts from hetzner account when name+user+password are usable (re-seals into new hetzner accounts).
  5. Writes an activity log line.
What Migration does not do
  • Remap configoption1–8 to the new slot layout. You must re-save Module Settings or provisioning will use the old bandwidth value as an account id.
  • Copy pending rows from hetzner order into new hetzner orders. Finish or recreate in-flight Robot orders.
  • Copy hetzner config (navbar pages, markup, groups). Re-enter Catalog.
  • Move Storage Box products. Those are out of scope.
  • Delete old tables, old folders, or includes/hooks/hetznerServer.php.
Steps
  1. Install files as in Fresh installation (side by side with hetzner).
  2. Activate addon, license, add/import accounts.
  3. Confirm WHMCS cron every five minutes.
  4. Pick a low-traffic product first. Migration → Migrate.
  5. Open that product → Module Settings → set API Account, type, product id, location, features → Save.
  6. Open one service: Server ID should be the Robot number. Client tab should load.
  7. Repeat for remaining products.
  8. Recreate Catalog settings (page URIs can stay standard-servers.php / marketing-servers.php if those files still exist).
  9. Turn Client navbar on in the new Catalog. Remove or empty includes/hooks/hetznerServer.php so the old Dedicated Servers menu disappears.
  10. Replace old root PHP files with the new standard-servers.php / marketing-servers.php. Templates come from the addon storefront folder; you do not copy them into the active theme.
  11. Stop the old crontab. Leave old module folders until you are sure. Then deactivate the old addon.
If Server ID is empty after migrate

The service had no numeric id in accesshash or username. Set Server ID on the product custom field to the Robot server_number (integer, not the IPv4).


Troubleshooting
Symptom What to check
Addon activate: install provisioning first modules/servers/hetzner_server/hetzner_server.php missing
License page only Key, outbound HTTPS to secure.whmcsmodule.net, server time
Test connection fails Robot user/pass, IP allowlist, do not retry 401 in a loop
CreateAccount succeeds, no server WHMCS cron; Orders in the addon; Robot transaction status
Catalog 404 Root PHP filename vs Catalog page URI; theme .tpl name vs template setting
Two navbar menus Old includes/hooks/hetznerServer.php still loaded
Traffic graph off vs Robot This suite uses Robot GB × 1024 for the chart (from 1.1.35)
Duplicate module in product list Both hetzner and hetzner_server installed; expected during migrate

Have Questions About This Article?

Our dedicated support engineers are available 24/7 to assist with your configuration.

Contact Support Client Area
Hello!
Swity AI Assistant