🛠️ 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ùngn
hoặ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 200
server: cloudflare
cf-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.dev
kế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 ..