ข้ามไปที่เนื้อหา

เทคโนโลยีที่ใช้ (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 + ไวท์ลิสต์คำสั่ง)          │
└──────────────────────────────────────────────────────────┘