Từ VPS Sang Cloudflare: Hành Trình Tối Ưu Hosting Cho Blog
Cách mình migrate từ VPS truyền thống sang Cloudflare Pages — nhanh hơn, rẻ hơn, và không còn phải lo server lúc 2 giờ sáng.
Mục lục
Khi VPS Không Còn Là Lựa Chọn Hợp Lý
Mình từng chạy blog này trên một VPS.
Setup khá cơ bản:
- Một con VPS nhỏ
- Nginx làm reverse proxy
- SSL từ Let’s Encrypt
- Deploy bằng SSH + script tự viết
Chạy ổn. Không có gì sai.
Nhưng dần dần, mình nhận ra mình đang dành quá nhiều thời gian cho những thứ không liên quan đến nội dung.
Những Vấn Đề Thực Tế Với VPS
1. Bạn là sysadmin bất đắc dĩ
VPS nghĩa là bạn chịu trách nhiệm mọi thứ:
- Update OS, patch security
- Monitor uptime
- Xử lý disk full, memory leak
- Renew SSL certificate
Một blog cá nhân mà phải lo như vận hành production server.
2. Performance bị giới hạn bởi geography
VPS nằm ở một region duy nhất.
Nếu server ở Singapore, người đọc từ châu Âu sẽ chịu latency cao. Nếu server ở US, người đọc Việt Nam sẽ load chậm.
Bạn có thể thêm CDN phía trước. Nhưng đó là thêm một layer phải quản lý.
3. Chi phí không scale theo giá trị
Một con VPS nhỏ nhất cũng tốn $5–$10/tháng.
Nghe ít. Nhưng cho một static site? Đó là tiền bạn trả để chạy Nginx serve file HTML.
Không có lý do gì để trả $60–$120/năm cho việc đó.
4. Deploy pipeline tự chế
Mỗi lần publish bài mới:
npm run build
scp -r dist/* user@server:/var/www/blog/
ssh user@server "sudo systemctl reload nginx"
Nó hoạt động. Nhưng không có rollback. Không có preview. Không có CI/CD tự động.
Mỗi lần deploy là một lần cầu nguyện.
Tại Sao Chọn Cloudflare Pages?
Mình đánh giá nhiều lựa chọn: Vercel, Netlify, GitHub Pages, Cloudflare Pages.
Cloudflare Pages thắng vì:
- Free tier cực kỳ rộng rãi — unlimited bandwidth, 500 builds/tháng
- Edge network toàn cầu — hơn 300 PoP, nội dung được serve từ node gần người đọc nhất
- Tích hợp sâu với Cloudflare ecosystem — DNS, WAF, Analytics, Workers
- Deploy từ Git — push lên GitHub, Cloudflare tự build và deploy
- Preview deployments — mỗi branch có URL riêng để review
Và quan trọng nhất: Mình không phải quản lý server nữa.
Quá Trình Migration
Bước 1: Đảm bảo site build được ở mọi nơi
Trước khi migrate, mình cần chắc chắn rằng npm run build chạy thành công bất kể môi trường.
Kiểm tra:
- Không có hardcoded path
- Không phụ thuộc vào biến môi trường chỉ có trên VPS
- Tất cả asset được reference đúng
Astro build ra static HTML rất sạch, nên bước này khá nhanh.
Bước 2: Kết nối Cloudflare Pages với GitHub
Trên Cloudflare Dashboard:
- Tạo project mới trong Pages
- Kết nối repository GitHub
- Chọn framework preset: Astro
- Build command:
npm run build - Output directory:
dist
Cloudflare tự detect Astro và cấu hình hầu hết mọi thứ.
Từ giờ, mỗi lần push code lên main, Cloudflare sẽ:
- Pull source code
- Chạy build
- Deploy lên edge network toàn cầu
Toàn bộ mất khoảng 30–45 giây.
Bước 3: Chuyển DNS
Domain đã nằm trên Cloudflare DNS sẵn, nên bước này đơn giản:
- Xoá A record trỏ về IP của VPS
- Cloudflare Pages tự tạo CNAME record
- SSL được cấp tự động, không cần Let’s Encrypt
Downtime: 0 giây. Vì DNS đã proxy qua Cloudflare từ trước.
Bước 4: Tắt VPS
Sau khi xác nhận mọi thứ chạy ổn trên Cloudflare Pages:
- Backup dữ liệu VPS về local
- Snapshot server (phòng trường hợp cần rollback)
- Shutdown VPS
- Sau 1 tuần không vấn đề → xoá hoàn toàn
Cảm giác tắt server giống như bỏ đi một gánh nặng.
Kết Quả Sau Migration
Performance
Trước (VPS ở Singapore):
- TTFB từ Việt Nam: ~80ms
- TTFB từ US: ~350ms
- TTFB từ châu Âu: ~400ms
Sau (Cloudflare Pages):
- TTFB từ Việt Nam: ~15ms
- TTFB từ US: ~20ms
- TTFB từ châu Âu: ~18ms
TTFB giảm trung bình 85–95%.
Lighthouse score: 100/100 Performance trên cả mobile và desktop.
Chi phí
Trước: ~$7/tháng cho VPS Sau: $0/tháng
Free tier của Cloudflare Pages dư sức cho một blog kỹ thuật.
Developer Experience
Trước: SSH, scp, script tự viết, không preview Sau: Git push → auto deploy → preview URL cho mỗi PR
Mỗi pull request có một URL riêng để review trước khi merge. Rollback chỉ cần revert commit.
Những Điều Mình Học Được
Static site không cần server
Nghe hiển nhiên, nhưng rất nhiều người vẫn chạy static site trên VPS.
Nếu output cuối cùng là HTML, CSS, JS — bạn không cần server. Bạn cần CDN.
Edge > Origin
Một server ở Singapore không bao giờ nhanh bằng 300 server trải khắp thế giới.
Edge computing không chỉ là trend. Nó là kiến trúc hợp lý cho content delivery.
Ít quản lý = nhiều thời gian viết
Kể từ khi chuyển sang Cloudflare Pages, mình dành 100% thời gian cho nội dung.
Không còn SSH vào server lúc 2 giờ sáng vì Nginx crash. Không còn lo SSL hết hạn. Không còn kiểm tra disk space.
Thời gian là tài nguyên quý nhất. Và hosting không nên tiêu tốn nó.
Khi Nào Bạn Nên Giữ VPS?
Cloudflare Pages không phải giải pháp cho mọi trường hợp.
Bạn vẫn cần VPS nếu:
- Chạy backend API, database
- Cần server-side processing phức tạp
- Chạy cron job, background worker
- Cần persistent storage
Nhưng nếu bạn đang chạy một static site, blog, hay documentation trên VPS — hãy xem xét lại.
Bạn có thể đang trả tiền và thời gian cho thứ không cần thiết.
Kết Luận
Chuyển từ VPS sang Cloudflare Pages là một trong những quyết định infrastructure tốt nhất mình từng làm.
Không phải vì công nghệ mới hay trend. Mà vì nó giải quyết đúng vấn đề: serve static content nhanh nhất, rẻ nhất, ít vận hành nhất.
Nếu bạn đang tự hỏi có nên chuyển không — câu trả lời gần như luôn là có.
Build site. Push code. Để Cloudflare lo phần còn lại.