Skip to main contentSkip to navigation
[email protected]
Client AreaSupport
Hosting Mammoth
HostingMammothYour Data, Our Responsibility
Home
Solutions
Hosting Services
Store
Pricing
About
Blog
API
Contact

Stay Ahead of the Curve

Get the latest insights on cybersecurity, AI innovations, and enterprise data solutions delivered to your inbox.

Hosting Mammoth
HostingMammothEnterprise Solutions

Enterprise-grade data solutions. Hosting, recovery, cybersecurity, and AI-powered services for businesses worldwide.

[email protected]
Sun - Fri, 9:00am - 5:00pm

Services

  • Cloud Hosting
  • Data Recovery
  • Cybersecurity
  • Legal Support
  • MSP Services
  • Web Development
  • AI Services
  • Free Server Migration

Hosting

  • VPS Hosting (NVMe SSD)
  • VDS Hosting (NVMe)
  • Storage VPS (High SSD)
  • GPU Servers
  • Managed Services
  • Cloud Firewall
  • Load Balancer
  • One-Click Apps
  • n8n Hosting
  • Object Storage
  • FAQ

Company

  • Store
  • Pricing
  • About Us
  • Locations
  • Blog
  • Testimonials
  • Contact
  • Affiliate Program
  • White-Label
  • Terms of Service
  • Privacy Policy
  • Browser Cookies
  • SLA

Support

  • Client Area
  • Submit Ticket
  • Knowledge Base
  • Server Status
  • API Documentation

© 2026 Hosting Mammoth. All rights reserved.

Knowledge Base
Getting StartedAccount ManagementVPS HostingGPU ServersStorage VPSCloud FirewallLoad BalancerServer ManagementBilling & PaymentsSupport & TicketsAffiliate ProgramReseller ProgramMarketplace & Appsn8n HostingManaged ServicesServer MigrationAPI & DevelopersSecurityTroubleshootingGlossaryInstall Guides
  1. Home
  2. /
  3. Support
  4. /
  5. Install Guides
  6. /
  7. How To Install Directadmin Ubuntu
GUIDEInstall Guides

How to Install DirectAdmin on Ubuntu 24.04 VPS: Commercial Control Panel Setup Guide

30 min read

How to Install DirectAdmin on Ubuntu 24.04 VPS: Commercial Control Panel Setup Guide

DirectAdmin has quietly become one of the most respected commercial web hosting control panels in the industry. While cPanel dominates the conversation, DirectAdmin offers a lighter footprint, saner pricing, and a famously stable codebase that routinely runs for years without surprises. This guide walks through a complete DirectAdmin installation on Ubuntu 24.04 LTS, from licensing and the setup.sh installer to CustomBuild 2.0, Let's Encrypt, user and reseller accounts, DNS, and backup configuration.

Want a proven VPS for DirectAdmin? The CloudCore Professional plan gives you the 6 vCPU, 12 GB RAM, and NVMe storage that DirectAdmin needs to host dozens of busy sites comfortably. Spin up a VPS here and follow along.

