# System Requirements

# Operating system

Operating systems supported by DirectAdmin are listed in the table below.

OSVersion
CloudLinux6.x 64-bit, 7.x 64-bit, 8.x 64-bit
AlmaLinux / RHEL / CentOS**7.**x 64-bit, 8.x 64-bit
Debian8.x 64-bit, 9.x 64-bit, 10.x 64-bit, 11.x 64-bit ALPHA
Ubuntu16.04 64-bit, 18.04 64-bit, 20.04 64-bit
FreeBSD11.x 64-bit, 12.x 64-bit

For Ubuntu just select the "Linux 64-bit static" OS in client portal.

# Partition scheme

We suggest a simple partition structure of:

PartitionSize
/boot500 MB
swapFor < 2GB of RAM: 2 x RAM, for 2GB - 8GB of RAM: equal to the amount of RAM, for > 8GB of RAM: at least 4GB
/Rest of drive

For a less simple partition structure:

PartitionSize
/boot500 MB
swapFor < 2GB of RAM: 2 x RAM, for 2GB - 8GB of RAM: equal to the amount of RAM, for > 8GB of RAM: at least 4GB
/tmp 1 GB. Highly recommended to mount /tmp with noexec,nosuid in /etc/fstab
/6 - 10 GB
/var8 - 20 GB. Logs, and Databases with CentOS
/usr5 - 12+ GB. DA data, source code, mysql backups with custombuild option
/homeRest of drive. Roughly 80% for User data. Mount with nosuid in /etc/fstab if possible.

Feel free to modify these numbers as needed. FreeBSD and Debian store mysql databases in /home/mysql/.
For CentOS 7, use the xfs quota system. If you use ext4, add use_xfs_quota=0 to the directadmin.conf.

Please have Basic development/compiling tools such as gcc, g++, and perl.

** Please do not install services such as Apache, PHP, MySQL, Ftp, Sendmail, etc., as we will do this for you. All we need is a CLEAN install of your operating system. **

We do not recommend installing DirectAdmin on an existing live production server. DirectAdmin does not convert existing data upon install.

# Hardware

We highly recommend a processor of at least 500 Mhz even though DirectAdmin will run on slower systems. The more cores the better.

A minimum 1 GB of memory is required (2+ GB is preferred), with at least 2 GB of swap memory. (CentOS 8: 2Gig required, 4+ Gig preferred).

A hard drive with at least 2 gigabytes of free space (after the Linux install) is also required, not including any website data.

If you are expecting high traffic levels then you will need more memory, processor power, and hard drive space than we recommend here.

Intel and AMD should work fine. Solaris/Sparc will not.

# Software

Please ensure SSH is installed and working.

Please ensure named (Name Daemon) is selected during the Redhat install.

gcc and g++ are required to compile apache and php.

The system kernel and filesystem must support quotas. The kernel should support IPv6.

# Authority Level

You must have root access on the server.

# IP Addresses

At a bare minimum your server must have one static IPv4 IP address. However, for DNS control you will sometimes need at least two (2) IP addresses. With only one IP address you might be forced to use an external DNS service, depending on your registrar. -- this means web sites you create through the control panel will not propagate automatically.

Your server IP must be an external IP address. Local IP addresses (192.168.x.x or 10.0.x.x) cannot be set in your license. The IP that connects to our system must patch the license IP, or downloads will not work. More info on IP requirements](/getting-started/installation/ip-requirements.html).

DirectAdmin can be installed on a LAN using recommended auto mode.

# Installing DirectAdmin: How is it done?

We will install DirectAdmin for you at no cost (free installs may not be included with bulk purchases). If you prefer to install DirectAdmin yourself, please refer to the DirectAdmin Installation Guide.

# What Gets Installed?

Complete list of software which gets installed is located at: http://www.directadmin.com/technologies.php

# Need More Information?

You can e-mail questions to sales@directadmin.com or send an inquiry by visiting the contactsopen in new window page. We are available Monday through Friday, 9 AM - 5 PM Mountain Standard Time. You may also visit the forumopen in new window to see if your question has been answered there.

# Common installation guide

We recommend running auto-installation mode per the installation guide.

If you choose not to use the auto-installation mode and would rather run the installation manually, note that you can install the pre-release of DirectAdmin using the 'beta' flag like so:

./setup.sh beta
1

# LAN (internal IP) installation

DirectAdmin can be installed on an internal IP address. Steps are same as in auto installation mode, but note:

  • When it asks for which ethernet device, make sure you pick the device that holds the LAN IP (often eth0, ens192, venet0, etc).

  • Enter the external license IP, and not the LAN IP when asked.

# Common pre-install commands

