คู่มือ DirectAdmin API สำหรับนักพัฒนา

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 ที่ใช้บ่อย

ตัวอย่าง 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) ตัวอย่างที่พบบ่อยในการใช้งานจริง ได้แก่

ข้อสำคัญคือ 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

  1. ล็อกอิน DirectAdmin แล้วไปที่ Advanced Features > Login Keys
  2. กด Create Login Key
  3. ตั้งชื่อ Key ที่สื่อถึงวัตถุประสงค์ เช่น billing-provisioning หรือ dns-manager-script
  4. กำหนด Allowed Commands — เลือกเฉพาะ Endpoints ที่ Script นั้นต้องใช้จริงเท่านั้น เช่น ถ้า Script แค่สร้าง Email ก็เลือก CMD_API_POP เท่านั้น ไม่ต้องให้สิทธิ์ CMD_API_DOMAIN หรืออื่นๆ
  5. ตั้ง Expiry Date ให้ Key หมดอายุโดยอัตโนมัติ แนะนำไม่เกิน 1 ปี
  6. กด 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

การรักษาความปลอดภัยของ API Key มีความสำคัญเทียบเท่ากับการรักษาความปลอดภัยของรหัสผ่านหลัก เพราะ Key ที่มีสิทธิ์เต็มสามารถควบคุม DirectAdmin Account ได้ทั้งหมด

หน้า API Documentation ใน DirectAdmin
หน้า API Documentation ใน DirectAdmin

ต้องการ Hosting ที่รองรับ API?

AsiaGB Hosting รองรับ DirectAdmin API เต็มรูปแบบ เหมาะสำหรับ Developer และองค์กร

ดูแพ็กเกจ Hosting