DocumentationDirectAdmin

DirectAdmin

Installation

Prerequisites

# Supported OS:
# - AlmaLinux 9
# - CentOS 7 (with updates)
# - Ubuntu 22.04, 20.04
# - Debian 11, 10
 
# Check OS
cat /etc/os-release
 
# Update system
sudo yum update -y          # CentOS/AlmaLinux
# or
sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian

Install DirectAdmin

# Download and run installer
# Get license key from https://www.directadmin.com/
 
bash <(curl -fsSL https://download.directadmin.com/setup.sh) 'YOUR_LICENSE_KEY'
 
# Or with wget
curl -fsSL https://download.directadmin.com/setup.sh | bash -s YOUR_LICENSE_KEY
 
# Installation takes 10-15 minutes
# Monitor logs
tail -f /root/directadmin/install.log

Post-Installation

# Access DirectAdmin
# https://server-ip:2222
 
# Default username: admin
# Default password: (emailed or shown in installer)
 
# Enable DirectAdmin service
sudo systemctl enable directadmin
sudo systemctl status directadmin
 
# Stop/Start DirectAdmin
sudo systemctl stop directadmin
sudo systemctl start directadmin
sudo systemctl restart directadmin
 
# View logs
tail -f /var/log/directadmin/error.log

Web Interface

# Admin Panel
https://server-ip:2222
Username: admin
Password: (your_password)
 
# Reseller Panel (if applicable)
https://server-ip:2222
Username: reseller_username
Password: password
 
# User Panel
https://server-ip:2222
Username: user_username
Password: password

Firewall Configuration

CSF (ConfigServer Firewall)

# Access CSF configuration
sudo nano /etc/csf/csf.conf
 
# Enable CSF
sudo csf -e
 
# Disable CSF
sudo csf -d
 
# Allow port
sudo csf -a IP_ADDRESS
 
# Deny port
sudo csf -d IP_ADDRESS
 
# View rules
sudo csf -l
 
# Restart firewall
sudo csf -r
 
# Check firewall status
sudo csf -s

Enable SMTP

# Edit CSF configuration
sudo nano /etc/csf/csf.conf
 
# Find and change
SMTP_BLOCK = "0"
 
# Or use command line
sudo sed -i 's/SMTP_BLOCK = "1"/SMTP_BLOCK = "0"/' /etc/csf/csf.conf
 
# Restart firewall
sudo csf -r
 
# Verify
grep SMTP_BLOCK /etc/csf/csf.conf

PHP Management

Install Multiple PHP Versions

# Via DirectAdmin web interface
1. Admin Panel > Account Manager > PHP Versions
2. Select PHP versions to install
3. Click "Install Checked"
 
# Or via command line
# Check available versions
cd /usr/local/directadmin/custombuild
./build versions
 
# Update build for PHP version
./build update
./build php 8.2
 
# Multiple versions
./build php 7.4
./build php 8.0
./build php 8.2

Set Default PHP Version per Account

# Via Admin Panel
1. Admin Panel > Account Manager > Select User
2. Set PHP version
3. Save
 
# Via command line
# Edit DirectAdmin user config
sudo nano /usr/local/directadmin/data/users/username/user.conf
 
# Add or modify
php=8.2
php_version=8.2

PHP Extensions

Install PHP Extensions

# Via web interface
1. Admin Panel > PHP Versions
2. Select PHP version
3. Manage modules
4. Select extensions to install
 
# Via CustomBuild
cd /usr/local/directadmin/custombuild
./build php-exts
 
# Install specific extension
./build install-php-extensions php-8.2 gd

Common Extensions

# GD (image processing)
./build install-php-extensions php-8.2 gd
 
# MySQL/MySQLi
./build install-php-extensions php-8.2 mysql
 
# ZIP
./build install-php-extensions php-8.2 zip
 
# cURL
./build install-php-extensions php-8.2 curl
 
# JSON
./build install-php-extensions php-8.2 json

DNS Management

Zone Configuration

# Via Admin Panel
1. Admin Panel > DNS Administration
2. Create/Edit zones
3. Add DNS records (A, CNAME, MX, TXT, etc.)
 
# Command line zone location
sudo nano /etc/namedb/zone/domainname.com
 
# Zone transfer format
A     subdomain     IP_ADDRESS
CNAME alias         target.domain.com
MX    10  mailserver.domain.com
TXT   "verification_code"

Secondary DNS

# Configure secondary DNS in DirectAdmin
1. Admin Panel > DNS Administration
2. Set secondary DNS servers
3. Configure zone transfers
 
# Common secondary DNS providers
- Cloudflare NS: ns1.cloudflare.com, ns2.cloudflare.com
- Linode: ns1.linode.com, ns2.linode.com

Email Configuration

Exim Mail Server

# Check mail queue
exim -bp
 
# Flush queue
exim -qff
 
# View email logs
tail -f /var/log/exim_mainlog
 
# Test SMTP
echo "Test message" | mail -s "Test" [email protected]

SpamAssassin

# Via DirectAdmin
1. Admin Panel > System Administration
2. SpamAssassin settings
3. Configure spam levels
 
# Command line
sudo /usr/local/directadmin/custombuild/build update
sudo /usr/local/directadmin/custombuild/build spamassassin

Database Management

MySQL/MariaDB

# Manage via Admin Panel
1. Admin Panel > MySQL Management
2. Create/Delete databases and users
3. Manage privileges
 
# Command line
mysql -u root -p
 
# Create database
CREATE DATABASE mydb;
 
# Create user
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'password';
 
# Grant privileges
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;

SSL Certificates

Let’s Encrypt

# Via DirectAdmin
1. Admin Panel > SSL Certificates
2. Add certificate from Let's Encrypt
3. Select domains
4. Auto-install
 
# Auto-renewal is enabled by default

Manage Certificates

# View installed certificates
cd /usr/local/directadmin/conf/
 
# Check certificate expiry
openssl x509 -in certificate.crt -text -noout | grep -i "not after"
 
# Renew certificate
cd /usr/local/directadmin/custombuild
./build letsencrypt

Backup

Automated Backup

# Via DirectAdmin
1. Admin Panel > Backup
2. Configure backup destination (local, FTP, etc.)
3. Set backup schedule
 
# Default backup directory
/home/backup/

Manual Backup

# Backup user data
sudo directadmin -o user -a get_backup -d username > /backup/username.tar.gz
 
# Restore from backup
sudo directadmin -o user -a set_backup -d username < /backup/username.tar.gz
 
# Backup entire server
sudo tar -czf /backup/directadmin-full-$(date +%Y%m%d).tar.gz /home

Troubleshooting

# Check DirectAdmin service
sudo systemctl status directadmin
 
# Restart DirectAdmin
sudo systemctl restart directadmin
 
# View error logs
sudo tail -f /var/log/directadmin/error.log
 
# Check port 2222
sudo netstat -tlnp | grep 2222
 
# Verify DirectAdmin is running
ps aux | grep directadmin
 
# Check disk space
df -h
 
# Rebuild DirectAdmin
cd /usr/local/directadmin/custombuild
./build update
./build everything
 
# Reset admin password
cd /usr/local/directadmin
./directadmin i

Uninstall DirectAdmin

# Stop DirectAdmin
sudo systemctl stop directadmin
 
# Run uninstaller
cd /usr/local/directadmin/
./uninstall.sh
 
# Remove directories
sudo rm -rf /usr/local/directadmin/
sudo rm -rf /home/backup/
 
# Note: This will remove all user data

Security Hardening

# Change DirectAdmin port
sudo nano /usr/local/directadmin/conf/directadmin.conf
# Change port 2222 to custom port
# Restart: sudo systemctl restart directadmin
 
# Disable root login via SSH
sudo nano /etc/ssh/sshd_config
# Change: PermitRootLogin no
# Restart: sudo systemctl restart ssh
 
# Enable CSF firewall
sudo csf -e
 
# Setup two-factor authentication
# Via DirectAdmin web interface
# Admin Panel > Account Settings > Two-factor authentication