โลโก้ Strapi
อันดับ 70 ใน Top 100 CMS และเว็บไซต์MIT (โอเพนซอร์ส)

Strapi คืออะไร และวิธีติดตั้งบน Cloud Server

Strapi คือ Headless CMS โอเพนซอร์สบน Node.js ที่ให้คุณออกแบบโครงสร้างเนื้อหาเองแล้วเปิดเป็น REST หรือ GraphQL API ให้เว็บและแอปดึงไปแสดงผล เหมาะกับทีมที่แยกงานหลังบ้านกับหน้าบ้านออกจากกัน

ติดตั้งบนเซิร์ฟเวอร์เองได้
ได้
สเปกเริ่มต้นที่แนะนำ
2 vCPU · RAM 4 GB
ไลเซนส์
MIT (โอเพนซอร์ส)
เว็บทางการ
เปิดเว็บไซต์
สร้าง Cloud Server เดี๋ยวนี้
  • ISO/IEC 27001
  • ISO 22301
  • ISO 20000-1
  • CSA-STAR

Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย

Strapi คืออะไร

Headless CMS ต่างจาก CMS ทั่วไปตรงที่ไม่ยุ่งกับการแสดงผล หน้าที่ของมันคือเก็บเนื้อหาและเปิด API ให้ระบบอื่นดึงไปใช้ ทีมหน้าบ้านจึงเลือกเทคโนโลยีได้อิสระ ไม่ว่าจะเป็น Next.js, Nuxt หรือแอปมือถือ

Strapi ให้คุณสร้าง Content Type และฟิลด์ผ่านหน้าเว็บ แล้วสร้าง API ให้อัตโนมัติ พร้อมระบบสิทธิ์ว่า API ไหนเปิดสาธารณะและอันไหนต้องใช้โทเคน จุดนี้ทำให้เริ่มโครงการได้เร็วกว่าการเขียน Backend เองตั้งแต่ต้น

สิ่งที่ต้องวางแผนคือ Strapi เป็นแอป Node.js ที่ต้องรันเป็นบริการตลอดเวลา ไม่ใช่ไฟล์ PHP ที่เว็บเซิร์ฟเวอร์เรียกเป็นครั้ง ๆ การ Deploy จริงจึงต้องมี Process Manager, ฐานข้อมูลแยก และ Reverse Proxy ที่ตั้งค่าถูกต้อง

แผนผังการวางระบบ Strapi บน Cloud Server หนึ่งเครื่องที่ Data Center ในประเทศไทย ผู้ใช้เข้าถึงผ่านไฟร์วอลล์ที่เปิดเฉพาะพอร์ต 443, 1337, 5432 ตัว Strapi และข้อมูลอยู่บนเครื่องเดียวกัน เริ่มต้นที่ 2 vCPU แรม 4 GB และมีสำเนาสำรองเขียนออกไปเก็บอีกไซต์หนึ่ง
Strapi ทำงานบน Cloud Server เครื่องเดียวได้ครบ เปิดเฉพาะพอร์ตที่จำเป็น ข้อมูลและสำเนาสำรองอยู่ใน Data Center ในประเทศไทย

ความสามารถเด่นของ Strapi

สร้าง API อัตโนมัติ

ออกแบบ Content Type จากหน้าเว็บแล้วได้ REST และ GraphQL API ทันที

ระบบสิทธิ์และ Role

กำหนดได้ว่า API ใดเปิดสาธารณะ อันใดต้องใช้โทเคน และผู้ใช้แต่ละกลุ่มแก้อะไรได้บ้าง

ปรับแต่งด้วยโค้ดได้เต็มที่

เขียน Controller, Service และ Middleware ของตัวเองได้ เพราะโครงสร้างเป็นโปรเจกต์ Node.js ปกติ

รองรับหลายฐานข้อมูล

ใช้ PostgreSQL, MySQL หรือ MariaDB ได้ตามมาตรฐานที่องค์กรใช้อยู่

Media Library

อัปโหลดและจัดการไฟล์สื่อ พร้อมต่อกับ Object Storage เมื่อไฟล์เยอะขึ้น

ใช้ Strapi ทำอะไรได้บ้าง

  • เว็บองค์กรที่หน้าบ้านทำด้วย Next.js หรือ Nuxt แต่ต้องการหลังบ้านให้ทีมคอนเทนต์ใช้
  • แอปมือถือที่ต้องการแหล่งเนื้อหากลางเดียวกับเว็บ
  • ระบบแคตตาล็อกสินค้าหรือฐานข้อมูลบทความที่ต้องเปิด API ให้หลายระบบใช้
  • โครงการที่ต้องขึ้น MVP เร็วโดยไม่เขียน Backend เองทั้งหมด

สเปก Cloud Server ที่แนะนำ

แผนภาพเทียบสเปก Cloud Server สำหรับ Strapi 3 ระดับ เริ่มจาก 2 vCPU แรม 4 GB ดิสก์ NVMe 40 GB ไปจนถึง 8 vCPU แรม 16 GB ดิสก์ NVMe 160 GB โดยเทียบขนาดแยกตามแต่ละคอลัมน์
เริ่มจากระดับที่ตรงกับการใช้งานตอนนี้ แล้วเพิ่ม CPU และ RAM ทีหลังได้บนเครื่องเดิม
ระดับการใช้งานvCPURAMDisk
เริ่มต้นโครงการเดียว ทราฟฟิกไม่สูง2 vCPU4 GBNVMe 40 GB
แนะนำProduction ที่มีผู้ดูแลหลายคนและมีสื่อจำนวนมาก4 vCPU8 GBNVMe 80 GB
ระบบใหญ่แยกเซิร์ฟเวอร์ฐานข้อมูลและรันหลาย Instance หลัง Load Balancer8 vCPU16 GBNVMe 160 GB

ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ

