DirhamHost · Sixty Seven Digital FZCO

DirhamHost Setup Guide

Install DirhamHost on your own server, activate a licence, turn on the add-ons, migrate your sites in, and run day-to-day operations. One command to start, a 14-day free trial, no per-account fees.

One-line install 14-day free trial AlmaLinux 9 / Ubuntu 24.04
Get started in one line

Quick start

On a fresh server, run the installer as root. It detects your OS, installs the full stack, and starts a 14-day trial automatically. Set your panel hostname and an email for SSL.

# fresh AlmaLinux 9 or Ubuntu 24.04 server, as root
curl -fsSL https://get.dirhamaday.ae | DH_HOSTNAME=panel.yourdomain.ae DH_EMAIL=you@yourdomain.ae bash

That is it. In a few minutes the installer prints your panel URL, an admin username and a one-time password. Open https://panel.yourdomain.ae:8443 and sign in. Your server immediately appears in the Dirham A Day owner console as a new install on a 14-day trial.

Point DNS first. Create an A record for panel.yourdomain.ae to the server's IP before you install, so the panel gets a valid Let's Encrypt certificate on the first run.
Before you begin

Requirements

A clean server

A fresh VPS or dedicated server with nothing else installed (no existing cPanel, Plesk, nginx, Apache or MySQL). 2 vCPU / 4 GB RAM is a sensible minimum; more for busy sites.

Supported OS

AlmaLinux 9 (recommended) or Ubuntu 24.04 LTS, 64-bit. The installer auto-detects which and adapts.

Root + a hostname

Root SSH access, and a hostname you control (e.g. panel.yourdomain.ae) pointed at the server's IP for the panel certificate.

Fresh only. The installer refuses to run if it detects a web server, database or another control panel already running, to avoid clobbering a live box. To migrate an existing cPanel/CWP server, install DirhamHost on a new server and use the importer (see below).
Under the hood

What gets installed

One command lays down the whole hosting stack, hardened and wired together, plus the three DirhamHost services.

Web & runtime

nginx, PHP-FPM 8.1 / 8.2 / 8.3 (switchable per account), MariaDB 10.11, phpMyAdmin.

DNS, mail & FTP

PowerDNS (with a local API), Postfix + Dovecot with Omnio webmail, pure-ftpd (FTPS).

Security

CSF firewall + LFD, ModSecurity WAF, Let's Encrypt via acme.sh, SELinux enforcing, Redis + rspamd for mail.

DirhamHost services

dh-agent (root executor), dh-api (panel API on 127.0.0.1:8800), and the panel served by nginx on port 8443.

Your first minutes

First login

1
Open the panel

https://panel.yourdomain.ae:8443 — the operator (Host) panel. The customer (Users) panel lives at /user/.

2
Sign in as admin

Username admin. The one-time password is printed at the end of the install and saved to /etc/dirhamhost/admin.initial until your first login.

3
Change the password

Rotate it immediately, and turn on TOTP two-factor from the panel. From the shell you can also run:

/opt/dirhamhost/bin/dh-api passwd 'a-strong-new-password'
4
Check everything is running
dhctl op system.info
systemctl status dh-agent dh-api nginx mariadb pdns csf
Trial to paid

Licence & 14-day trial

Every fresh install starts a 14-day free trial automatically (up to 5 hosting accounts) — no key needed. When you are ready, activate a paid licence; there are no per-account fees.

Check your licence state

dhctl op license.status

Activate a paid key

APPLY=1 dhctl op license.activate key=DH-XXXX-XXXX-XXXX-XXXX-XXXX
TierHosting accountsGood for
Trial5 (14 days)Kicking the tyres
Solo50A personal fleet of sites
Pro200A growing hosting business
UnlimitedEffectively unlimitedFull hosts & resellers
One-click assign. When you install, your server shows up in the Dirham A Day owner console → Nodes with its IP, location and hostname. From there we can assign or upgrade your licence in one click — your node picks up the new tier on its next check-in, no re-activation needed.
Optional power-ups

The add-ons

Four add-ons extend DirhamHost. They are entitlements on your licence — once granted, they light up in the panel automatically after the next check-in (within a few minutes).

🛡 DirhamGuard

Per-account resource limits (CPU, RAM, processes, IO) so one busy site never slows the rest. Set limits per package; watch usage per account.

📦 DirhamVault

Automatic off-site backups with one-click restore of a whole account, or a single file, database or mailbox.

🧾 DirhamBill

Native billing: invoices, recurring card payments in AED via Stripe, a customer client area and domain provisioning. A WHMCS alternative with no separate licence.

✉ Omnio Email

Branded webmail on your own hostname, single sign-on from the panel, and full deliverability (SPF/DKIM/DMARC).

Turn an add-on on

