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/DebianInstall 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.logPost-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.logWeb 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: passwordFirewall 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 -sEnable 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.confPHP 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.2Set 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.2PHP 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 gdCommon 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 jsonDNS 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.comEmail 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 spamassassinDatabase 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 defaultManage 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 letsencryptBackup
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 /homeTroubleshooting
# 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 iUninstall 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 dataSecurity 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