คู่มือฉบับสมบูรณ์อธิบายโครงสร้างระบบ ความสามารถ 1-Click Zero-Touch Auto-Provisioning, ระบบป้องกัน Error 522, กลไกออกใบรับรอง SSL อัตโนมัติ และระบบความปลอดภัย 2 ชั้น Rollback & Terminate
โปรแกรม PKDERIV Infrastructure Wizard คือระบบควบคุม Infrastructure อัตโนมัติแบบรวมศูนย์ (Local Management Dashboard) พัฒนาด้วย Node.js + Express ทำงานประสานกันระหว่าง AWS Cloud (Region London: eu-west-2) และ Cloudflare DNS เพื่อควบคุมดูแลให้โดเมน pkderiv.online สามารถออนไลน์ได้ตลอด 24/7 โดยไม่ต้องคลิกหน้า AWS Console แม้แต่คลิกเดียว
ควบคุม EC2 t3.micro, จัดการ Public Elastic IP, รหัสผ่านกุญแจ SSH PEM, และระบบไฟร์วอลล์ Security Group อัตโนมัติผ่าน AWS SDK v3
เชื่อมต่อผ่าน Cloudflare REST API เพื่ออัปเดต A-Record แบบ Real-time รองรับทั้งโหมด DNS-Only (เมฆเทา ⚪) และ Proxied CDN (เมฆส้ม 🟠)
สั่งงานเครื่องผ่าน SSH แบบไร้รหัสผ่าน (Key-Based) ติดตั้ง Nginx, ออกใบรับรองแท้ Let's Encrypt (Certbot) และเตรียมสภาพแวดล้อมแอพ
เมื่อกดปุ่ม "🚀 Start Auto-Provisioning" ในหน้า Wizard โปรแกรมจะดำเนินการตามขั้นตอน 6 เฟสอย่างเคร่งครัดตั้งแต่ค้นหาทรัพยากรไปจนถึงออนไลน์:
โปรแกรมจะค้นหา Default VPC และ Public Subnet ใน Region (eu-west-2) พร้อมทั้งค้นหา Ubuntu 24.04 LTS (Noble) AMI ล่าสุด ของ Canonical ผ่าน API โดยอัตโนมัติ เพื่อให้ได้ระบบปฏิบัติการที่ปลอดภัยและทันสมัยที่สุด
สร้าง SSH KeyPair ใหม่ (เช่น pkderiv-key-<timestamp>) บันทึกไฟล์ .pem ลงในโฟลเดอร์ keys/ พร้อมล็อก Permission 0o600 และสร้าง Security Group เปิดพอร์ตที่จำเป็น: พอร์ต 22 (SSH), พอร์ต 80 (HTTP) และ พอร์ต 443 (HTTPS)
สั่ง Launch เครื่อง Instance ขนาด t3.micro โดยส่งสคริปต์ User-Data Bootstrap ไปให้เครื่องติดตั้ง nginx, curl, ufw, git, certbot และ python3-certbot-nginx ทันทีที่เครื่องบูต และรอจนกระทั่งสถานะเปลี่ยนเป็น running
นำ Elastic IP จากคอนฟิก (หรือจองใหม่) มาผูกกับ Network Interface ของเครื่องใหม่ผ่าน AssociateAddressCommand และอัปเดต Cloudflare A-Record ให้ชี้ไปยัง IP ทันที โดยกำหนดค่าเริ่มต้นเป็น proxied: false (DNS Only ⚪) เพื่อรับประกันว่าเข้าเว็บได้ทันที ไม่มี Error 522
โปรแกรมจะรอระบบ SSH พร้อมใช้งาน จากนั้นยิงคำสั่งให้ Certbot ติดต่อขอใบรับรอง SSL ฟรีของแท้จาก Let's Encrypt สำหรับโดเมน pkderiv.online พร้อมติดตั้งลง Nginx ให้เสร็จสรรพ ทำให้เว็บไซต์ใช้งาน HTTPS กุญแจเขียวได้ทันที
สร้างโฟลเดอร์แอพ /home/ubuntu/indicators_Multiplex กำหนดสิทธิ์ให้ User ubuntu ตรวจเช็ค Systemd Service tradeMultiplex และบันทึก Instance ID, Key Path, Security Group ID ลงในไฟล์ .env อัตโนมัติ
เมื่อเปิดใช้ Cloudflare Proxy (เมฆส้ม 🟠) ทราฟฟิกของผู้ใช้จะวิ่งเข้า Edge Server ของ Cloudflare ก่อน จากนั้น Cloudflare จะพยายามเชื่อมต่อไปยัง Origin IP (เครื่อง EC2) หากเครื่องเพิ่งสร้างใหม่และมีเพียงใบรับรอง Self-Signed แต่โหมด SSL ของ Cloudflare ตั้งไว้ที่ Full (Strict) การเชื่อมต่อจะล้มเหลวและหมดเวลา (Timeout 15 วินาที) กลายเป็น Error 522
proxied: false ทำให้โดเมนวิ่งตรงไปยัง Elastic IP 16.61.48.164 ทันที (ตัด Error 522 100%)ระบบนี้สร้างขึ้นเพื่อแก้ปัญหา: "หากสร้างเครื่องใหม่แล้วต้องการเปลี่ยนใจ ย้ายโดเมนกลับเครื่องเดิม และลบเครื่องใหม่ทิ้งเพื่อไม่ให้เสียเงินค่าบริการ EC2 ต่อเนื่อง" โดยมีกลไกป้องกันการลบผิดเครื่อง 2 ชั้น:
| ฟังก์ชัน | การทำงาน | ระดับความเสี่ยง |
|---|---|---|
| 1. สลับ Elastic IP กลับ (Rollback Only) | ย้าย Elastic IP 16.61.48.164 กลับไปผูกเครื่องเดิม (เช่น nutv99-aws-london) โดเมนจะชี้กลับทันที เครื่องใหม่ยังอยู่ไม่ถูกแตะต้อง |
Zero Risk (ปลอดภัย 100%) |
| 2. Rollback + สั่ง Terminate เครื่องใหม่ | ย้าย Elastic IP กลับเครื่องเดิม แล้วสั่งลบเครื่องใหม่ทิ้งถาวรผ่าน AWS API | High Impact (ลบเครื่องถาวร) |
i-068063e18e04b28a2) ให้ตรงกันเป๊ะ ๆ ทุกตัวอักษรในแท็บ "6 Verify All" หรือปุ่ม "🔍 Run Health Check" ระบบจะตรวจสอบส่วนสำคัญ 5 จุดของ Infrastructure:
| รายการตรวจสอบ | เงื่อนไขที่ถือว่าผ่าน (Pass) | ปุ่มแก้ไขด่วน (1-Click Fix) |
|---|---|---|
| 1. EC2 Instance | Instance ID ใน .env มีสถานะเป็น running |
▶ Start EC2 Instance |
| 2. Elastic IP (EIP) | Elastic IP ผูกอยู่กับ Network Interface ของ Instance อย่างถูกต้อง | 🔗 Associate Elastic IP |
| 3. Security Group | พอร์ต 80 (HTTP) และ 443 (HTTPS) เปิด Ingress รับทราฟฟิก | 🛡️ Authorize Ports 80 & 443 |
| 4. Origin Nginx & SSL | Service Nginx เปิดทำงาน รับฟังพอร์ต 80/443 และ curl 127.0.0.1 ตอบกลับ 200 OK | 🔒 Setup SSL (Certbot) / 🔄 Restart Nginx |
| 5. Cloudflare DNS | A-Record ของ pkderiv.online ชี้ตรงกับ Elastic IP ของเครื่อง |
🌐 Update A-Record / ⚪ Proxy OFF |
# 1. เข้าสู่โฟลเดอร์โปรเจกต์
cd d:\Rust\aws_config_wizard
# 2. เริ่มเซิร์ฟเวอร์
npm start
# หรือดับเบิลคลิกไฟล์ start-wizard.bat
# 3. เปิดเบราว์เซอร์
http://localhost:3000
PORT=3000
DRY_RUN=false # true = จำลอง, false = รันจริงบน Cloud
AWS_REGION=eu-west-2 # London Region
EC2_INSTANCE_ID=i-xxxxxxx # Active Instance ID
ELASTIC_IP=16.61.48.164 # Static Public IP
DOMAIN=pkderiv.online # โดเมนหลัก
CLOUDFLARE_ZONE_ID=xxxxxxx # Zone ID บน Cloudflare
APP_DIR=/home/ubuntu/indicators_Multiplex
APP_SERVICE=tradeMultiplex
| Method & URL | หน้าที่การทำงาน | Payload ตัวอย่าง |
|---|---|---|
GET /api/config |
ดึงการตั้งค่าปัจจุบันจาก .env และโหมด DRY_RUN |
- |
POST /api/check |
รันการตรวจสอบระบบทั้ง 5 จุดของ Health Matrix | - |
POST /api/provision |
เริ่มกระบวนการ 6-Phase Auto-Provisioning สร้างเครื่องใหม่ | { "dryRun": false, "cloudflareProxied": false, "setupSsl": true, "deployApp": true } |
GET /api/instances |
ดึงรายการ Instance ทั้งหมดใน Region พร้อม Tags และสถานะ | - |
POST /api/rollback |
สลับ Elastic IP กลับเครื่องเดิม และสั่ง Terminate เครื่องใหม่แบบปลอดภัย | { "targetInstanceId": "i-0dfe609694660b8d2", "terminateInstanceId": "i-068063e18e04b28a2", "confirmInstanceId": "i-068063e18e04b28a2", "dryRun": false } |
POST /api/setup-ssl |
สั่ง Certbot บนเครื่อง EC2 ออกใบรับรอง Let's Encrypt ทันที | - |
POST /api/deploy-app |
เตรียมโฟลเดอร์แอปและตรวจสอบสถานะ Systemd Service | - |
POST /api/fix/:name |
สั่งซ่อมแซมรายจุด (start-ec2, eip, sg, nginx, dns, proxy-on, proxy-off) |
- |