The DirectAdmin installation automatically installs some basic programs that are needed. If you wish to install them manually:

# CentOS 6 or CloudLInux 6:

yum install wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio \
libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed\
autoconf automake libtool which patch mailx bzip2-devel lsof glibc-headers kernel-devel expat-devel db4-devel
1
2
3

# CentOS 7 or CloudLinux 7:

yum install wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio \
libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed \
autoconf automake libtool which patch mailx bzip2-devel lsof glibc-headers kernel-devel expat-devel \
psmisc net-tools systemd-devel libdb-devel perl-DBI perl-Perl4-CoreLibs perl-libwww-perl xfsprogs rsyslog logrotate crontabs file kernel-headers
1
2
3
4

# AlmaLinux, CentOS or CloudLinux 8:

yum install wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio \
libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 cyrus-sasl-devel perl-ExtUtils-Embed \
autoconf automake libtool which patch mailx bzip2-devel lsof glibc-headers kernel-devel expat-devel \
psmisc net-tools systemd-devel libdb-devel perl-DBI perl-libwww-perl xfsprogs rsyslog logrotate crontabs file kernel-headers hostname
1
2
3
4

# Debian 6

apt-get install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libaio1 libaio-dev \
zlib1g zlib1g-dev libcap-dev bzip2 automake autoconf libtool cmake pkg-config python libreadline-dev libdb4.8-dev libsasl2-dev patch
1
2

# Debian 7

apt-get install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libaio1 libaio-dev \
zlib1g zlib1g-dev libcap-dev bzip2 automake autoconf libtool cmake pkg-config python libdb-dev libsasl2-dev libncurses5-dev patch libjemalloc-dev
1
2

# Debian 8

apt-get install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libaio1 libaio-dev \
zlib1g zlib1g-dev libcap-dev cron bzip2 automake autoconf libtool cmake pkg-config python libdb-dev libsasl2-dev \
libncurses5-dev libsystemd-dev bind9 dnsutils quota libsystemd-daemon0 patch libjemalloc-dev logrotate rsyslog libc6-dev systemd systemd-sysv
1
2
3

You might need to remove libsystemd-dev from the list, if apt-get cannot find it.

# Debian 9

apt-get update
apt-get install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libperl4-corelibs-perl libaio1 libaio-dev \
zlib1g zlib1g-dev libcap-dev cron bzip2 zip automake autoconf libtool cmake pkg-config python libdb-dev libsasl2-dev \
libncurses5-dev libsystemd-dev bind9 dnsutils quota patch libjemalloc-dev logrotate rsyslog libc6-dev libexpat1-dev \
libcrypt-openssl-rsa-perl libnuma-dev libnuma1
1
2
3
4
5

# Debian 10

apt-get update
apt-get install gcc g++ make flex bison openssl libssl-dev perl perl-base perl-modules libperl-dev libperl4-corelibs-perl libwww-perl libaio1 libaio-dev \
zlib1g zlib1g-dev libcap-dev cron bzip2 zip automake autoconf libtool cmake pkg-config python libdb-dev libsasl2-dev \
libncurses5 libncurses5-dev libsystemd-dev bind9 dnsutils quota patch logrotate rsyslog libc6-dev libexpat1-dev \
libcrypt-openssl-rsa-perl libnuma-dev libnuma1
1
2
3
4
5

FreeBSD tends to have everything needed, and the need to run pre-install commands is less common. Custombuild does require gmake, but will try to install it with dpkg -r or ports if it's missing. If needed:

pkg_add -r gmake perl wget bison flex gd cyrus-sasl2 cmake python autoconf libtool libarchive mailx
1

# FreeBSD 10

pkg install gcc gmake perl5 wget bison flex cyrus-sasl cmake python autoconf libtool libarchive iconv bind99 mailx psmisc
1

# FreeBSD 11

pkg install gcc gmake perl5 wget bison flex cyrus-sasl cmake python autoconf libtool libarchive iconv bind911 mailx webalizer gettext-runtime psmisc tar
1

# FreeBSD 12

pkg install gcc gmake perl5 wget bison flex cyrus-sasl cmake python autoconf libtool libarchive iconv bind911 mailx webalizer gettext-runtime udns sudo psmisc tar openssl krb5
1

# Running the installation with predefined options

As many people need to install DA frequently, they might have a usual set of options that they want to use, and they may want to automate this process. The setup.sh does allow for this.

Basic options can be customized by exporting environment variables set to the desired values like so:

export php1_release=8.0
1

For PHP modules:

export php_imap=yes
1

Then run installation with the following command:

./setup.sh auto
1

If more options have to be customized, it would be better to use a pre-defined options.conf file. A few variables you might need include:

