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
- Setup → Products/Services → Servers is optional. This module sets
RequiresServerto false. - Setup → Addon Modules is next; products pick this module later.
- 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
- Setup → Addon Modules → Hetzner Server Manager → Activate.
- Grant admin role access.
- Paste the License Key and save.
- 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):
- API Account — the row from step 4.
- Product Type —
standardormarket. - Product ID — Robot product id (standard) or auction product id.
- Location — e.g.
FSN1for standard orders. - Dist / language / IPv4 addon as needed.
- Client feature toggles 13–20.
- Optional: Test order (extra product setting, not a Robot live order).
- Save.
Do not put Robot credentials on a WHMCS server record.
6. Catalog pages (optional)
- Copy
standard-servers.phpandmarketing-servers.phpto the WHMCS root, or copy them to the filenames you will save in Catalog. - Copy the matching
.tplintotemplates/<active-theme>/. - Addons → Catalog: Robot account, product groups, page URIs, template filenames, navbar on/off.
- Navbar reads those URIs. Empty URI hides that link. Custom URI examples:
dedicated.php,cart.php?gid=3. -
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.
- Back up the WHMCS database and
modules/{servers,addons}/hetzner_server/. - Overwrite those two module directories with the new package (same folder names).
- 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. - Catalog templates ship only in
modules/addons/hetzner_server/templates/storefront/. The package has no WHMCS-themetemplates/folder. Edit those addon files to customize. If an older install still hasstandard-servers.tplormarketing-servers.tplunder a client theme, delete those files. - Setup → Addon Modules → Hetzner Server Manager → Upgrade if WHMCS shows an Upgrade button.
hetzner_server_upgrade()callsensureTable()on all module tables; missing columns/tables are created. - 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 accountswhen 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:
- Sets
tblproducts.servertypefromhetznertohetzner_server. - Ensures
serverId|Server ID. - For each service without a Server ID: copies integer
server_numberfromtblservers.accesshash, else from hosting username. - Imports Robot accounts from
hetzner accountwhen name+user+password are usable (re-seals intonew hetzner accounts). - Writes an activity log line.
What Migration does not do
- Remap
configoption1–8to 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 orderintonew 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
- Install files as in Fresh installation (side by side with
hetzner). - Activate addon, license, add/import accounts.
- Confirm WHMCS cron every five minutes.
- Pick a low-traffic product first. Migration → Migrate.
- Open that product → Module Settings → set API Account, type, product id, location, features → Save.
- Open one service: Server ID should be the Robot number. Client tab should load.
- Repeat for remaining products.
- Recreate Catalog settings (page URIs can stay
standard-servers.php/marketing-servers.phpif those files still exist). - Turn Client navbar on in the new Catalog. Remove or empty
includes/hooks/hetznerServer.phpso the old Dedicated Servers menu disappears. - 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. - 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 |