วิธีติดตั้ง Strapi บน Cloud Server ของ THAI DATA CLOUD

ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server

สิ่งที่ต้องเตรียม

  • Node.js รุ่น LTS ที่ Strapi รองรับ
  • PostgreSQL 14 ขึ้นไป (แนะนำสำหรับ Production) หรือ MySQL 8
  • PM2 หรือ systemd สำหรับรันเป็นบริการ
  • Nginx สำหรับทำ Reverse Proxy และ SSL

ทดสอบบน Ubuntu Server 24.04 LTS

  1. 1

    ติดตั้ง Node.js และ PostgreSQL

    curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
    sudo apt -y install nodejs postgresql nginx
  2. 2

    สร้างฐานข้อมูลและผู้ใช้

    sudo -u postgres psql -c "CREATE DATABASE strapi;"
    sudo -u postgres psql -c "CREATE USER strapi WITH PASSWORD 'ChangeThisStrongPassword';"
    sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE strapi TO strapi;"
  3. 3

    สร้างโปรเจกต์ Strapi

    ตอบคำถามตัวช่วยสร้างโดยเลือกฐานข้อมูล PostgreSQL และกรอกข้อมูลที่สร้างไว้

    cd /var/www
    npx create-strapi-app@latest cms
  4. 4

    สร้างไฟล์บิลด์สำหรับ Production

    cd /var/www/cms
    NODE_ENV=production npm run build
  5. 5

    รันเป็นบริการด้วย PM2

    sudo npm install -g pm2
    cd /var/www/cms
    pm2 start npm --name strapi -- run start
    pm2 startup systemd
    pm2 save
  6. 6

    ตั้ง Nginx เป็น Reverse Proxy พร้อม SSL

    server {
      listen 80;
      server_name cms.example.com;
      location / {
        proxy_pass http://127.0.0.1:1337;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    }

อย่าลืมตั้งค่า APP_KEYS, API_TOKEN_SALT และ JWT_SECRET ในไฟล์ .env ของ Production ให้ต่างจากค่าที่ใช้ตอนพัฒนา

พอร์ตที่ต้องเปิดบน Firewall

พอร์ตโปรโตคอลใช้ทำอะไร
443TCPHTTPS ผ่าน Nginx
1337TCPพอร์ตภายในของ Strapi (ไม่ควรเปิดออกอินเทอร์เน็ต)
5432TCPPostgreSQL (เปิดเฉพาะภายในวง Private Network)

สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ

  • ให้ Strapi ฟังเฉพาะ 127.0.0.1 แล้วเปิดสู่ภายนอกผ่าน Nginx เท่านั้น
  • ปิดสิทธิ์ public ของ API ที่ไม่ควรเปิด และออก API Token แยกต่อระบบที่มาเรียกใช้
  • เก็บ Secret ทั้งหมดในไฟล์ .env ที่ไม่ถูกคอมมิตขึ้น Git
  • ย้ายไฟล์อัปโหลดไปเก็บที่ Object Storage เพื่อให้ขยายเครื่องได้โดยไม่ต้องย้ายไฟล์
  • ตั้ง Backup ฐานข้อมูล PostgreSQL อัตโนมัติทุกวัน

ทำไมควรรัน Strapi บน Cloud Server ของ THAI DATA CLOUD

Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง

แอป Node.js ต้องรันเป็นบริการตลอดเวลา จึงเหมาะกับ Cloud Server ที่มีทรัพยากรของตัวเองมากกว่าโฮสติ้งแบบแชร์ซึ่งรัน Node ไม่ได้

แยกเซิร์ฟเวอร์ Strapi กับ PostgreSQL ผ่าน Private Network ในไทย ได้ทั้งความเร็วและความปลอดภัย โดยไม่มีค่าทราฟฟิกภายใน

ขยายเครื่องได้ทันทีเมื่อจำนวนคำขอ API เพิ่มขึ้น พร้อมวาง Load Balancer หน้าหลาย Instance ได้

คำถามที่พบบ่อยเกี่ยวกับ Strapi

Strapi ใช้ SQLite บน Production ได้ไหม

ไม่แนะนำ SQLite เหมาะกับการพัฒนาบนเครื่องตัวเองเท่านั้น เพราะรองรับการเขียนพร้อมกันได้จำกัดและย้ายข้อมูลยาก บน Production ควรใช้ PostgreSQL หรือ MySQL

Strapi เหมาะกับเว็บแบบไหน

เหมาะกับงานที่แยกหน้าบ้านกับหลังบ้านออกจากกัน เช่น เว็บที่ทำด้วย Next.js หรือ Nuxt และแอปมือถือที่ใช้เนื้อหาชุดเดียวกัน ถ้าต้องการเว็บสำเร็จรูปที่มีธีมและปลั๊กอินพร้อมใช้ WordPress จะเร็วกว่า

ทำไม Strapi ที่ Deploy แล้วเข้าหน้า Admin ไม่ได้

สาเหตุที่พบบ่อยคือยังไม่ได้สั่ง build สำหรับ Production หรือ URL ที่ตั้งใน config ไม่ตรงกับโดเมนจริง ให้รัน NODE_ENV=production npm run build ใหม่ และตรวจค่า url ในไฟล์ config/server ให้ตรงกับโดเมนที่ใช้จริง

บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง

ให้เราติดตั้ง Strapi ให้ฟรี บน Cloud Server ในไทย

แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด