สถาปัตยกรรมและโมเดลความปลอดภัย
ส่วนประกอบที่ทำให้ deployment เป็นงานควบคุม ไม่ใช่ remote shell
ขอบเขตสิทธิ์
dashboard ไม่ได้รันเป็น root มันเรียก root-owned helper ผ่าน Unix socket ในเครื่องสำหรับงานที่กำหนดตายตัวเท่านั้น: ติดตั้ง tool ที่อนุญาต, activate/ลบ project domain, ลบ project, เปลี่ยนรหัส owner และอ่าน runtime log ของ project เดียว ข้อมูลจาก browser จะไม่กลายเป็น shell command อิสระ
ลำดับ deployment
- Portal ตรวจ configuration และ source repository
- สร้าง candidate release แยกและติดตั้ง dependency ที่นั่น
- Native project รัน build script ที่ตั้งชื่อไว้, start candidate ชั่วคราว และตรวจ HTTP health ตามที่เลือก
- helper activate candidate, ตรวจสุขภาพบน host แล้วตรวจ Nginx, ออก/อัปเดต TLS และ reload Nginx
- ถ้าขั้นตอนจำเป็นล้มเหลว active release และ Nginx state เดิมจะถูกกู้คืน release event จะเก็บรายละเอียดระดับ phase ที่ปลอดภัย
ที่เก็บข้อมูลและเจ้าของไฟล์
- Portal state และ source workspace:
/var/lib/dashboard-portal - configuration และ encryption key:
/etc/dashboard-portal/dashboard-portal.env - Native runtime:
/srv/hostmgr/projects/<slug> - environment file:
/etc/hostmgr/projects/<slug>.env - Nginx ที่ Portal เป็นเจ้าของ:
/etc/nginx/sites-available/hostmgr-<slug>.conf
เมื่อ deploy ไม่สำเร็จ
active release จะไม่เปลี่ยนจน activation สำเร็จ สำหรับ Native project ระบบเก็บ dependency tree ของ active และ release ก่อนหน้าทันทีไว้ แล้วล้างของ release เก่ากว่าเมื่อ activate สำเร็จ ข้อมูลถาวรของแอปต้องอยู่นอก release และไม่ใช่กลไก rollback
ตรวจทานล่าสุด: 2026-08-25
ดู source ของ Portal