Buy or comp the add-on from the owner console (it is added to your licence's entitlements). On the node, confirm it is live:

dhctl op license.status        # "features" lists your granted add-ons
systemctl restart dh-api       # pick up a just-granted add-on immediately
Day one

Accounts & packages

A package defines the limits; an account is a hosting customer. Create a package once, then spin up accounts against it. Every op is dry-run by default — add APPLY=1 to execute.

Create a hosting package

APPLY=1 dhctl op package.save name=starter disk_gb=10 bandwidth_mb=100000 \
  php_memory_mb=256 php_max_children=12 max_databases=10 max_email=25 sites=5

Create an account

APPLY=1 dhctl op account.create username=acme domain=acme.ae package=starter
dhctl op account.list

Everyday account actions

APPLY=1 dhctl op account.setphp username=acme version=8.3
APPLY=1 dhctl op account.changepackage username=acme package=pro
APPLY=1 dhctl op account.suspend username=acme
APPLY=1 dhctl op account.backup username=acme
Bring your customers over

Migrate sites in

DirhamHost imports from cPanel/WHM and CentOS Web Panel (CWP), by uploaded archive or a live SSH pull, at full fidelity — files, databases, email, DNS and SSL.

From cPanel (live pull)

# authorise this node's key on the old server, then pull + import
dhctl op import.remote.key
APPLY=1 dhctl op import.remote.pull host=OLD_IP ssh_user=root account=cpuser
APPLY=1 dhctl op import.cpanel archive=/var/lib/dirhamhost/imports/cpmove-cpuser.tar.gz \
  username=cpuser package=starter domain=cpuser-domain.ae

From CentOS Web Panel (CWP)

APPLY=1 dhctl op import.cwp.test host=OLD_IP ssh_user=root
APPLY=1 dhctl op import.cwp.pull host=OLD_IP ssh_user=root account=cwpuser
dhctl op import.cwp.status
Zero-downtime option. Keep the old server answering and turn each migrated site into a reverse proxy to the new node, so nothing in DNS changes until you are ready to flip. Ask the Dirham A Day team for the proxy-cutover recipe.
The essentials

SSL, DNS & email

Free SSL (auto-renewing)

APPLY=1 dhctl op ssl.issue username=acme     # issues + installs for acme.ae and www

Certificates renew themselves via acme.sh four times a day. The domain must resolve to this server and port 80 be reachable.

DNS

dhctl op dns.list domain=acme.ae
APPLY=1 dhctl op dns.add domain=acme.ae name=blog type=A content=1.2.3.4

Email

APPLY=1 dhctl op mail.mailbox.create address=info@acme.ae password='...'   # see dhctl ops for exact op names

Mailboxes get a setup email automatically; webmail (Omnio) opens already signed-in from the panel. SPF/DKIM/DMARC records are generated for each domain.

Sell hosting

Branded client area

With DirhamBill you get a customer-facing client area and store at my.yourdomain.com — sign-up, the store, domains, invoices, card payments and tickets — all under your brand.

  • Point a subdomain — an A record for my.yourdomain.com to this server.
  • Provision it — set up the client-area vhost + certificate for that host.
  • Connect Stripe — paste your Stripe secret in the panel's billing settings (AED).
  • Go live — customers buy hosting & domains; accounts provision automatically on payment.
Keep it safe

Security & backups

Firewall (CSF)

csf -r                 # reload rules
csf -a 1.2.3.4         # allow an IP
csf -d 5.6.7.8         # deny an IP
csf -x                 # disable (recovery); csf -e to re-enable
Locked yourself out? Open your provider's VNC/KVM console and run csf -x to disable the firewall, fix the rule, then csf -e.

Backups (DirhamVault)

dhctl op backup.list
APPLY=1 dhctl op account.backup username=acme
APPLY=1 dhctl op account.restore username=acme archive=/path/to/backup.tar.gz

Updates

dhctl op system.info                 # current version
systemctl restart dh-agent dh-api    # after an update lands
The toolbox

Command reference

Everything the panel does is a named, allow-listed operation you can also run from the shell with dhctl. List them all, inspect one, or run it. Dry-run is the default; APPLY=1 executes.

dhctl ops                              # list every operation
dhctl op account.create username=x domain=x.ae package=starter   # dry-run
APPLY=1 dhctl op account.create username=x domain=x.ae package=starter
AreaHandy ops
Accountsaccount.create · account.list · account.suspend · account.changepackage · account.setphp · account.backup · account.restore
Packagespackage.save · packages.list · package.delete
SSL & DNSssl.issue · ssl.status · dns.list · dns.add · dns.update · dns.nameservers.apply
Databasesdb.create · db.user.create · db.grant · db.pmatoken (one-click phpMyAdmin)
Migrationimport.remote.pull · import.cpanel · import.cwp.pull · import.cwp.status
Licencelicense.status · license.activate · license.enforce
Systemsystem.info · backup.list · account.usage
When something is off

Troubleshooting

  • Panel won't loadsystemctl status dh-api nginx; check journalctl -u dh-api -n 50.
  • Install failed part-way — re-run the installer; completed steps are skipped, so it resumes safely.
  • SSL didn't issue — confirm the hostname resolves to this server and port 80 is open, then APPLY=1 dhctl op ssl.issue username=....
  • Licence says invaliddhctl op license.status; a node binds to one machine, ask us to rebind if you moved servers.
  • A site is slow / "resource limit" — check DirhamGuard usage for that account and raise its package limits.
  • Locked out by the firewall — provider console → csf -x.
We are here 24/7. From the panel, DirhamHost Support opens a ticket straight to the Dirham A Day team, authenticated by your licence — no need to explain who you are.
Runbook

Files & ports

ThingWhere
Operator / customer panelhttps://<host>:8443/ · /user/
Binaries · CLI/opt/dirhamhost/bin/ (dh-agent, dh-api, dhctl)
Config/etc/dirhamhost/ (admin.initial, ssl/, license, stripe.secret)
State & imports/var/lib/dirhamhost/ (imports/, backups, license.status)
Panel web files/var/www/dirhamhost/panel/
Audit log/var/log/dirhamhost/ · install: /var/log/dirhamhost-install.log
Open ports21 (ftp), 25/587/465/993 (mail), 53 (dns), 80/443 (web), 8443 (panel), 2096/2097 (webmail/pma)
Servicesdh-agent · dh-api · nginx · mariadb · pdns · postfix · dovecot · csf

Need a hand, a licence, or a migration done for you? Talk to the Dirham A Day team — support@dirhamaday.ae or WhatsApp +971 58 553 6767.