
DirectAdmin ไม่ได้มีแค่หน้า Control Panel ให้คลิก แต่ยังเปิด API ที่ให้นักพัฒนาสั่งงานทุกอย่างผ่าน HTTP Request ได้ ตั้งแต่สร้างโดเมน อีเมล ไปจนถึงจัดการ DNS เหมาะกับการทำงานอัตโนมัติและการเชื่อมต่อ DirectAdmin เข้ากับระบบของตัวเอง บทความนี้สรุปพื้นฐานที่ต้องรู้ก่อนเริ่มเขียนโค้ดเรียก API
DirectAdmin API ทำอะไรได้บ้าง
API ของ DirectAdmin สะท้อนแทบทุกฟังก์ชันที่ทำได้ผ่านหน้า Panel ออกมาเป็นคำสั่งที่เรียกด้วยโค้ดได้ ประโยชน์จริงคือการทำงานซ้ำ ๆ แบบอัตโนมัติ เช่น สคริปต์ที่สร้างอีเมลให้พนักงานใหม่ทีละหลายบัญชี ระบบที่ออกซับโดเมนให้ลูกค้าโดยอัตโนมัติ หรือเครื่องมือ Provisioning ที่ตั้งค่าเว็บใหม่ทั้งชุดในคำสั่งเดียว สิ่งที่ปกติต้องคลิกหลายสิบครั้งในหน้า Panel จึงทำได้ในสคริปต์เดียว
Authentication: Login Key ปลอดภัยกว่ารหัสผ่าน
DirectAdmin API รองรับการยืนยันตัวตนแบบ Basic Authentication รูปแบบพื้นฐานคือ:
https://username:[email protected]:2222/CMD_API_ENDPOINT
แต่การฝังรหัสผ่านหลักของบัญชีไว้ในสคริปต์มีความเสี่ยง — ถ้าโค้ดหลุด รหัสผ่านที่ใช้ล็อกอินทุกอย่างจะหลุดไปด้วย วิธีที่ปลอดภัยกว่าคือสร้าง Login Key จากเมนู Advanced Features → Login Keys ซึ่งกำหนดได้ว่าให้คีย์นี้เรียกได้เฉพาะคำสั่งใด และเพิกถอนได้ทันทีโดยไม่กระทบรหัสผ่านหลัก แล้วใช้ Login Key แทน password ในการเรียก API
API Endpoint ที่ใช้บ่อย
CMD_API_SHOW_DOMAINS— ดูรายการโดเมนทั้งหมดในบัญชีCMD_API_DOMAIN— สร้างหรือลบโดเมนCMD_API_POP— จัดการ Email AccountsCMD_API_DATABASES— จัดการฐานข้อมูล MySQLCMD_API_SUBDOMAINS— จัดการ SubdomainsCMD_API_DNS_CONTROL— จัดการ DNS Records
ตัวอย่าง cURL: ดูรายการโดเมน
คำสั่ง cURL พื้นฐานสำหรับดึงรายชื่อโดเมนทั้งหมด — ผลลัพธ์จะกลับมาเป็น URL-encoded query string ที่นำไป parse ต่อได้:
curl -u "username:password" "https://yourdomain.com:2222/CMD_API_SHOW_DOMAINS"
ตัวอย่าง PHP: สร้าง Email Account
ใช้ cURL ใน PHP เพื่อส่งคำสั่งสร้างอีเมลแบบ POST:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://yourdomain.com:2222/CMD_API_POP');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'action=create&domain=yourdomain.com&user=newuser&passwd=password123"a=500');
curl_setopt($ch, CURLOPT_USERPWD, 'da_user:da_login_key');
ควรตรวจค่าที่ API ตอบกลับทุกครั้งว่ามี error=1 หรือไม่ เพื่อจับกรณีคำสั่งล้มเหลว แทนการสันนิษฐานว่าสำเร็จเสมอ
ข้อควรระวังด้านความปลอดภัย
API ทำงานบนพอร์ต 2222 ผ่าน HTTPS เสมอ ห้ามเรียกผ่าน HTTP ธรรมดาเพราะข้อมูลยืนยันตัวตนจะถูกส่งแบบไม่เข้ารหัส อย่าฝัง Login Key ลงในโค้ดฝั่ง Client หรือ JavaScript ที่ผู้ใช้มองเห็นได้ ให้เก็บไว้ในไฟล์ตั้งค่าฝั่งเซิร์ฟเวอร์ที่เข้าถึงจากภายนอกไม่ได้ และจำกัดสิทธิ์ของแต่ละ Login Key ให้เรียกได้เฉพาะคำสั่งที่จำเป็นจริง ๆ
เอกสาร API: รายการ Endpoint ทั้งหมด พารามิเตอร์ที่ต้องส่ง และรูปแบบผลลัพธ์ อยู่ในเอกสารทางการที่ docs.directadmin.com/api ควรอ้างอิงเอกสารตามเวอร์ชัน DirectAdmin ที่เซิร์ฟเวอร์ใช้อยู่
คำถามที่พบบ่อย
ต้องเป็นนักพัฒนาถึงใช้ API ได้ไหม
ใช่ API เหมาะกับผู้ที่เขียนสคริปต์ได้ ถ้าต้องการแค่จัดการเว็บทั่วไป หน้า Control Panel ของ DirectAdmin เพียงพอแล้ว
Login Key ต่างจากรหัสผ่านอย่างไร
Login Key เป็นคีย์เฉพาะกิจที่จำกัดสิทธิ์และเพิกถอนได้ โดยไม่ต้องเปลี่ยนรหัสผ่านหลัก จึงปลอดภัยกว่าเมื่อใช้ในสคริปต์
API ใช้พอร์ตอะไร
พอร์ต 2222 ผ่าน HTTPS เหมือนหน้า Control Panel ของ DirectAdmin
DirectAdmin API คืออะไรและทำอะไรได้บ้าง
DirectAdmin API เป็นชุด HTTP Endpoints ที่ให้นักพัฒนาสั่งงาน DirectAdmin ผ่านโค้ดโดยตรงโดยไม่ต้องคลิกหน้า Panel เลย สิ่งที่ทำได้ผ่าน API ครอบคลุมแทบทุกฟังก์ชันในหน้า Control Panel ได้แก่ การสร้างและลบโดเมน การจัดการ Email Accounts และ Email Forwarders การเพิ่มหรือแก้ไข DNS Records การสร้าง MySQL Database และ Database User การจัดการ Subdomain และ FTP Accounts รวมไปถึงการดึงข้อมูลสถิติการใช้งาน Disk และ Bandwidth
ประโยชน์หลักของ API คือการทำงานอัตโนมัติและการรวมระบบ (Integration) ตัวอย่างที่พบบ่อยในการใช้งานจริง ได้แก่
- Provisioning อัตโนมัติ — เมื่อลูกค้าสั่งซื้อ Hosting ระบบ Billing สามารถเรียก API เพื่อสร้างบัญชีและตั้งค่าเว็บให้ลูกค้าได้ทันทีโดยไม่ต้องรอ Staff
- Reseller Management — Reseller ที่มีลูกค้าหลายรายสามารถเขียน Script จัดการทั้งหมดจากหน้าจอเดียวแทนการล็อกอินทีละบัญชี
- การสำรองข้อมูลอัตโนมัติ — Script เรียก API ดึงรายชื่อโดเมนทั้งหมดแล้วสั่ง Backup แต่ละ Account ไปยัง Remote Storage โดยอัตโนมัติทุกคืน
- DNS Management Tool — สร้างเครื่องมือ Internal ที่ทีม DevOps ใช้เพิ่ม/แก้ไข DNS Record โดยไม่ต้องให้ทุกคนมี Credentials ของ DirectAdmin
ข้อสำคัญคือ DirectAdmin API ใช้มาตรฐาน REST-like HTTP แบบเรียบง่าย ไม่ใช่ GraphQL หรือ gRPC จึงเรียกได้จากทุกภาษาโปรแกรมมิ่งที่ส่ง HTTP Request ได้ ไม่ว่าจะเป็น PHP, Python, Node.js, Go หรือแม้แต่ Shell Script ด้วย cURL
การสร้าง API Key ผ่าน Login Keys
Login Keys ของ DirectAdmin เป็นกลไกที่ออกแบบมาสำหรับการเข้าถึงผ่าน API โดยเฉพาะ แทนที่จะใช้รหัสผ่านหลักของบัญชีในสคริปต์ซึ่งมีความเสี่ยงสูง Login Key ให้คุณกำหนดขอบเขตสิทธิ์ วันหมดอายุ และเพิกถอนได้ทันทีหากถูก Compromise
วิธีสร้าง Login Key
- ล็อกอิน DirectAdmin แล้วไปที่ Advanced Features > Login Keys
- กด Create Login Key
- ตั้งชื่อ Key ที่สื่อถึงวัตถุประสงค์ เช่น
billing-provisioningหรือdns-manager-script - กำหนด Allowed Commands — เลือกเฉพาะ Endpoints ที่ Script นั้นต้องใช้จริงเท่านั้น เช่น ถ้า Script แค่สร้าง Email ก็เลือก
CMD_API_POPเท่านั้น ไม่ต้องให้สิทธิ์CMD_API_DOMAINหรืออื่นๆ - ตั้ง Expiry Date ให้ Key หมดอายุโดยอัตโนมัติ แนะนำไม่เกิน 1 ปี
- กด Save แล้วคัดลอก Key ที่แสดงขึ้นมาทันที เพราะระบบจะไม่แสดง Key อีกครั้ง
หลังสร้าง Login Key แล้ว ใช้ Key นั้นแทน Password ในการเรียก API ตาม Basic Auth Format คือ username:login_key แทน username:password
แนวทางที่ดีคือสร้าง Login Key แยกสำหรับแต่ละ Script หรือ Application เพื่อให้สามารถเพิกถอนได้เป็น Script หรือบริการที่ถูก Compromise โดยไม่กระทบส่วนอื่น
ตัวอย่าง cURL Call สำหรับ DirectAdmin API
ต่อไปนี้คือตัวอย่าง cURL ที่ใช้บ่อยในการทำงานกับ DirectAdmin API ทดสอบได้ทันทีจาก Terminal หรือนำไปรวมใน Shell Script
ดูรายชื่อ Email Accounts ทั้งหมด
ดึงรายชื่อ Email Account ทั้งหมดของโดเมนที่กำหนด:
curl -u "username:login_key" "https://yourdomain.com:2222/CMD_API_POP?action=list&domain=yourdomain.com"
ตรวจสอบ Disk Quota
ดึงข้อมูลการใช้ Disk ของบัญชีทั้งหมดที่อยู่ภายใต้ Reseller:
curl -u "username:login_key" "https://yourdomain.com:2222/CMD_API_SHOW_USERS"
ดูรายการโดเมนทั้งหมด
ดึงรายชื่อโดเมนทั้งหมดในบัญชี ผลลัพธ์เป็น URL-encoded string แยก Parse ต่อได้:
curl -u "username:login_key" "https://yourdomain.com:2222/CMD_API_SHOW_DOMAINS"
เพิ่ม DNS Record ใหม่
เพิ่ม A Record ผ่าน POST Request:
curl -u "username:login_key" -X POST "https://yourdomain.com:2222/CMD_API_DNS_CONTROL" -d "action=add&domain=yourdomain.com&type=A&name=sub&value=1.2.3.4"
ผลลัพธ์จาก API ส่วนใหญ่กลับมาเป็น URL-encoded key-value pair เช่น error=0&text=Done หรือ error=1&text=Error message ควรตรวจค่า error ทุกครั้งในโค้ด
Security: IP Whitelist, Key Rotation และ Least-Privilege
การใช้ API อย่างปลอดภัยต้องคำนึงถึงมากกว่าแค่การใช้ HTTPS ต่อไปนี้คือแนวทางที่แนะนำสำหรับการใช้งาน DirectAdmin API ในสภาพแวดล้อม Production
IP Whitelist
เมื่อสร้าง Login Key ใน DirectAdmin สามารถกำหนด IP Address ที่อนุญาตให้ใช้ Key นั้นได้ หาก Script ของคุณรันอยู่บน Server ที่มี IP คงที่ ควรใส่ IP นั้นใน Whitelist เสมอ เพราะแม้ Key หลุดออกไป ผู้ไม่ประสงค์ดีที่อยู่คนละ IP ก็ใช้ Key นั้นไม่ได้
Key Rotation
Login Key ที่ใช้ในสภาพแวดล้อม Production ควรมีการ Rotate เป็นระยะ แนะนำทุก 3–6 เดือน หรือทุกครั้งที่สมาชิกทีมที่รู้ Key ลาออก ขั้นตอนคือสร้าง Key ใหม่ อัพเดต Key ใน Script/Config ทั้งหมด แล้วเพิกถอน Key เก่า
Least-Privilege Principle
กำหนดสิทธิ์ Allowed Commands ให้น้อยที่สุดเท่าที่ Script นั้นต้องการจริงๆ ตัวอย่างเช่น Script ที่ทำหน้าที่แค่ดึงรายชื่อโดเมนไม่ควรมีสิทธิ์ลบ Database หรือแก้ DNS ได้ด้วย หลักการนี้จำกัด Damage Radius เมื่อ Key ถูก Compromise
- ห้ามฝัง Login Key ใน Code ที่ Public — ไม่ว่าจะเป็น GitHub Repository, JavaScript Front-end หรือไฟล์ที่ Web Server Serve ออกไปได้
- ใช้ Environment Variable หรือ Config File ที่เข้าถึงจากภายนอกไม่ได้ — เช่น เก็บใน
.envที่อยู่นอก Document Root หรือใน Vault Service - ตรวจ Log การใช้ API เป็นประจำ — DirectAdmin บันทึก API Access Log ไว้ ควรตรวจหา Pattern ที่ผิดปกติ เช่น การเรียก API จาก IP ที่ไม่รู้จัก หรือการเรียก Endpoint ที่ Script ไม่ควรเรียก
การรักษาความปลอดภัยของ API Key มีความสำคัญเทียบเท่ากับการรักษาความปลอดภัยของรหัสผ่านหลัก เพราะ Key ที่มีสิทธิ์เต็มสามารถควบคุม DirectAdmin Account ได้ทั้งหมด
ต้องการ Hosting ที่รองรับ API?
AsiaGB Hosting รองรับ DirectAdmin API เต็มรูปแบบ เหมาะสำหรับ Developer และองค์กร
ดูแพ็กเกจ Hosting