ติดตั้ง Ghost Blog บน VPS Ubuntu

ติดตั้ง Ghost Blog บน VPS Ubuntu

มิถุนายน 2026 · อ่าน 8 นาที

Ghost คือ modern CMS เน้นการเขียนและ newsletter ที่เร็วกว่า WordPress อย่างเห็นได้ชัด built-in SEO, email newsletter, membership และ paywall ทุกอย่างในตัว ใช้ Node.js รัน server-side rendering ให้ page load เร็วมาก เหมาะสำหรับ bloggers นักข่าว และ creator ที่ต้องการ platform สะอาดไม่มี plugin ยุ่งเหยิง

เตรียม Server (Node.js + MySQL + Nginx)

sudo apt update
sudo apt install -y nginx mysql-server curl

# ติดตั้ง Node.js 20 LTS
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# ตรวจ
node --version  # ต้องเป็น 20.x
npm --version

ตั้ง MySQL สำหรับ Ghost

sudo mysql -u root

CREATE DATABASE ghost_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ghost'@'localhost' IDENTIFIED BY 'ghostDbPass123';
GRANT ALL PRIVILEGES ON ghost_blog.* TO 'ghost'@'localhost';
FLUSH PRIVILEGES;
EXIT;

ติดตั้ง Ghost CLI และ Ghost

# ติดตั้ง ghost-cli
sudo npm install ghost-cli@latest -g

# สร้าง user สำหรับ Ghost (ห้ามรันเป็น root)
sudo adduser --disabled-password --gecos "" ghost-user
sudo mkdir -p /var/www/ghost
sudo chown ghost-user:ghost-user /var/www/ghost
sudo chmod 775 /var/www/ghost

# ติดตั้ง Ghost
sudo -u ghost-user bash -c "cd /var/www/ghost && ghost install"
# ตอบคำถาม:
# Blog URL: https://blog.yourdomain.com
# MySQL hostname: localhost
# MySQL username: ghost
# MySQL password: ghostDbPass123
# Ghost database name: ghost_blog
# Set up Nginx? Yes
# Set up SSL? Yes (ต้องมี DNS ชี้ก่อน)
# Set up systemd? Yes

จัดการ Ghost ด้วย CLI

cd /var/www/ghost

# ดู status
ghost status

# Restart
ghost restart

# Stop/Start
ghost stop
ghost start

# Update Ghost
ghost update

# ดู logs
ghost log

ตั้ง Email (Newsletter)

ghost config set mail.transport SMTP
ghost config set mail.options.host smtp.yourdomain.com
ghost config set mail.options.port 587
ghost config set mail.options.auth.user [email protected]
ghost config set mail.options.auth.pass yoursmtppass
ghost restart
Tip: Ghost Admin panel อยู่ที่ https://blog.yourdomain.com/ghost ตั้ง Staff > Invite ให้ผู้เขียนคนอื่นได้ผ่าน email โดยกำหนด role เป็น Author หรือ Editor

สำรองข้อมูลและอัปเดต Ghost

Ghost เก็บเนื้อหาใน MySQL และไฟล์รูป/ธีมใน content/ ต้อง backup ทั้งสองส่วน และอัปเดตเวอร์ชันสม่ำเสมอเพื่อปิดช่องโหว่:

# สำรอง database + content
mysqldump -u ghost_user -p ghost_prod > ghost-db-$(date +%F).sql
tar czf ghost-content-$(date +%F).tar.gz /var/www/ghost/content/

# อัปเดต Ghost เป็นเวอร์ชันล่าสุด (รันใน dir ของ Ghost)
cd /var/www/ghost
ghost backup        # snapshot อัตโนมัติก่อนอัปเดต
ghost update
ghost update --rollback   # ย้อนกลับถ้ามีปัญหา
Tip: ตั้ง cron ให้ mysqldump + rsync content ไป VPS/Object Storage อีกที่ทุกคืน — เนื้อหาบล็อกคือทรัพย์สินที่กู้คืนยากที่สุดถ้าไม่มี backup นอกเครื่อง

ตรวจสอบว่า Ghost ทำงานถูกต้อง

# ดู status
cd /var/www/ghost && ghost status

# ตรวจ systemd service
sudo systemctl status ghost_blog.yourdomain.com

# ตรวจ port (Ghost รัน port 2368 โดย default)
ss -tlnp | grep 2368

# ทดสอบ
curl -I https://blog.yourdomain.com
Tip: Ghost มี built-in sitemap ที่ /sitemap.xml และ JSON Feed ที่ /feed/ ทำให้ SEO ทำงานอัตโนมัติโดยไม่ต้องติดตั้ง plugin เพิ่ม

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

Error: "Ghost is not running" หลัง install

ตรวจ logs หา error จริง มักเกิดจาก MySQL password ผิดหรือ port 2368 ถูก process อื่นใช้:

ghost log
ss -tlnp | grep 2368
ghost config get database.connection

SSL ไม่ตั้งอัตโนมัติระหว่าง install

DNS ต้องชี้มาที่ VPS ก่อน install ถ้าพลาดไปแล้ว ตั้ง SSL ทีหลัง:

cd /var/www/ghost
ghost setup ssl
# หรือ
sudo certbot --nginx -d blog.yourdomain.com

Ghost Update ล้มเหลว (version conflict)

Ghost version lock อยู่ ต้อง update ทีละ major version:

ghost update --v5  # update เป็น v5 ก่อน
ghost update       # แล้วค่อย update ปัจจุบัน

Image Upload ไม่ได้ (413 error)

Nginx มี client_max_body_size เพิ่มใน nginx config ของ Ghost:

sudo nano /etc/nginx/sites-available/blog.yourdomain.com
# เพิ่มใน server block:
client_max_body_size 100m;
sudo nginx -t && sudo systemctl reload nginx

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

Ghost กับ WordPress ต่างกันอย่างไร?

Ghost ออกแบบมาสำหรับ content publishing โดยเฉพาะ เร็วกว่า WordPress มาก built-in newsletter และ membership แต่ ecosystem plugin น้อยกว่า WordPress เหมาะถ้าต้องการ minimal, fast blog มากกว่า feature-heavy CMS

Ghost รองรับ membership/subscription ไหม?

ได้ Ghost มี Members feature ในตัว ตั้ง free/paid tier รับ payment ผ่าน Stripe ส่ง newsletter เฉพาะ paid members ได้ เป็น all-in-one สำหรับ creator economy

Backup Ghost ทำอย่างไร?

Export ผ่าน Ghost Admin > Labs > Export Content (JSON) และ backup รูปภาพจาก /var/www/ghost/content/images/ พร้อม MySQL dump: mysqldump ghost_blog > backup.sql