รัน Node.js บน Shared Hosting ได้จริงไหม

ความจริงที่ Developer ควรรู้ก่อนเลือก Hosting สำหรับ Node.js App พร้อมวิธีตั้งค่าและทางเลือกที่ดีกว่า

Node.js บน Shared Hosting cPanel Setup Node.js App

ความเป็นจริงของ Node.js บน Shared Hosting

คำถามยอดนิยมที่ Developer มักถามคือ "รัน Node.js บน Shared Hosting ได้ไหม?" คำตอบคือ ได้บางส่วน แต่มีข้อจำกัดมาก

Shared Hosting ที่ใช้ cPanel เวอร์ชันใหม่ (cPanel 82+) บางเจ้ารองรับ Node.js ผ่านฟีเจอร์ "Setup Node.js App" แต่การทำงานแตกต่างจาก VPS มาก เพราะ Node.js App จะรันผ่าน Phusion Passenger แทนที่จะรันเป็น Process อิสระ

Hosting เจ้าไหนที่มักรองรับ Node.js:

Hosting ที่ไม่รองรับ Node.js:

ตรวจสอบว่า Hosting รองรับ Node.js

วิธีที่ง่ายที่สุดคือ Login cPanel แล้วหาหัวข้อ "Software" หรือ "Setup Node.js App" ถ้าไม่เห็นตัวเลือกนี้ แสดงว่า Hosting ของคุณยังไม่รองรับ

หรือลองผ่าน SSH (ถ้ามี Access):

# ตรวจสอบว่ามี Node.js ติดตั้งอยู่หรือไม่
node --version
npm --version

# ดู Node.js Version ที่ใช้ได้
ls /opt/alt/node*/bin/node 2>/dev/null

สร้าง Node.js App ใน cPanel

ถ้า Hosting รองรับ ทำตามขั้นตอนนี้:

ขั้นที่ 1: เข้า Setup Node.js App

  1. Login cPanel → Software → Setup Node.js App
  2. กด Create Application

ขั้นที่ 2: ตั้งค่า Application

ขั้นที่ 3: สร้าง server.js และ package.json

// server.js - ตัวอย่าง Express App พื้นฐาน
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.send('Hello from Node.js on cPanel!');
});

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});
// package.json
{
  "name": "myapp",
  "version": "1.0.0",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.18.0"
  }
}

ขั้นที่ 4: Install Dependencies

ใน cPanel → Setup Node.js App → กด Run NPM Install เพื่อติดตั้ง Package จาก package.json หรือใช้ SSH:

cd ~/myapp
npm install

ข้อจำกัดของ Node.js บน Shared Hosting

สิ่งที่คุณทำ ไม่ได้ บน Shared Hosting:

ตรวจสอบ Node.js App ทำงานถูกต้อง

# ทดสอบ Endpoint ที่ตั้งค่าไว้
curl -I https://yourdomain.com/yourapp/

# ดู App Status ใน cPanel (ผ่าน SSH)
passenger-status

# ตรวจสอบ Log ของ App
tail -f ~/logs/passenger.yourapp.log

# ทดสอบ API Response
curl https://yourdomain.com/api/test
Tip: ถ้า App เริ่มต้นจาก Error 503 ให้ตรวจสอบ Log ใน cPanel → Errors หรือ ~/logs/ ก่อน ปัญหาที่พบบ่อยคือ Package ที่ขาดหายหรือ Syntax Error ใน startup file

แก้ปัญหาที่พบบ่อย

Error: "Application startup failed" หลัง Deploy

ตรวจสอบ Log ที่ ~/logs/passenger.app.log ปัญหาส่วนใหญ่คือ Missing Module (ลืมรัน npm install), Syntax Error ในไฟล์ หรือ Environment Variable ที่ขาดหาย

Error: 503 Service Unavailable หลัง Restart App

Phusion Passenger ต้องใช้เวลา Warm Up หลัง Restart ลองรอ 30 วินาทีแล้วโหลดใหม่ ถ้ายังไม่ได้ ให้ดู Error Log และ Restart Application อีกครั้งจาก cPanel

App ทำงานได้แต่ช้ามากหรือ Response Time สูง

เกิดจาก Resource Limit ของ Shared Hosting เมื่อมี Traffic เข้ามามาก App อาจรอ CPU/RAM ที่แย่งกับ User อื่น นี่คือสัญญาณว่าถึงเวลาย้ายไป VPS แล้ว

เมื่อไหร่ควรใช้ VPS แทน

ควรพิจารณา VPS เมื่อ:

คำถามที่พบบ่อย

Q: Next.js หรือ Nuxt.js รันบน Shared Hosting ได้ไหม?

A: Mode ที่ทำได้คือ Static Export (next export / nuxt generate) ซึ่งสร้าง Static Files แล้วนำไป Host เหมือน Static Website ทั่วไป แต่ SSR (Server-Side Rendering) แบบ Full จะมีข้อจำกัดมากเหมือน Node.js ทั่วไป

Q: Docker บน Shared Hosting ได้ไหม?

A: ไม่ได้ Docker ต้องการ Root Access และ Kernel Feature ที่ Shared Hosting ไม่อนุญาต ต้องใช้ VPS หรือ Cloud Server เท่านั้น

Q: Node.js กับ PHP ใช้ร่วมกันบน Hosting เดียวได้ไหม?

A: ได้ cPanel รองรับทั้งสองบน Hosting เดียวกัน คุณสามารถมีทั้ง WordPress (PHP) และ Node.js App บน Subdomain เดียวกันได้ เพียงตั้งค่า Node.js App บน Subdomain แยก