Konradodocs

DirectAdmin

Let Konrado check the user behind each ticket, through the DirectAdmin API or the Konrado plugin.

DirectAdmin
Hosting panel
The user behind every ticket

With DirectAdmin connected, Konrado checks the user behind a ticket: the package, the domains, DNS, mail, SSL and backups. It only reads. Nothing on your server changes.

You connect a server in one of two ways. With the API, Konrado reads DirectAdmin with a login key and nothing is installed. With the Konrado plugin, you run one command as root and Konrado also reads the firewall, CloudLinux, Imunify, cron jobs and Git repositories. The API is the current way. The plugin is the legacy way: it keeps working where it is installed, and a new server should use the API. Pick a tab below: every section follows your choice.

API
Nothing to install
A DirectAdmin login key for an admin, reseller or user.
Konrado plugin
Legacy method
One command as root. Adds firewall, CloudLinux and Imunify data.
Access
Read-only
Konrado never changes a user.
Agents get
Account lookups
For the customer behind each ticket.

What Konrado reads

Konrado works out whether the login key belongs to an admin, a reseller or a user. It reads only what DirectAdmin lets that account see, for the user and domain in the ticket.

DataHow it helps
AccountPackage, usage, limits, the reseller above the user, and the domains
WebsiteDocument root, subdomains, domain pointers, the DNS zone and SSL status
MailMailboxes, forwarders, autoresponders, filters and delivery logs of the last 24 hours
FilesThe document root, a short file listing and the FTP accounts
DatabasesThe databases the user can see
BackupsDirectAdmin backups, and JetBackup 5 backups where it is installed
ServerCPU, memory, disks, load, services and uptime. Only with an admin key
DataHow it helps
User and ownerUsername, account type, reseller, domains, package, quota and usage
Domain setupMain domain, subdomains, pointers and aliases, IP, document root, DNS records, SSL, logs and the file tree
MailMail accounts, forwarders, autoresponders, filters, SpamAssassin settings, mailbox size and recent Exim delivery logs
Account servicesFTP accounts, MySQL databases and users, cron jobs, Git repositories, SSH keys, PHP versions and backup files
SystemDirectAdmin system information, usage summaries, and CloudLinux (LVE) history where it runs
Backups and securityJetBackup 5 data, the CSF status of an IP, and Imunify360 or ImunifyAV malware, scan and WAF results where they run

What Konrado cannot do

Not possibleWhy
Create, suspend, upgrade or delete a userKonrado reads. User changes stay in DirectAdmin or your billing system
Change DNS, SSL, mail, filters, databases, files, FTP, cron, Git or SSH settingsKonrado can read them, not change them
Restore a backup, clean malware, unblock an IP or clear the mail queueBackup, security and mail data are for diagnosis only
Show passwords, keys or the contents of mailSecrets and private messages never go into a reply
See past the serverA problem at the registrar, a CDN or another mail host needs its own check
Run shell commandsKonrado uses fixed lookups, not a terminal
Read past the login key's roleDirectAdmin decides what the key's account may see
Security model

Konrado calls DirectAdmin over HTTPS with one login key you can revoke at any time. Never type the account password into Konrado. After you save the key, the console shows only its last characters.

  • Only https:// addresses work, and the TLS certificate must be valid.
  • The address must lead to a public IP. Konrado refuses private, loopback and other internal ranges.
  • Konrado removes secrets from errors before the console shows them.
  • Konrado uses seven fixed lookups. It cannot run any other DirectAdmin command.
Security model

The install command carries a key that links the server to your organization, so treat it like a password. Konrado then calls the plugin on port 8000, the default. Open that port to Konrado's IP addresses and to no one else.

Example ticket questions
  • "The customer cannot find their domain. Which user or reseller owns it?"
  • "Mail from this domain bounces. Do DNS, the mailbox, the filters or the logs explain it?"
  • "The customer says the SSL certificate is invalid. What does the SSL status show?"
  • "This user hits the quota. Which usage numbers belong in the reply?"
  • "A domain pointer loads the wrong site. How is it set up?"
  • "The customer suspects malware or a missing backup. Is there anything worth escalating?"

