การ Deploy › เลือกที่ deploy
เอกสาร/การ Deploy/เลือกที่ deploy

เลือกที่ deploy

หน้านี้สอนอะไร

โฮสต์แบบไหนเหมาะกับเว็บของคุณ ทุกโฮสต์ต้องการอะไรจากคุณ และ checklist ก่อนเปิดใช้งานจริง

ควรอ่านก่อน: Migration และการ deploy

Easy CMS รันได้ทุกที่ที่รัน server ด้วย Node.js 22.12 ขึ้นไปได้ สิ่งที่ต้องมีคือที่เก็บ ฐานข้อมูล และที่เก็บ ไฟล์อัปโหลด ซึ่งแต่ละโฮสต์อาจมีให้หรือไม่มีก็ได้ ไม่รองรับ edge runtime (Cloudflare Workers, Vercel Edge Functions)

เลือกโฮสต์

ฐานข้อมูลไฟล์อัปโหลดงานตามเวลาเหมาะกับ
VercelPostgres แบบ hosted (Neon) หรือ TursoVercel Blob หรือ S3cron เรียก jobs/runเว็บ Next.js, preview deployment
NetlifyNetlify Database หรือ Postgres แบบ hostedNetlify Blobs หรือ S3scheduled function เรียก jobs/runเว็บ Next.js บน Netlify
DockerPostgres ใน container หรือ SQLite บน volumevolume หรือ S3server รันเองทุกนาทีserver หรือแพลตฟอร์มใดก็ได้ที่รัน container
VPSSQLite บน disk หรือ Postgresdiskserver รันเองทุกนาทีserver เครื่องเดียวที่คุณดูแลเอง ค่าใช้จ่ายต่ำสุด
โฮสต์อื่นๆขึ้นกับโฮสต์ขึ้นกับโฮสต์ขึ้นกับโฮสต์Railway, Render, Fly.io, Coolify…

โฮสต์สองแบบทำงานต่างกัน:

  • Serverless (Vercel, Netlify): ไม่มี disk ที่เก็บไฟล์ได้ถาวร และไม่มี process ที่รันค้างไว้ ต้องใช้ฐานข้อมูลและที่เก็บไฟล์แบบ hosted และเรียก endpoint ของงานตามเวลาจาก cron
  • รันต่อเนื่อง (Docker, VPS, แพลตฟอร์มส่วนใหญ่): server ตัวเดียวที่รันอยู่ตลอด เก็บ SQLite และไฟล์อัปโหลดไว้บน disk ถาวรได้ และ server รันงานตามเวลาเองทุกนาที

ทุกโฮสต์ต้องมี

EASY_CMS_SECRETตัวอักษรสุ่มอย่างน้อย 32 ตัว (openssl rand -hex 32) ถ้าไม่มี API จะตอบ 500
NODE_ENV=productionโหมด production ไม่ยอม start ถ้ายังมี migration ค้าง และไม่เปลี่ยน schema เอง
Migrationสร้างด้วย easy-cms migrate:create แล้ว commit และรัน easy-cms migrate ก่อนเวอร์ชันใหม่จะ start ดู Migration และการ deploy
EASY_CMS_SETUP_CODEตั้งไว้จนกว่าจะมี admin คนแรก เพื่อไม่ให้คนอื่นยึดเว็บที่เพิ่ง deploy
serverURLที่อยู่สาธารณะของเว็บ ใช้สร้าง URL ของไฟล์และลิงก์ในอีเมล ดู Health checks
เชื่อ proxyถ้าอยู่หลัง proxy หรือแพลตฟอร์มที่เชื่อถือได้ ให้เปิด trustProxy (Next.js, Nuxt) หรือ --trust-proxy (standalone) เพื่อให้การจำกัดการ login เห็น IP ของผู้เข้าชมแต่ละคน และการตรวจ origin ของ CSRF รับ X-Forwarded-Host ส่วน Vercel และ Netlify ระบบรู้จักเอง
งานตามเวลาบน serverless ให้ cron เรียก <api>/jobs/run พร้อม CRON_SECRET งานเหล่านี้คือเผยแพร่บทความที่ตั้งเวลาไว้ ส่ง webhook ซ้ำ ส่งอีเมลที่รอคิว และสำรองข้อมูล

ก่อนเปิดใช้งานจริง

  • secret, รหัส setup และ URL ฐานข้อมูลตั้งไว้ใน environment ของโฮสต์ ไม่ได้ commit เข้า git
  • easy-cms migrate รันก่อนเวอร์ชันใหม่จะ start ทุกครั้ง
  • ไฟล์อัปโหลดไปอยู่บน disk ถาวรหรือที่เก็บไฟล์ภายนอก (อัปโหลดและ media)
  • งานตามเวลาทำงาน: server รันเองทุกนาที หรือเรียกจาก cron
  • ตั้งค่า email แล้ว เพื่อให้รีเซ็ตรหัสผ่านและคำเชิญใช้ได้ (อีเมล)
  • เว็บเป็น HTTPS และตั้ง serverURL เป็นที่อยู่ของเว็บ
  • สำรองข้อมูลทำงาน และเคยลองกู้คืนแล้ว
  • ทำ checklist ความปลอดภัย ครบ

ขั้นต่อไป