
DirectAdmin API เป็นชุดคำสั่งที่ปล่อยให้คุณควบคุม hosting account ผ่าน code หรือ script แทนที่จะเข้า control panel คลิกเองทีละขั้น เหมาะสำหรับผู้ดูแลเซิร์ฟเวอร์ หรือใครที่ต้อง automate งานบน hosting บทความนี้สอนวิธีใช้ DirectAdmin API ทีละขั้น พร้อมตัวอย่าง script PHP และ cURL ที่ใช้งานได้จริง
DirectAdmin API คืออะไร
DirectAdmin API เป็นอินเตอร์เฟส (interface) ที่ให้สื่อสารกับ DirectAdmin control panel ผ่าน HTTP/HTTPS request โดยไม่ต้องเข้าหน้า web interface เอง ทำให้คุณสามารถเขียน script ทำงานซ้ำๆ ลดความผิดพลาด หรือ integrate กับ application ที่สร้างเอง
ตัวอย่างงานที่ใช้ DirectAdmin API: สร้าง subdomain อัตโนมัติสำหรับลูกค้าใหม่ สำรองข้อมูล database ตามเวลา บัญชี email เพิ่มเติม สั่งรีสตาร์ท PHP หรือ service อื่น โดยไม่เข้า control panel ด้วยมือ
DirectAdmin API Base URL และการ Authenticate
DirectAdmin API endpoint ทั้งหมด ใช้ base URL ร่วมกันดังนี้:
https://[hostname]:[port]/api/[endpoint]
โดยทั่วไป port คือ 2222 (HTTPS) แต่บาง hosting provider ใช้ port อื่น เช่น 2087, 8443 หรือ 443
การ authenticate เข้า API ทำได้ 2 วิธี: ใช้ username/password หรือ login key (token) ซึ่งปลอดภัยกว่า
ตัวอย่าง Base URL: ถ้าชื่อ server คือ `hosting.example.com` port 2222 และต้องการ create user → URL จะเป็น `https://hosting.example.com:2222/api/admin?action=user_create`
ขั้นตอนเตรียม: ได้ Login Key (API Token) จาก DirectAdmin
ก่อนใช้ API ต้องมี login key ซึ่งเป็น token ปลอดภัยแทนรหัสผ่าน Login key คือ string ยาว ๆ ที่ DirectAdmin สร้างขึ้นแทนการส่ง username/password ทุกครั้ง ข้อดีคือ token นี้สามารถหมดอายุ หรือยกเลิกได้ โดยไม่ต้องเปลี่ยน password จริง วิธีหา login key:
- เข้า DirectAdmin control panel บัญชี admin (โดยปกติ URL เป็น https://hostname:2222)
- ไปที่ Administrator → Settings (หรือบางระบบเป็น Admin → View Settings)
- ค้นหา Login Keys หรือ API Token section ในหน้านั้น
- ถ้ามี key อยู่แล้วให้คัดลอก หรือกำหนด key ใหม่โดยกด "Generate" button
- เก็บ key นี้ไว้ที่ปลอดภัย ห้ามแชร์กับคนอื่น อย่าใส่ใน email หรือ chat ธรรมดา ถ้าหาก key นี้หลุดออกไป ใครก็สามารถควบคุม account ได้
- ถ้า key หลุดแล้ว ให้มาสร้าง key ใหม่ และลบ key เก่าออกทันที
ต้องการข้อมูลอะไรบ้างก่อน Call API
ก่อนเขียน script ต้องรวบรวมข้อมูล:
- Hostname: ชื่อ server หรือ domain name (เช่น `hosting.example.com` หรือ IP address)
- Port: port ของ DirectAdmin (โดยปกติ 2222)
- Admin Username: ชื่อ admin account (เช่น `admin`)
- Login Key: API token ที่เตรียมไว้
- Username ของ user ที่จะจัดการ: ชื่อ hosting account ที่ต้องการสั่ง (เช่น `mysite1`, `mysite2`)
ตัวอย่าง API Endpoint และการใช้งานพื้นฐาน
DirectAdmin API มี endpoint หลายตัว ต่อไปนี้คือ endpoint ที่ใช้บ่อยที่สุด:
| ทำอะไร | Endpoint | Method |
|---|---|---|
| ได้ข้อมูล user | /api/user?action=list |
POST |
| สร้าง subdomain | /api/admin?action=domain_add |
POST |
| สร้าง email account | /api/admin?action=email_add |
POST |
| แก้ password | /api/admin?action=user_modify |
POST |
| ลบ user | /api/admin?action=user_delete |
POST |
| สำรองข้อมูล (backup) | /api/admin?action=backup |
POST |
ตัวอย่าง Script PHP: ใช้ API ติดต่อ DirectAdmin
ตัวอย่าง script ที่สอน สร้าง subdomain โดยใช้ DirectAdmin API:
<?php
// ข้อมูล DirectAdmin
$hostname = 'hosting.example.com';
$port = 2222;
$admin_user = 'admin';
$login_key = 'YOUR_API_KEY_HERE'; // แทนด้วย login key จริง
$username = 'mysite1'; // user account ที่ต้องการสั่ง
// URL endpoint
$url = "https://$hostname:$port/api/admin?action=domain_add";
// ข้อมูล parameter
$data = http_build_query([
'user' => $username,
'domain' => 'blog.mysite.com', // subdomain ที่ต้องการสร้าง
'ip' => '1.2.3.4', // IP address (optional)
]);
// เตรียม cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$admin_user:$login_key");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // only for testing!
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// ส่ง request
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// แสดงผล
if ($http_code === 200) {
echo "✅ สร้าง subdomain สำเร็จ\n";
echo $response;
} else {
echo "❌ เกิดข้อผิดพลาด HTTP $http_code\n";
echo $response;
}
?>
⚠️ สำคัญ: ในตัวอย่างมี `CURLOPT_SSL_VERIFYPEER => false` ซึ่งเป็น test mode ที่ไม่ปลอดภัย สำหรับ production ต้องให้ true หรือใช้ certificate ที่ถูกต้อง
ตัวอย่าง cURL Command จากเทอร์มินัล
ถ้าต้องการทดสอบ API โดยตรงจากเทอร์มินัล (SSH) ใช้คำสั่ง cURL:
curl -X POST https://admin:[email protected]:2222/api/admin?action=domain_add \ -d "user=mysite1&domain=blog.mysite.com"
สำเร็จจะได้ response ที่บอกว่า subdomain ถูกสร้างแล้ว เช่น:
output=success text=Domain Added
สร้าง Email Account อัตโนมัติ
ตัวอย่างการสร้าง email account ใหม่ผ่าน API:
<?php
$hostname = 'hosting.example.com';
$port = 2222;
$admin_user = 'admin';
$login_key = 'YOUR_API_KEY_HERE';
$username = 'mysite1';
$url = "https://$hostname:$port/api/admin?action=email_add";
$data = http_build_query([
'user' => $username,
'domain' => 'mysite.com',
'email' => '[email protected]', // email ที่ต้องการสร้าง
'passwd' => 'StrongPass@123', // password
'passwd2' => 'StrongPass@123', // ยืนยัน password
'quota' => '100M', // quota (เช่น 100MB)
]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$admin_user:$login_key");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
ความผิดพลาดที่พบบ่อยและวิธีแก้
เมื่อใช้ DirectAdmin API อาจเจอ error ต่างๆ ต่อไปนี้คือสิ่งที่พบบ่อยที่สุด:
| Error Message | สาเหตุ | วิธีแก้ |
|---|---|---|
| Invalid login | Username/password/key ผิด | ตรวจสอบ username, login key, port ว่าถูกต้อง |
| User already exists | ชื่อ user ที่สร้างมีอยู่แล้ว | เปลี่ยนชื่อ user เป็นอันใหม่ |
| Domain already exists | Subdomain นี้มีอยู่แล้ว | ใช้ชื่อ subdomain อื่น |
| Connection refused | ไม่สามารถติดต่อ server ได้ | ตรวจสอบ hostname, port, firewall |
| SSL verification failed | Certificate ไม่ถูกต้อง | ตั้ง SSL_VERIFYPEER เป็น false (แค่ test) หรือใช้ cert ที่ถูกต้อง |
Best Practice ใช้ DirectAdmin API ปลอดภัย
เพื่อให้ API ใช้งานปลอดภัยและเสถียร ต้องปฏิบัติตามสิ่งต่อไปนี้:
- ใช้ HTTPS เสมอ: ห้ามใช้ HTTP ธรรมดา API key ต้องถูกเข้ารหัสขณะส่ง ถ้าส่ง API key บน HTTP ใครก็สามารถจับ traffic ได้ โดยใช้ HTTPS นั้น data ทั้งหมดจะเข้ารหัสระหว่างการส่ง ปลอดภัยกว่าเยอะ
- เก็บ API key ปลอดภัย: ห้าม hardcode login key ในไฟล์ source code ที่เปิดให้คนอื่นเห็น ใช้ environment variable หรือ config file แยกต่างหาก วิธีที่ปลอดภัยคือเก็บ key ไว้ในไฟล์ที่ Git ไม่ track (.env file) หรือตั้งค่าเป็น environment variable บน server ตรวจสอบว่า config file ไม่อยู่ใน public_html
- ตรวจสอบ Response: ไม่ควรถือว่า API call สำเร็จแค่ได้ HTTP 200 ต้องตรวจสอบ response body ว่ามี `output=success` จริง บางทีอาจได้ 200 แต่ response บอก error เพราะ parameter ผิด domain ที่สร้างนั้นมีอยู่แล้ว หรือ user quota หมด
- ใช้ Error Handling: ต้องจัดการ error ต่างๆ เช่น connection fail (timeout/host unreachable), invalid JSON response, authentication failed ทำให้ code ไม่หยุดทำงานกระทันหัน
- Set Timeout: ให้ timeout บน cURL ประมาณ 30 วินาที ป้องกัน request ค้างนาน ถ้า API server ไม่ตอบจาก 1 นาทีมากกว่า script ควรหยุดแล้วลองใหม่หรือ log error ไว้
- Log ทุก API Call: เก็บ log ทั้ง request (คำสั่ง, parameter) และ response เพื่อ debug ต่อไป ถ้าเกิดปัญหา ตรวจ log ได้ว่า API call ตัวไหนล้มเหลว parameter ไหนผิด
ดู DirectAdmin API Documentation
ตรวจสอบและ Debug DirectAdmin API Response
เมื่อ API call ได้ response ต้องรู้วิธีอ่าน error message เพื่อหาสาเหตุ DirectAdmin API ส่ง response ในรูปแบบ key-value text หรือ JSON ดังนี้:
output=success text=Domain Added
หรือถ้าเกิดข้อผิดพลาด จะได้:
output=error text=Domain already exists on this account
กรณีนี้ต้องตรวจสอบชื่อ domain ว่ามีอยู่แล้วหรือไม่ เปลี่ยนชื่อหรือลบ domain เก่าออกก่อน นอกจากนี้ DirectAdmin API บาง endpoint ส่ง response ในรูป JSON ให้ตรวจดู `success` field เสมอ
เคล็ดลับ Debug: เพิ่ม print_r() หรือ var_dump() ของ response ในตัว script ช่วง development เพื่อเห็น exact response ที่ API ส่งมา ตรวจสอบว่า HTTP status code กับ response message ตรงกัน
DirectAdmin API Documentation ดูเพิ่มเติม
DirectAdmin มี official documentation ครบถ้วน ที่ `https://www.directadmin.com/features.php?id=228` และ `https://docs.directadmin.com/` โดยเฉพาะส่วน API ครอบคลุม endpoint ทั้งหมด parameter ที่รองรับ ตัวอย่าง response และข้อจำกัดต่างๆ เช่น user quota limit, file upload size limit, subdomain limit ทั้งหมดเป็นข้อมูลจากเจ้าของตัว DirectAdmin เองเชื่อถือได้
Hosting รองรับ DirectAdmin API เต็มรูปแบบ
AsiaGB Hosting ใช้ DirectAdmin control panel ทำให้รองรับ API ได้เต็ม พร้อม login key มีพื้นที่ SSD ขนาดใหญ่ Uptime 99% เริ่มต้น 500 บาท/ปี
ดูแพ็กเกจ Hosting