Table of Contents

  • What is DirectAdmin?
  • Why Self-Host DirectAdmin Instead of cPanel?
  • DirectAdmin Licensing and Pricing
  • Prerequisites
  • Step 1: Prepare the Ubuntu 24.04 Server
  • Step 2: Purchase a DirectAdmin License
  • Step 3: Download and Run setup.sh
  • Step 4: Choose Your Web Server Stack
  • Step 5: First Login and Admin Dashboard Tour
  • Step 6: CustomBuild 2.0 and the PHP Selector
  • Step 7: Configure Let's Encrypt SSL
  • Step 8: Create Packages and Plans
  • Step 9: Create Admin, Reseller, and User Accounts
  • Step 10: Configure DNS for Hosted Domains
  • Step 11: Set Up Backups with Admin Backup / Transfer
  • Hardening and Best Practices
  • Troubleshooting
  • FAQ
  • Next Steps
  • What is DirectAdmin?

    DirectAdmin is a commercial web hosting control panel first released in 2003 by JBMC Software. It provides a graphical interface for administering a Linux server as a multi-tenant hosting platform: creating hosting accounts, managing email, databases, DNS zones, FTP, SSL certificates, and cron jobs. Where most open-source panels aim for feature breadth, DirectAdmin is known for the opposite philosophy: a small, fast, stable codebase that does the essentials extremely well.

    The panel is structured around three account levels. Admin users have root-equivalent control of the server and manage licensing, server-wide packages, service configuration, and the underlying stack. Reseller users are resold slices of the server they can use to create their own hosting accounts and set their own packages -- this is the hook that makes DirectAdmin popular with hosting companies and agencies. User accounts are the actual end-customer hosting accounts: one per domain or one per customer, each with its own home directory, mail, DNS zone, and databases.

    Under the hood, DirectAdmin on Ubuntu 24.04 orchestrates a familiar LAMP-style stack: MariaDB for databases, Exim and Dovecot for mail, Apache, Nginx, or OpenLiteSpeed for HTTP, and BIND (named) for authoritative DNS. The glue that holds this together is CustomBuild 2.0, DirectAdmin's own build system that compiles and updates the stack from source, giving you fine-grained control over PHP versions, modules, and web server binaries without touching the distribution's package manager.

    The panel is used by thousands of hosting providers around the world and is the control panel of choice for many European and Asian hosts. Its defining qualities are frugal resource usage (it runs happily on a 2 GB VPS where cPanel demands 4 GB to start), a permissive license structure (you can move licenses between servers), and a development team that still responds to email.

    Why Self-Host DirectAdmin Instead of cPanel?

    If you are familiar with cPanel, moving to DirectAdmin feels like switching from a sprawling Swiss Army knife to a well-made chef's knife. Both cut, but one is faster and lighter in the hand. The concrete reasons to choose DirectAdmin over cPanel on a self-hosted VPS come down to cost, performance, and control.

    License cost is dramatically lower. A cPanel Solo license is capped at one account and still runs around USD 17 per month at the current tier. A cPanel Admin license (five accounts) starts near USD 27 per month, climbing rapidly as account counts grow. DirectAdmin's Standard tier starts at about USD 5 per month for a single-account server and scales gently from there, with Lite and Pro tiers priced at a fraction of the equivalent cPanel bracket. For resellers with dozens of accounts, the yearly difference is easily four figures.

    Resource usage is a fraction of cPanel's. DirectAdmin's control panel daemon is a compiled C++ binary that uses around 50-100 MB of resident RAM. cPanel's Perl-based stack consistently reserves 1-2 GB just for the panel, leaving less headroom for customer sites. On a 4 GB VPS, the difference can be the deciding factor between a snappy server and constant swap thrashing.

    Stability and upgrade behavior are predictable. DirectAdmin is conservative about releases: the panel rarely breaks third-party integrations, and CustomBuild 2.0 keeps stack upgrades isolated from distribution package upgrades. There is no equivalent of a surprise cPanel major version breaking Apache modules overnight.

    No vendor lock-in. DirectAdmin does not require its own repository or patched packages at the OS level. If you ever want to move off, the data directories (/home/$user/), MariaDB dumps, and Exim mail spools are all in standard locations with standard formats.

    Against these benefits, DirectAdmin does ship with a smaller out-of-the-box feature set than cPanel (fewer one-click apps, a plainer file manager, fewer bundled plugins), and the UI -- while modern in current releases -- is less polished than WHM/cPanel. For hosting administrators who value efficiency, price, and predictability over glossy UX, the trade is firmly in DirectAdmin's favor.

    DirectAdmin vs. Open-Source Alternatives

    CriteriaDirectAdmincPanel/WHMPleskHestiaCPCyberPanel
    LicenseCommercial, tieredCommercial, tieredCommercial, tieredFree (GPL)Free (core)
    Monthly cost (5 accts)~USD 5-15~USD 27-47~USD 15-30USD 0USD 0
    RAM footprint (idle)~100 MB~1.5 GB~800 MB~300 MB~500 MB
    Default web serverApache + NginxApacheNginx + ApacheNginx + ApacheOpenLiteSpeed
    cPanel migration toolBuilt-inN/ABuilt-inThird-partyThird-party
    Resellers supportedYes (native)Yes (native)Yes (native)LimitedLimited
    Typical use caseCommercial hosts, agenciesLarge hostsWindows + Linux mixSelf-hostersWordPress focus

    DirectAdmin Licensing and Pricing

    DirectAdmin is a paid control panel -- this is not optional. The installer will refuse to finish without a license key, and the panel phones home daily to validate. Pricing is tiered by the number of hosting accounts a server may create.

    The three public tiers are:

    • Standard -- Unlimited accounts, unlimited domains, full feature set. The normal choice for production hosting businesses.
    • Lite -- Capped at a small number of accounts (typically 10) with a reduced feature set; oriented at personal or very small deployments.
    • Pro Pack -- Standard plus advanced enterprise features (clustering, advanced reporting, priority support).
    Pricing starts in the low single-digit USD per month for Lite-class licenses and scales into the USD 15-25 per month range for Standard with unlimited accounts. DirectAdmin also sells lifetime licenses in some regions -- a one-time payment that covers the license for a specific server indefinitely (updates are included as long as the server stays active). Always check the current pricing page at directadmin.com/pricing before ordering, since the matrix has evolved over the years.

    Two important practical notes. First, licenses are tied to the server's primary public IPv4 -- if you change the IP, you must update the license record in the DirectAdmin customer portal. Second, licenses are transferrable between servers, so rebuilding or migrating to a larger VPS is straightforward.

    Prerequisites

    Before running the installer, make sure you have all of these in place:

    • A clean Ubuntu 24.04 LTS VPS with root SSH access. DirectAdmin strongly prefers a freshly provisioned server -- do not try to install it on top of an existing LAMP stack.
    • At least 2 GB of RAM (4 GB+ strongly recommended for hosting real customer workloads).
    • At least 20 GB of free disk space (80 GB+ recommended if you intend to host more than a handful of sites with mail).
    • A resolvable hostname such as server.yourdomain.com with an A record pointing to the server's public IPv4. DirectAdmin uses this for the panel URL and Let's Encrypt.
    • A DirectAdmin license key and admin username, obtained from directadmin.com after purchasing.
    • Ports open: 22 (SSH), 80/443 (HTTP/S), 2222 (DirectAdmin panel), 25/465/587 (SMTP), 110/995 (POP3), 143/993 (IMAP), 53 (DNS, TCP and UDP), 21 (FTP), 20 (FTP-data).
    Recommended VPS: CloudCore Professional
    >
    For a production DirectAdmin deployment hosting 10-50 customer sites, we recommend the CloudCore Professional plan:
    >
    - 6 vCPU cores
    - 12 GB RAM
    - 100 GB NVMe SSD
    - Unmetered bandwidth
    >
    This comfortably runs DirectAdmin's full stack (Apache + Nginx + MariaDB + Exim + Dovecot) alongside customer sites, PHP workers, and scheduled backups with plenty of headroom.

    Connect to the server as root:

    bash
    ssh root@your-server-ip

    Step 1: Prepare the Ubuntu 24.04 Server

    Start by bringing the system fully up to date and installing the small set of prerequisites the DirectAdmin installer expects. Ubuntu 24.04 (Noble Numbat) ships with most of what DirectAdmin needs, but a few packages help the installer's dependency checks pass cleanly.

    bash
    apt update && apt upgrade -y
    apt install -y wget curl gcc g++ make flex bison openssl libssl-dev \
        perl perl-modules libperl-dev zlib1g-dev libxml2-dev \
        libcurl4-openssl-dev libexpat1-dev libaio1t64 libnuma-dev \
        ca-certificates tar

    If the kernel was upgraded, reboot:

    bash
    reboot

    Set a proper FQDN hostname. DirectAdmin requires a three-part hostname (server.example.com, not just server):

    bash
    hostnamectl set-hostname server.yourdomain.com

    Confirm the change:

    bash
    hostname -f

    Expected output:

    text
    server.yourdomain.com

    Finally, verify the hostname resolves publicly by running dig server.yourdomain.com +short from any machine -- it should return the VPS's public IP. If it does not, create the A record in your DNS provider before continuing.

    Step 2: Purchase a DirectAdmin License

    Head to directadmin.com and order a license that matches your planned usage. During checkout you will be asked for the primary public IPv4 of the target server; enter it exactly as shown by curl -s ifconfig.me on your VPS.

    Once the order is processed, you will receive an email containing:

  • A Client ID (a numeric identifier)
  • A License ID (a numeric identifier)
  • The admin username chosen during checkout (this becomes the top-level administrator on your server)
  • Keep this information in a password manager -- you will paste it into the installer in the next step.

    Step 3: Download and Run setup.sh

    DirectAdmin provides a single official installer script: setup.sh. It is distributed from files.directadmin.com and will pre-flight the OS, prompt for license credentials, download the control panel tarball, compile CustomBuild 2.0, and bootstrap the whole stack (MariaDB, Exim, Dovecot, PHP, and your chosen web server).

    Download it:

    bash
    cd /root
    wget -O setup.sh https://www.directadmin.com/setup.sh
    chmod 755 setup.sh

    Run it:

    bash
    ./setup.sh auto

    The installer first asks a handful of questions:

    text
    Please enter your Client ID : 123456
    Please enter your License ID : 789012
    Please enter your hostname (server.example.com) : server.yourdomain.com
    Is server.yourdomain.com correct? (y,n) : y

    A typical installer run on a 6 vCPU VPS takes 20-35 minutes -- the bulk of the time is CustomBuild 2.0 compiling PHP, Apache/Nginx/OpenLiteSpeed, and the rest of the stack from source. Let it run to completion; do not interrupt it.

    When the installer finishes, you will see the final credentials:

    text
    System Security Tips :
      http://help.directadmin.com/item.php?id=247

    Your System Hostname: server.yourdomain.com Your Server IP: 203.0.113.42

    Your Admin Username: admin Your Admin Password: A9vK2pQ7rM4xL8bN

    Your DirectAdmin URL: https://server.yourdomain.com:2222

    Write the admin password down immediately. It is generated during install and not stored in plain text anywhere you can retrieve it later.

    Step 4: Choose Your Web Server Stack

    DirectAdmin's installer uses CustomBuild 2.0 to build the web server stack. On Ubuntu 24.04 you have three supported choices, each with a different performance and compatibility profile:

    • Apache standalone -- The classic choice, maximum compatibility with .htaccess and legacy PHP apps. Uses the mod_php + php-fpm combination.
    • Nginx + Apache (reverse proxy) -- Nginx handles static files and TLS termination, Apache handles dynamic PHP. Best balance of speed and compatibility for mixed workloads. This is the recommended default.
    • OpenLiteSpeed -- A high-performance event-driven web server with native PHP LSAPI. Significantly faster than Apache for WordPress and similar PHP sites, at the cost of .htaccess edge cases.
    You can view and change your current stack at any time by editing CustomBuild's options.conf and rebuilding:

    bash
    cd /usr/local/directadmin/custombuild
    ./build set webserver nginx_apache
    ./build set php1_release 8.3
    ./build set mysql_inst mariadb
    ./build set mysql 10.11
    ./build update
    ./build all d
    ./build rewrite_confs

    A full rebuild of the stack via ./build all d takes around 20-40 minutes on a 6 vCPU server. The ./build rewrite_confs step re-renders Apache/Nginx/OpenLiteSpeed virtual host configs for every hosted site to match the new stack, so changes propagate to customer accounts automatically.

    The MariaDB version is configurable the same way. DirectAdmin defaults to a recent LTS (typically 10.11 or newer). You can check the active version with:

    bash
    mysql --version

    For mail, DirectAdmin uses the standard Exim 4 + Dovecot 2 combination. SpamAssassin and ClamAV integration are toggled in CustomBuild:

    bash
    ./build set spamassassin yes
    ./build spamassassin
    ./build set clamav yes
    ./build clamav
    ./build rewrite_confs

    Step 5: First Login and Admin Dashboard Tour

    Point a browser at the URL the installer printed:

    text
    https://server.yourdomain.com:2222

    Your browser will flag a certificate warning on the first visit because the installer uses a self-signed certificate for port 2222 by default -- we fix that in Step 7. Accept the warning, then log in with the admin username and the password from the installer output.

    The Admin dashboard is organized into three sections down the left sidebar:

    • Admin Level -- Server-wide controls: license, service monitor, IP manager, admin backup/transfer, DNS administration, SSL settings.
    • Reseller Level -- Reseller-scoped functions: create user accounts, manage packages, view resource usage. Every admin is also a reseller.
    • User Level -- End-user-scoped functions: domain setup, email accounts, databases, file manager. Every reseller is also a user, so the admin sees all three.
    Take a minute to explore Admin Settings (gear icon, top right), where you control skin selection, tweak security policies, enable/disable Let's Encrypt automation, and set global limits. Most defaults are sensible; the one change worth making now is setting a strong email address in Admin Settings > Admin Email so that system notifications reach you.

    Step 6: CustomBuild 2.0 and the PHP Selector

    CustomBuild 2.0 is the engine that compiles and updates the DirectAdmin stack. It lives at /usr/local/directadmin/custombuild and is controlled both from the shell and from the CustomBuild menu inside the panel.

    DirectAdmin supports multiple PHP versions simultaneously. A server can offer PHP 7.4, 8.1, 8.2, and 8.3 at the same time, and each hosted domain can pick its own. This is controlled by the php1_release, php2_release, php3_release, and php4_release keys in options.conf:

    bash
    cd /usr/local/directadmin/custombuild
    ./build set php1_release 8.3
    ./build set php2_release 8.2
    ./build set php3_release 8.1
    ./build set php4_release no
    ./build update
    ./build php n
    ./build rewrite_confs

    Users then pick their preferred PHP version from the Domain Setup screen in the user panel. Per-directory overrides are also supported -- a single account can run /blog/ on PHP 8.1 and /app/ on PHP 8.3 simultaneously.

    To update all installed components to the latest versions published by DirectAdmin:

    bash
    cd /usr/local/directadmin/custombuild
    ./build update
    ./build update_versions
    ./build all d
    ./build rewrite_confs

    Schedule this via cron if you want automatic stack updates -- ./build all d is idempotent and safe to run on servers in production, though it does briefly restart services.

    Step 7: Configure Let's Encrypt SSL

    DirectAdmin ships with Let's Encrypt integration enabled by default. Two things to configure:

    1. Replace the panel's self-signed certificate on port 2222.

    From the Admin panel, go to Admin Tools > Let's Encrypt and request a certificate for the server hostname (server.yourdomain.com). The panel will run the ACME HTTP-01 challenge, install the certificate, and automatically restart the directadmin service so the new certificate is live on port 2222.

    Or from the CLI:

    bash
    cd /usr/local/directadmin/scripts
    ./letsencrypt.sh request server.yourdomain.com 4096

    2. Enable automatic Let's Encrypt for every new user.

    In Admin Settings > Let's Encrypt, toggle Enable automatic creation/renewal of Let's Encrypt certificates to on. With this active, every time a user creates a domain or subdomain, DirectAdmin silently requests a certificate, configures the web server for HTTPS, and schedules auto-renewal.

    Certificates renew via /etc/cron.d/directadmin_cron and DirectAdmin's letsencrypt.sh helper. You can verify the cron is active with:

    bash
    cat /etc/cron.d/directadmin_cron | grep -i lets

    Step 8: Create Packages and Plans

    Packages define the resource quotas a hosting account can consume. Before you can create customer accounts, you need at least one user package. For resellers, you also need at least one reseller package.

    In the Admin sidebar, open Packages > User and click Add Package. A typical shared-hosting user package looks like:

    • Bandwidth: 50000 MB/month
    • Disk Quota: 10000 MB
    • Domains: 1 (or higher for multi-site accounts)
    • Subdomains: 10
    • Email Accounts: 25
    • Forwarders: 25
    • Mailing Lists: 5
    • Databases: 5
    • Anonymous FTP: off
    • CGI Access: on
    • PHP Access: on
    • SSL Access: on
    • Skin: default
    Save it as starter-10gb. Repeat with progressively larger quotas for business-50gb and agency-200gb plans.

    Reseller packages sit one level up -- they define how many users a reseller may create and the total pool of bandwidth/disk they can allocate. Create at least one reseller package (for example reseller-base) in Packages > Reseller before moving to the next step.

    Tip: Setting "Can use this package" checkboxes on reseller packages lets you control exactly which user packages each reseller tier can offer to their own customers. This is how you implement multi-tier white-label pricing cleanly.

    Step 9: Create Admin, Reseller, and User Accounts

    DirectAdmin has a strict account hierarchy: admin > reseller > user. Every account belongs to exactly one level, and the creation flow depends on which level you are operating at.

    Adding Additional Admin Accounts

    It is good practice to add a secondary admin account so you have a recovery path if the primary admin credentials are lost. Go to Admin Level > Create Administrator, supply a username and email, and click Submit.

    Creating a Reseller Account

    Under Reseller Level > Add New Reseller, select the reseller package you created and provide:

    • Username (3-8 lowercase letters/numbers)
    • Email address (password gets sent here)
    • Domain (the reseller's own domain, for example reseller1.com)
    • IP address (either shared or a dedicated IP from the IP Manager)
    The reseller can then log in at https://server.yourdomain.com:2222, create their own user packages, and provision end-customer accounts.

    Creating a User (Hosting) Account

    This is the most common operation on a production server. Under Reseller Level > Add New User, fill in:

    • Username
    • Email
    • Password (or let it auto-generate)
    • Domain
    • User Package (chosen from the ones you defined in Step 8)
    • IP address
    • Notify User (toggle on to email credentials)
    On submit, DirectAdmin creates /home/$username/, sets up the vhost in Apache/Nginx/OpenLiteSpeed, adds DNS zones for the domain, provisions a system user, and -- if Let's Encrypt is enabled -- requests a certificate. The whole operation usually takes 5-15 seconds.

    Step 10: Configure DNS for Hosted Domains

    DirectAdmin ships with BIND (named) for authoritative DNS, enabled by default. When a user creates a domain, DirectAdmin automatically generates a zone file, adds A records for the domain, www, mail, ftp, and any standard subdomains, plus MX and SPF records for mail.

    For the DNS zones to actually resolve publicly, the domain needs its nameservers delegated to your server. You have two options:

    Option A: Use your registrar's nameservers and point A records at the VPS. Simpler but means customers see your domain in their WHOIS. This is the typical setup for single-site VPS owners.

    Option B: Run your own nameservers (ns1.yourdomain.com, ns2.yourdomain.com). The right choice for hosting businesses. Configure glue records at your registrar for both ns1.yourdomain.com and ns2.yourdomain.com pointing to the server's IP (or two IPs for redundancy), then set the server's default nameservers in Admin Settings > DNS Nameservers.

    To test that a newly created domain's DNS is serving correctly:

    bash
    dig @localhost example-user.com

    You should see DirectAdmin's BIND responding with the A records it generated. Once the real nameservers propagate (1-24 hours), the same lookup against public resolvers should return the same answers.

    Step 11: Set Up Backups with Admin Backup / Transfer

    DirectAdmin's Admin Backup / Transfer is the native backup system. It produces self-contained tarball archives per user that include the home directory, databases, email, DNS zones, FTP accounts, and panel configuration. The same archives are the input format for restoring accounts or migrating them to another DirectAdmin server.

    Configure Scheduled Backups

    Open Admin Tools > Admin Backup / Transfer > Schedule and define a recurring job:

  • Who to Back Up -- All users, selected users, or all users belonging to a specific reseller. For a production server, select All users.
  • Where -- Local: /home/admin/admin_backups is the simplest. For production, configure an FTP or SFTP destination pointing at a separate backup VPS or object storage gateway. Off-site backups are non-negotiable.
  • What -- Leave all backup components checked (home directory, databases, email data, forwarders, etc).
  • When -- Pick a schedule. A common pattern is daily at 03:00 server time plus a weekly Sunday at 01:00 full backup pushed to remote storage.
  • Save the schedule. DirectAdmin writes the job to /etc/cron.d/directadmin_cron and the first run will execute at the next scheduled tick.

    On-Demand Backups

    For ad-hoc backups (before stack upgrades or major migrations), use Admin Backup / Transfer > Create Backup. The same interface offers a Restore tab where you upload an existing backup archive to re-create an account.

    cPanel Migration

    DirectAdmin natively reads standard cPanel backup archives. If you are migrating from cPanel, upload the cpmove-username.tar.gz files to /home/admin/admin_backups/ on the DirectAdmin server, then use Admin Backup / Transfer > Restore and select cPanel as the source format. The importer recreates the user, restores the home directory, imports databases into MariaDB, and rebuilds DNS zones and mail accounts.

    Hardening and Best Practices

    DirectAdmin is secure by default, but a small set of additional hardening steps are worth the 10 minutes they take.

    Enable BruteForceMonitor. DirectAdmin includes a built-in brute force detector that watches SSH, FTP, SMTP, IMAP, POP3, and panel logins. Enable it under Admin Settings > Brute Force Monitor and set the block duration to 30 minutes after 5 failed attempts. Blocked IPs are automatically pushed to the firewall.

    Run securityIssues.sh. DirectAdmin ships with a hardening audit script:

    bash
    cd /usr/local/directadmin/scripts
    ./securityIssues

    It scans for weak default permissions, insecure Exim settings, world-readable configuration files, and known issues with legacy PHP modules. Review and fix anything flagged.

    Change the panel port. Port 2222 is well known. Change it to something unusual in Admin Settings > Admin Settings > Port Number and update your firewall rules accordingly.

    Enable two-factor authentication. Under your admin profile, toggle 2FA on and scan the QR code with Google Authenticator or 1Password. Require 2FA for all admin and reseller accounts via Admin Settings > Two-Factor Authentication.

    Firewall off everything else. Install ufw and lock down to only the ports your services actually need:

    bash
    ufw default deny incoming
    ufw default allow outgoing
    ufw allow 22,2222/tcp
    ufw allow 80,443/tcp
    ufw allow 25,465,587/tcp
    ufw allow 110,995,143,993/tcp
    ufw allow 21/tcp
    ufw allow 53
    ufw enable

    Schedule regular updates. Add to /etc/cron.d/directadmin_stack_update:

    text
    0 4   0 root cd /usr/local/directadmin/custombuild && ./build update && ./build update_versions && ./build all d

    This runs a full stack refresh every Sunday at 04:00, keeping PHP, web server, and MariaDB patched against known CVEs.

    Troubleshooting

    ProblemCauseSolution
    setup.sh fails with Unsupported OSRunning on Ubuntu 22.04 or older, or a non-LTS releaseDirectAdmin supports Ubuntu 24.04 LTS. Verify with lsb_release -a and reprovision if needed.
    Invalid license after installLicense IP does not match server's primary IPv4Check the IP in the DirectAdmin customer portal at directadmin.com and update it. Then run /usr/local/directadmin/scripts/getLicense.sh CLIENTID LICENSEID.
    Panel at port 2222 refuses connectionsFirewall blocking 2222, or directadmin service not runningsystemctl status directadmin. Open port 2222 in UFW: ufw allow 2222/tcp. Restart: systemctl restart directadmin.
    Let's Encrypt request failsHostname does not resolve publicly, or port 80 is blockedVerify dig server.yourdomain.com +short returns the server IP. Ensure port 80 is open and no other service is bound there during the challenge.
    New user's website shows default pageDNS not yet delegated, or web server config not rewrittenRun cd /usr/local/directadmin/custombuild && ./build rewrite_confs. Verify domain A records point to server IP.
    ./build all d fails with compilation errorsMissing dev library or stale CustomBuild./build update then retry. If persistent, ./build clean and rebuild.
    Exim not accepting mail on port 25Hosting provider blocks outbound 25, or firewall closedCheck with your provider -- many block port 25 by default. Open ticket to request port 25 unblocking, or use a smarthost relay.
    Reseller cannot create usersReseller package exhausted, or license account limit reachedCheck Reseller Level > List Users for resource usage. Check panel footer for license account count vs. limit.

    Viewing DirectAdmin Logs

    DirectAdmin's own logs live in /var/log/directadmin/:

    bash
    tail -f /var/log/directadmin/error.log
    tail -f /var/log/directadmin/errortaskq.log
    tail -f /var/log/directadmin/security.log

    For stack-level issues, look at /var/log/apache2/error_log, /var/log/nginx/error.log, /var/log/exim/mainlog, and /var/log/mysql/error.log.

    FAQ

    Is DirectAdmin free?

    No. DirectAdmin is a commercial control panel licensed on a tiered per-account basis from directadmin.com. The three public tiers are Standard (unlimited accounts, full features), Lite (limited accounts, reduced features), and Pro Pack (Standard plus advanced enterprise features). Monthly pricing starts in the low-single-digit USD range for Lite and scales up by tier and account volume. Some regions also offer lifetime licenses. For free alternatives, see our guides on HestiaCP and CyberPanel.

    What web servers does DirectAdmin support on Ubuntu 24.04?

    Three options: Apache standalone, Nginx as reverse proxy in front of Apache, and OpenLiteSpeed. The choice is made during installation via CustomBuild 2.0 and can be changed at any time by editing /usr/local/directadmin/custombuild/options.conf and running ./build all d && ./build rewrite_confs. The default and most widely deployed setup is Nginx + Apache, which gives you Nginx's static file performance and Apache's full .htaccess compatibility for dynamic PHP.

    How do I activate Let's Encrypt in DirectAdmin?

    Let's Encrypt is bundled and enabled by default. For the panel's own certificate on port 2222, go to Admin Tools > Let's Encrypt and request a cert for your server hostname. For automatic certificates on every hosted domain, enable Admin Settings > Let's Encrypt > Automatic creation/renewal. Users can also request certificates manually from the SSL Certificates menu in the user panel. Renewal happens automatically via /etc/cron.d/directadmin_cron.

    Can I migrate from cPanel to DirectAdmin?

    Yes, and the tooling is first-class. DirectAdmin's Admin Backup / Transfer natively reads standard cpmove-username.tar.gz cPanel backup archives. Place the backup files in /home/admin/admin_backups/ on the DirectAdmin server and run the restore with cPanel selected as the source format. The importer recreates the user, restores the home directory, rebuilds MariaDB databases from the MySQL dump, restores mail (converting Maildir as needed), and rebuilds DNS zones. Plan for 2-5 minutes per GB of backup size.

    How does DirectAdmin compare to Plesk and HestiaCP?

    DirectAdmin is the lightest of the three, cheaper than Plesk, and has the most mature cPanel migration path. Its UI is functional rather than glossy and the plugin ecosystem is smaller. Best for: commercial hosters and agencies that value cost and performance over UX polish. See our Plesk install guide for comparison.

    Plesk is the most polished commercially, with the best Windows support, the biggest extension marketplace, and heavy WordPress Toolkit integration. Pricing is between cPanel and DirectAdmin. Best for: mixed Windows/Linux shops and WordPress-heavy hosts that value UX.

    HestiaCP is a free, open-source fork of VestaCP with active development, nginx-first defaults, and a clean UI. No licensing costs at all. Best for: developers and self-hosters who want a control panel without a subscription. See our HestiaCP install guide.

    For VPS owners running a handful of sites on a budget, HestiaCP often wins. For commercial hosting businesses that will bill customers monthly, DirectAdmin's commercial support and stability justify the license cost.

    How do I back up DirectAdmin itself (the panel configuration)?

    The panel's own state lives in /usr/local/directadmin/, /var/log/directadmin/, and the users' /home/$user/ trees. Scheduled Admin Backup / Transfer jobs cover per-user data. For full server snapshots -- config, logs, packages, license state -- use your VPS provider's snapshot feature weekly, or run a filesystem-level backup of /usr/local/directadmin/, /etc/, and /home/ with restic or borg to off-site storage. The combination of DirectAdmin's native backups (for per-user restore) and a filesystem snapshot (for whole-server disaster recovery) covers every failure mode.

    Next Steps

    With DirectAdmin running on your VPS, here are recommended follow-ups:

    • Onboard your first customer account -- Create a user package, provision a hosting account, delegate the customer's domain to your nameservers, and verify email delivery end-to-end. Treat the first account as your smoke test.
    • Install SpamAssassin and ClamAV -- Run ./build set spamassassin yes && ./build spamassassin && ./build set clamav yes && ./build clamav && ./build rewrite_confs to add inbound spam and malware filtering to Exim. Essential for any production mail hosting.
    • Configure off-site backup storage -- A backup that lives on the same server it is meant to protect is not a backup. Point Admin Backup / Transfer at a separate backup VPS or an S3-compatible endpoint and verify restores actually work end-to-end.
    • Explore DirectAdmin's official documentation -- The official docs at docs.directadmin.com are well-organized and cover every panel feature in depth, including reseller customization, custom skin development, and cluster/multi-server setups.
    • Compare against other control panels -- If you are still evaluating, read our Plesk install guide, CyberPanel install guide, and HestiaCP install guide. Each targets a different sweet spot, and hands-on testing on a throwaway VPS is the fastest way to decide.

    Need a production-ready VPS for DirectAdmin?
    >
    The CloudCore Professional plan gives you the 6 vCPU, 12 GB RAM, and 100 GB NVMe you need to host dozens of sites on DirectAdmin comfortably, with full root access, unmetered bandwidth, and 24/7 support.
    >
    - 6 vCPU cores / 12 GB RAM / 100 GB NVMe
    - Ubuntu 24.04 LTS pre-installed
    - Full root SSH access
    - Unmetered bandwidth
    - Snapshot + backup options
    >
    Launch your DirectAdmin VPS now and follow this guide end-to-end.

    Was this article helpful?

    ← Back to Install GuidesBrowse all categories →

    Still have questions?

    Contact Support →Submit a Ticket