Before you start

  • DirectAdmin 1.670 or newer, on the current or stable update channel. Konrado was tested end to end on 1.707 and 1.708.
  • DirectAdmin at a public HTTPS address with a valid certificate, on port 2222 unless you enter another.
  • A DirectAdmin admin, reseller or user account that can create a login key.
  • If DirectAdmin sits behind a firewall, allow Konrado's IP addresses to reach port 2222.
  • Your help desk connected, with the customer's hosting service in your billing system. Konrado finds the user through that service, so its server needs the same hostname or IP as the DirectAdmin address.
  • Root SSH access to the DirectAdmin server, with curl, unzip and systemd.
  • Outbound internet access. The installer downloads the plugin and reports to app.konrado.ai.
  • Port 8000 open to Konrado's IP addresses (see the list).
  • Your help desk connected, with the customer's hosting service in your billing system. Konrado finds the user through that service, so its server needs the same hostname or IP as the server you install on.

Connect

Create a login key

Sign in to DirectAdmin as the account Konrado should use. Open User Level › Login Keys. If you do not see it, open /CMD_LOGIN_KEYS on your panel. Click Create Key and name it, such as Konrado. Leave Allow HTM off, so the key works only for the API. Set an expiry, and no request limit or a high one. If you use Allowed IPs, enter Konrado's IP addresses (see the list), one per line.

DirectAdmin Create Login Key form: the key name, Allow HTM off and the first command allowed

Allow the commands

In Commands, search for each command below and tick Allow for the exact match:

#Command
1emailvacation
2domain-tls
3email-logs
4filemanager
5db-show
6resource-usage
7search
8system-info
9CMD_API_FILE_MANAGER
10CMD_API_FTP
11CMD_API_DATABASES
12CMD_API_SHOW_USER_USAGE
13CMD_API_SHOW_USER_CONFIG
14CMD_API_EMAIL_FILTER
15CMD_API_EMAIL_AUTORESPONDER
16CMD_API_EMAIL_FORWARDERS
17CMD_API_EMAIL_POP
18CMD_API_SSL
19CMD_API_ADDITIONAL_DOMAINS
20CMD_API_DOMAIN_POINTER
21CMD_API_SUBDOMAINS
22CMD_API_DNS_CONTROL
23CMD_API_DNS_ADMIN
24CMD_API_DOMAIN
25CMD_API_SHOW_DOMAINS
26CMD_API_SHOW_RESELLERS
27CMD_API_USER_BACKUP

Take only the exact result: resource-usage, not global-resource-usage; search, not CMD_AJAX_SEARCH; CMD_API_DOMAIN, not CMD_API_DOMAIN_OWNERS. Never allow CMD_LOGIN_KEYS or CMD_API_LOGIN_KEYS. For JetBackup 5 backups, also allow the plugin command of the key's level: CMD_PLUGINS_ADMIN, CMD_PLUGINS_RESELLER or CMD_PLUGINS.

The DirectAdmin login key form ready to create, with a command allowed and the current password filled in

Save and copy the key

Enter the account's current password and click Create. DirectAdmin shows the key once. Copy it into your password manager. If you lose it, rotate the key rather than share the password.

DirectAdmin's one-time login key window, with the key hidden and the Copy button

Connect in Konrado

Open Workspace SettingsIntegrations, click Add integration and choose DirectAdmin. Login Key is already picked under How should Konrado reach this server?

The DirectAdmin sheet: Login Key picked over Konrado plugin, then the Integration Name, DirectAdmin URL, Username and Login Key fields
FieldWhat to enter
Integration NameA name for your team, such as DirectAdmin EU
DirectAdmin URLThe panel address, such as https://panel.example.com:2222. Port 2222 is used when you leave it out
UsernameThe account that created the key. A key made by admin goes with admin
Login KeyThe key from DirectAdmin

Click Test Connection. A green box confirms the key and shows the DirectAdmin version. Click Connect.

The plugin is the legacy way to connect. Servers already connected with it keep working. For a new server, pick the API tab, unless you need the firewall, CloudLinux or Imunify data that only the plugin reads.

