🛠️ MỤC TIÊU BÀI NÀY:
- Host website Ghost lên VPS riêng (DigitalOcean / Linode / Hetzner / Oracle Cloud v.v.)
- Tạo MySQL DB
- Cài Ghost bằng CLI
- Trỏ domain, cấu hình SSL
- Kết nối Cloudflare proxy chống DDoS, tăng tốc, bắn tỉa crawler xấu xa
☁️ BƯỚC 1: MUA VPS (VÌ MIỄN PHÍ KHÔNG BAO GIỜ LÂU BỀN)
Bạn chọn 1 trong các nhà cung cấp sau:
| Nhà cung cấp | Giá rẻ | Free Credit |
|---|---|---|
| DigitalOcean | ✔ | 200$ / 60 ngày |
| Linode | ✔ | 100$ / 60 ngày |
| Hetzner | ✔✔ | Không |
| Oracle Cloud | MIỄN PHÍ | Nhưng... đau đầu |
Khuyến nghị: xài DigitalOcean cho nhẹ đầu, xong rồi "đào tẩu" về nơi rẻ hơn sau.
📦 BƯỚC 2: SSH VÀO VPS & CÀI GHOST
🧯 SSH vào server:
ssh root@your.server.ip
🚀 Cài Node + NGINX + Ghost CLI
# Update & install packages
apt update && apt upgrade -y
apt install nginx mysql-server nodejs npm unzip curl -y
# Cài Ghost CLI
npm install -g ghost-cli
Ghost yêu cầu Node.js 18 → nếu đang 20 thì dùngnhoặcnvmđể về đúng version.
🔧 BƯỚC 3: TẠO THƯ MỤC & CÀI ĐẶT GHOST
mkdir -p /var/www/ghost && cd /var/www/ghost
chown -R $USER:$USER /var/www/ghost
ghost install
CLI sẽ hỏi các thứ:
| Prompt | Câu trả lời |
|---|---|
| Blog URL | Ví dụ: https://gagamer.dev |
| MySQL user/pass | Mặc định là root, nhập pass bạn đặt |
| Setup NGINX | Yes |
| Setup SSL (Let's Encrypt) | Yes |
| Systemd setup | Yes |
Boom 💣 sau vài phút, web của bạn lên như lúa mùa mưa 🌾
🧠 BƯỚC 4: TẠO DATABASE TỰ CHỦ (OPTIONAL)
Nếu không dùng mặc định root của MySQL, bạn có thể tạo DB riêng:
mysql -u root -p
CREATE DATABASE ghost_prod;
CREATE USER 'ghost_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON ghost_prod.* TO 'ghost_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Sau đó sửa file cấu hình .ghost/config.production.json để trỏ DB custom của bạn.🌐 BƯỚC 5: MUA DOMAIN NHƯ MUA GHỆ CHÍNH THỨC
Bạn có thể mua domain ở:
- Namecheap
- Google Domains (đã đóng, nhưng có thể chuyển qua Squarespace)
- Cloudflare Registrar (siêu rẻ, không lãi)
Ví dụ domain bạn là: gagamer.dev
🌍 BƯỚC 6: TRỎ DOMAIN → SERVER
Tạo A record:
| Type | Name | Value |
|---|---|---|
| A | @ |
your.server.ip |
| A | www |
your.server.ip |
💡 Vào trang quản lý DNS của domain (Namecheap, Cloudflare...), tạo bản ghi như trên.
🔒 BƯỚC 7: BẬT CLOUDFLARE CHO NGẦU
Cloudflare = proxy trung gian giúp:
- Ẩn IP server thật
- Tăng tốc, cache asset
- Chống DDoS nhẹ nhẹ
- Tùy chỉnh header & firewall
Các bước:
- Đăng ký Cloudflare → Add site → Nhập domain
gagamer.dev - Chọn plan Free (là đủ xài)
- Cloudflare sẽ cho bạn 2 bản ghi DNS (vd:
abby.ns.cloudflare.com,tony.ns.cloudflare.com) - Vào chỗ mua domain → đổi name server thành 2 cái trên
📛 BƯỚC 8: SETUP CLOUDFLARE CHUẨN CHỈ
Proxy ON:
| Record | Proxy? |
|---|---|
@ |
✅ |
www |
✅ |
SSL/TLS:
- Full (Strict) → nếu bạn có SSL từ Let’s Encrypt (cái Ghost setup rồi)
Speed:
- Bật Rocket Loader (JS boost)
- Bật Brotli, Auto Minify
Page Rules (bonus):
URL: *gagamer.dev/*
Setting: Cache Level → Cache Everything
💻 BƯỚC 9: KIỂM TRA WEBSITE CHẠY OK CHƯA?
curl -I https://gagamer.dev
Check:
HTTP/2 200server: cloudflarecf-cache-status: HIT/BYPASS
Nếu không thấy cloudflare → bạn chưa bật proxy hoặc sai DNS.
🧙 BONUS: TRỎ SUBDOMAIN → APP KHÁC
Ví dụ:
blog.gagamer.dev→ Ghostapp.gagamer.dev→ 1 app React khác
→ Tạo thêm bản ghi A hoặc CNAME trong Cloudflare, sau đó dùng NGINX để reverse proxy hoặc cài Ghost vào folder khác /var/www/blog.
🚨 LƯU Ý XINH ĐẸP
- Ghost auto restart bằng systemd – không cần
pm2 ghost restartđể reload nếu sửa theme/dbghost updateđể lên version mới- Đừng cài Ghost vào
/root– dễ lỗi permission
ĐIỂM DANH KẾT QUẢ SAU BÀI NÀY:
- [x] Website Ghost chạy trên VPS
- [x] Domain riêng
gagamer.devkết nối OK - [x] Có SSL full HTTPS
- [x] Đã dùng Cloudflare làm proxy chống gió
- [x] Bạn trông như dân DevOps dù chỉ mới biết
cd ..