Client ID:
License ID:
Hostname:
Server IP:
Ethernet device name:
Options file URL:

If the /usr/local/directadmin/custombuild/options.conf or the /usr/local/directadmin/custombuild/php_extensions.conf files exist, the installation process will not use defaults because it will instead use the settings from your predefined options.conf and/or php_extensions.conf files. So, copy them from another server, or download from a URL where you placed the options.conf and/or php_extensions.conf files prior to installation:

mkdir -p /usr/local/directadmin/custombuild
wget -O /usr/local/directadmin/custombuild/options.conf "http://yourdomain.com/options.conf"
wget -O /usr/local/directadmin/custombuild/php_extensions.conf "http://yourdomain.com/php_extensions.conf"
1
2
3

A sample call for the setup.sh script is to first specify the CustomBuild version, then pass all arguments to the setup.sh, e.g.,

cd /root/
wget -O setup.sh http://www.directadmin.com/setup.sh
chmod 755 setup.sh
./setup.sh "1234" "56789" "server.yourdomain.com" "eth0" "1.2.3.4"
1
2
3
4

And that way, when the setup.sh runs CustomBuild, it will use your settings without any changes. You will still be questioned for various setup options. Once all are answered, just wait for the installation to complete.

Edit Dec 2020

The mysql_inst and mariadb/mysql versions variables are handled properly with setup.sh, so the setup.sh script can be used to compile proper database service at installation time.

# Options for script installation mode

Options must be set in-place before calling the setup.sh in command-line mode.

  1. CustomBuild's options.conf and php_extensions.conf can be set in place with desired options before running setup.sh. Doing so will do things like using your desired download server, using the desired php version/mode, webserver type, etc. Place the files in the following locations prior to running the setup.sh:

/usr/local/directadmin/custombuild/options.conf

/usr/local/directadmin/custombuild/php_extensions.conf

Ensure these files have your desired settings defined, so that when CustomBuild runs, it will use those settings instead of the defaults.

See this article for information on setting mysql_inst before running the setup.sh script.

  1. Tell the setup.sh to run the pre-install commands:
echo 1 > /root/.preinstall
1
  1. Install DA without the need for a license:
echo 1 > /root/.skip_get_license
1

When the license becomes available, use the getLicense.sh to install it normally, and DA should start up.

  1. Custom Email and ns1/ns2 can be declared by creating the following files with your desired email and nameservers before running setup.sh:
/root/.email.txt
/root/.ns1.txt
/root/.ns2.txt
1
2
3

Upon running the setup.sh script with a custom one-line entry for those values in the files above, the values will be set as desired in lieu of the default values that match the hostname.

  1. To install using insecure http://directadmin.com instead of secured https://directadmin.com, do the following:
echo 1 > /root/.insecure_download
1
  1. To use your desired hostname with ./setup.sh auto, specify it like so in the /root/.use_hostname file:
echo "server.yourdomain.com" > /root/.use_hostname
1
  1. To skip mysql installation, create an empty /root/.skip_mysql_install file:
touch /root/.skip_mysql_install
1

Continue installation normally.

Note: If you use this option (set it before you run the setup.sh), then it will be your responsibility to ensure that the database is set up and running prior to the setup.sh being run, and that the da_admin has been set up in the mysql.conf, ready for DA to use.

  1. To explicitly specify with what OS you're installing DirectAdminopen in new window (which is useful for instructing the call to /cgi-bin/daupdate to use a specific OS rather than the value set in the license on our end), create the file:
    /root/.os_override
    If /root/.os_override exists but the os_override directadmin.conf value not set, then during directadmin startup, the variable will be filled with the value from /root/.os_override.

The values are the "value" from the OS selection drop-down when ordering a license, for example,

  • For ES 6.0 64:
    os_override=ES%206.0%2064

  • For ES 7.0 64:
    os_override=ES%207.0%2064

  • For FreeBSD 11.0 64:
    os_override=FreeBSD%2011.0%2064

  • For Debian 9 64:
    os_override=Debian%209%2064

where spaces must be swapped with %20 as DA passes it as a raw value, and Apache won't accept spaces in the GET request, else it throws a syntax error.

You'll only ever set this if you need to grab different binaries, and are unable to change it on our end (e.g., you don't have /clients access). If you do not want this set, you must remove the os_override= completely from the directadmin.conf, else it will still be used and will likely break the download.

  1. [To install the pre-release version of DirectAdmin when installing for the first time], you can use the flag 'beta'.
./setup.sh auto beta
1

The same pre-release version can be obtained using 'channel=beta' when updating an existing DirectAdmin installation to a pre-release version.