Choose the plugin. Open Workspace SettingsIntegrations, click Add integration and choose DirectAdmin. Under How should Konrado reach this server? pick Konrado plugin. The sheet shows three steps and the install command.

Run the command as root. Log in to your DirectAdmin server over SSH as root. Click the copy button next to the command and paste it into the session. The sheet hides your key on screen, but the copied command contains it, so treat it like a password. The key works for 24 hours, on as many servers as you like.

bash <(curl -s https://repo.konrado.ai/init.sh) --api-key=YOUR_KEY --callback-url=https://app.konrado.ai/api/integrations/servers/install --platform=directadmin

Answer the installer. It asks for a few settings, each with a default: press Enter to keep it. Two answers matter. To update the plugin from the console later, answer Yes to Do you want to be able to upgrade this plugin through the Konrado panel? The server address it suggests, such as http://203.0.113.10:8000/mcp, is where Konrado connects to the plugin.

Wait for the connection. The sheet reads Listening for your server… and checks every 5 seconds. When the plugin reports back it shows Connected successfully and the server's address. Click Done. You can close the sheet earlier: the server joins the list once it connects. Running the command again is safe.

Check it works

The server is on the Integrations page as Connected. Its Type reads DirectAdmin · API, with the DirectAdmin version under it. Konrado tests the connection again every hour. Open the row and the Tools tab lists the seven lookups.

To change the key later, open the row, click Replace next to Login Key, paste the new one and click Save.

The server is on the Integrations page as Connected. Its Type reads DirectAdmin · Plugin, with the plugin version under it. The row is named directadmin Server: click it to rename it. Running the install command again sets the name back. Konrado tests the connection again every hour.

If something is wrong

Open the row on the Integrations page. A server that stopped working says Not working, what to check, and the exact error under Technical details.

What you seeWhat to do
DirectAdmin URL must use HTTPS.Enter the full https:// address. Plain HTTP does not work
DirectAdmin URL cannot contain credentials, query parameters, or a fragment.Enter only the address and port, such as https://panel.example.com:2222
DirectAdmin TLS verification failed.Install a valid certificate for the panel hostname, with the full chain
DirectAdmin rejected the configured credentials.Check that the username created the key and that you copied all of it
This DirectAdmin key cannot read that.Allow the commands above, or check the role of the account that owns the key
DirectAdmin request timed out.Check that the panel answers on its port and that your firewall and the key let in Konrado's IP addresses (see the list)
The address points to a private networkUse a public hostname. Konrado refuses private and internal addresses
No server healthServer health needs an admin key
Backups are missingAllow CMD_API_USER_BACKUP, and the JetBackup plugin command if you use JetBackup 5
Konrado looks at the wrong userCheck that the ticket's service in your billing system sits on this server
What you seeWhat to do
The command stops at onceRun it as root on the DirectAdmin server itself
Listening for your server… never changesCheck that the installer finished without errors and that the server reaches app.konrado.ai over HTTPS. After 2 minutes the sheet shows Taking longer than expected? with the same checks
Panel data is missingCheck that this server runs DirectAdmin and that you picked DirectAdmin in the console
Konrado looks at the wrong userCheck that the ticket's service in your billing system sits on this server

The install step shows Connection error. It names the server address and the reason. Check both plugin services, read their recent logs and restart them:

systemctl status   konrado-server.service konrado-root.service
journalctl         -u konrado-server.service -u konrado-root.service --since "15 minutes ago" --no-pager
systemctl restart  konrado-server.service konrado-root.service
systemctl enable   konrado-server.service konrado-root.service
ss -ltnp | grep ':8000'

The last line shows whether the plugin listens on port 8000. Konrado must reach that port: allow Konrado's IP addresses in your firewall. Then run the install command again.

Remove the integration

Open Workspace SettingsIntegrations, open the row menu (three dots) and choose Delete. Then delete the login key in DirectAdmin.

To stop for now and keep the settings, choose Disconnect instead.

Uninstall the plugin from the server, then open Workspace SettingsIntegrations, open the row menu (three dots) and choose Delete.

To stop for now and keep the settings, choose Disconnect instead.

Last updated on

On this page