Install DirectAdmin on Amazon AWS A-Z Guide

Introduction
This guide shows you how to install and configure DirectAdmin on Amazon EC2.
Prerequisites
- Active AWS Account.
- AWS Security Group open on ports 80,995,143,465,53,2222,443,35000-35999,110,1194,993,22,21,25,53,587
- Basic Linux knowledge
- DirectAdmin License
Lunch EC2 instance
-
Login to AWS Console.
-
Go to EC2 Dashboard, and click the "Lunch Instance" button.

-
Choose a CentOS 7 (AMI).

-
Choose any Instance Type that suits your needs, add storage, configure Security Group, and then launch your server.



Installation
To begin, log in to your AWS EC2 server via SSH
-
Update your CentOS and install some basic programs.
sudo yum -y update sudo yum -y install nano wget perl -
Enable SSH for root account
sudo nano /etc/ssh/sshd_configSet
PermitRootLogin yesSetAllowTcpForwarding noEdit this the
authorized_keysto allow login via the root account:sudo nano /root/.ssh/authorized_keysThen delete the lines at the beginning of the file that say
COMMAND….until you get to the wordsssh-rsa.Finally, restart SSH
sudo service sshd restart -
Set your hostname
Assume you are using the domain
hosting.xyz, and you want your server hostname set toserver1.hosting.xyz:hostnamectl set-hostname server1.hosting.xyzCheck if the
/etc/hostnameshows the hostname:nano /etc/hostnameWe also edit
/etc/hoststo make the hostname point to the server IP:nano /etc/hoststhen add
xxx.xxx.xxx.xxx server1.hosting.xyzat the end wherexxx.xxx.xxx.xxxis your server public IP.AWS will reset the hostname every time the server reboots, so we need to fix this:
nano /etc/cloud/cloud.cfgand add
preserve_hostname: truebelow thesyslog_fix_perms.Then reboot the server
sudo reboot -
Activate Quotas
On CentOS 7,
xfsis used by default and Quotas are not activated, so you need to enable them manually:nano /etc/default/grubadd quota options
rootflags=usrquota,grpquotainto the end ofGRUB_CMDLINE_LINUXline, it will look like this:GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 ... rootflags=usrquota,grpquota"Make a backup:
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backGenerate a new configuration file:
grub2-mkconfig -o /boot/grub2/grub.cfgRestart the server; the root directory will be mounted with the required options. We can check by running this command
mount | grep '/'You will see something like below:
/dev/xvda1 on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota) -
Add network eth0:0 By default, AWS EC2 use private IP for eth0; to install DirectAdmin, we need to use the public IP:
nano /etc/sysconfig/network-scripts/ifcfg-eth0:0Enter the following content
DEVICE=eth0:0 BOOTPROTO=none ONPARENT=yes IPADDR=xxx.xxx.xxx.xxx NETMASK=255.255.255.0 ONBOOT=yesWhere
xxx.xxx.xxx.xxxis your AWS Public IP, then restart the network/etc/init.d/network restartIf you wish to you IPv6, set your eth0 like below:
IPV6INIT="yes" IPV6ADDR=2600:1f16:xxxxxxxxxxxx -
Setup DirectAdmin
echo 1 > /root/.lan wget http://www.directadmin.com/setup.sh chmod 755 setup.sh ./setup.shAnd follow the instructions. Note when you asked for the network, enter
eth0:0.
Configuration
Since EC2 runs on a LAN/NAT and is behind the firewall, we need to configure it.
-
Enable LAN
nano /usr/local/directadmin/conf/directadmin.confAdd this value
lan_ip=yyy.yyy.yyy.yyywhereyyy.yyy.yyy.yyyis your AWS Private IP.Link the Private IP to your Public IP using the DA Linked IP feature:
- Add the LAN IP to DA's IP manager. Don't assign it to any Users or Domains.
- View the details of the external IP: Admin Level -> IP Manager -> Click the public/external IP.
- Link the internal IP to the external IP: Select the LAN IP from the drop-down.
- Only select Apache; do not select DNS.
Then, restart DirectAdmin
-
Open ports for FTP If you use ProFTPD, edit it's configure file:
nano /etc/proftpd.confAdd after PassivePorts: MasqueradeAddress xxx.xxx.xxx.xxx where xxx.xxx.xxx.xxx is your AWS Public IP Add rule to the iptables:
iptables -I INPUT -p tcp --dport 35000:35999 -j ACCEPTnano /usr/libexec/iptables/iptables.initadd
$IPTABLES -A INPUT -p tcp --dport 35000:35999 -j ACCEPTbelow the ftp section, like this:######################### # ftp $IPTABLES -A INPUT -p tcp --dport 21 -j ACCEPT $IPTABLES -A INPUT -p tcp --dport 35000:35999 -j ACCEPT
Conclusion
Your DirectAdmin is now operational on CentOS, hosted on Amazon AWS EC2.