เทคโนโลยีที่ใช้ (Tech Stack)¶
ภาพรวมการเลือกใช้¶
| เลเยอร์ | ตัวเลือก | เหตุผล |
|---|---|---|
| ภาษา | Go 1.25+ | ไบนารีเดียว cross-compile ได้ concurrency ดี ระบบนิเวศเติบโตเต็มที่ |
| Web framework | Gin | ระบบนิเวศใหญ่ที่สุด มิดเดิลแวร์หลากหลาย |
| ฐานข้อมูล | SQLite | แบบฝังตัว ไม่ต้องดูแลรักษา เหมาะกับสถานการณ์เครื่องเดียว |
| ไดรเวอร์ SQLite | glebarez/sqlite (Go ล้วน) |
ไม่มี CGO cross-compile สะดวก |
| ORM | GORM | ประสิทธิภาพการพัฒนาสูง คิวรีซับซ้อน fallback ไปใช้ SQL ดิบได้ |
| การสื่อสารเรียลไทม์ | gorilla/websocket | เทอร์มินัล, log tail, การส่งเมตริก |
| การจัดตารางงาน | robfig/cron | งานตามกำหนดเวลาของพาเนล |
| การมอนิเตอร์ระบบ | gopsutil | CPU / หน่วยความจำ / ดิสก์ / โปรเซส ข้ามแพลตฟอร์ม |
| Docker | SDK ทางการ | คอนเทนเนอร์ / อิมเมจ / วอลุ่ม / เน็ตเวิร์ก |
| การยืนยันตัวตน | JWT + refresh | API แบบ stateless + เซสชันทางเลือก |
| 2FA | TOTP (RFC 6238) | การยืนยันตัวตนครั้งที่สองตอนล็อกอิน |
| AI | อินเทอร์เฟซ LLM แบบ abstraction | ปรับใช้ OpenAI / DeepSeek / Qwen / Ollama อย่างเป็นเอกภาพ |
| Frontend | Vue 3 + ECharts | SPA สมัยใหม่ + แผนภูมิ |
สถาปัตยกรรมโดยรวม¶
┌──────────────────────────────────────────────────────────┐
│ OpsMini (พาเนลเครื่องเดียว ไบนารีเดียว) │
│ │
│ Vue3 SPA (build artifact ฝังเข้าไบนารี) │
│ │ HTTP / WebSocket │
│ ┌────▼───────────────────────────────────────────────┐ │
│ │ Gin Router → มิดเดิลแวร์ (ยืนยันตัวตน/สิทธิ์/ตรวจสอบ/จำกัดอัตรา/จุดเข้าความปลอดภัย) │ │
│ │ Controller → Service → Repository │ │
│ └────┬──────────────────────────────────────────────┘ │
│ │ │
│ ┌────▼───────────────────────────────────────────────┐ │
│ │ SQLite (ข้อมูลธุรกิจ) │ เลเยอร์ปรับใช้ทรัพยากรระบบ │ │
│ │ users/cron/... │ Docker SDK / crontab / │ │
│ │ │ gopsutil / ระบบไฟล์ / SSH │ │
│ └─────────────────────┴──────────────────────────────┘ │
│ │
│ REST API ภายนอกสองชุด: │
│ · /api/v1 Panel API (JWT + RBAC) │
│ · /agent/v1 Agent API (Token + ไวท์ลิสต์คำสั่ง) │
└──────────────────────────────────────────────────────────┘