เลือกที่ deploy
หน้านี้สอนอะไร
โฮสต์แบบไหนเหมาะกับเว็บของคุณ ทุกโฮสต์ต้องการอะไรจากคุณ และ checklist ก่อนเปิดใช้งานจริง
ควรอ่านก่อน: Migration และการ deploy
Easy CMS รันได้ทุกที่ที่รัน server ด้วย Node.js 22.12 ขึ้นไปได้ สิ่งที่ต้องมีคือที่เก็บ ฐานข้อมูล และที่เก็บ ไฟล์อัปโหลด ซึ่งแต่ละโฮสต์อาจมีให้หรือไม่มีก็ได้ ไม่รองรับ edge runtime (Cloudflare Workers, Vercel Edge Functions)
เลือกโฮสต์
| ฐานข้อมูล | ไฟล์อัปโหลด | งานตามเวลา | เหมาะกับ | |
|---|---|---|---|---|
| Vercel | Postgres แบบ hosted (Neon) หรือ Turso | Vercel Blob หรือ S3 | cron เรียก jobs/run | เว็บ Next.js, preview deployment |
| Netlify | Netlify Database หรือ Postgres แบบ hosted | Netlify Blobs หรือ S3 | scheduled function เรียก jobs/run | เว็บ Next.js บน Netlify |
| Docker | Postgres ใน container หรือ SQLite บน volume | volume หรือ S3 | server รันเองทุกนาที | server หรือแพลตฟอร์มใดก็ได้ที่รัน container |
| VPS | SQLite บน disk หรือ Postgres | disk | server รันเองทุกนาที | 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 ความปลอดภัย ครบ
ขั้นต่อไป
- Deploy ด้วยคลิกเดียว: เว็บ starter บน Vercel หรือ Netlify ในไม่กี่คลิก
- Vercel, Netlify, Docker หรือ VPS: ทีละขั้นตอน