สถาปัตยกรรมและโมเดลความปลอดภัย

ส่วนประกอบที่ทำให้ deployment เป็นงานควบคุม ไม่ใช่ remote shell

ขอบเขตสิทธิ์

dashboard ไม่ได้รันเป็น root มันเรียก root-owned helper ผ่าน Unix socket ในเครื่องสำหรับงานที่กำหนดตายตัวเท่านั้น: ติดตั้ง tool ที่อนุญาต, activate/ลบ project domain, ลบ project, เปลี่ยนรหัส owner และอ่าน runtime log ของ project เดียว ข้อมูลจาก browser จะไม่กลายเป็น shell command อิสระ

ลำดับ deployment

  1. Portal ตรวจ configuration และ source repository
  2. สร้าง candidate release แยกและติดตั้ง dependency ที่นั่น
  3. Native project รัน build script ที่ตั้งชื่อไว้, start candidate ชั่วคราว และตรวจ HTTP health ตามที่เลือก
  4. helper activate candidate, ตรวจสุขภาพบน host แล้วตรวจ Nginx, ออก/อัปเดต TLS และ reload Nginx
  5. ถ้าขั้นตอนจำเป็นล้มเหลว 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