S
nguyenson.dev
← Bài viết • Kiến trúc •

Tại sao tôi chuyển trang web cá nhân từ Ghost CMS (Docker) sang Astro & GitLab Pages?

Phân tích bài toán kinh tế và kỹ thuật: Từ bỏ máy chủ ảo hàng tháng, triệt tiêu gánh nặng bảo trì cơ sở dữ liệu và chuyển về mô hình quản lý nội dung bằng Markdown thuần trên Git.

#Kiến trúc #Astro #JAMstack #DevOps

Lời mở đầu

Trong một thời gian dài, trang web nguyenson.dev của tôi được vận hành trên Ghost CMS, triển khai qua Docker container trên một máy chủ ảo (VPS) cá nhân.

Ghost là một nền tảng viết blog xuất sắc với giao diện soạn thảo đẹp mắt. Tuy nhiên, sau nhiều năm vận hành và quan sát, tôi nhận thấy mô hình CMS động truyền thống đang tạo ra quá nhiều “chi phí chìm” (hidden costs) không cần thiết cho một trang web cá nhân.


1. Nỗi đau khi vận hành CMS động trên VPS

  • Chi phí duy trì: Tiền thuê máy chủ VPS từ 100.000đ đến 300.000đ mỗi tháng dù lưu lượng truy cập ban đêm gần như bằng không.
  • Gánh nặng bảo trì (Maintenance Overhead): Phải định kỳ cập nhật hệ điều hành Ubuntu, cập nhật Docker, gia hạn chứng chỉ SSL Let’s Encrypt và sao lưu cơ sở dữ liệu MySQL/SQLite.
  • Nguy cơ bảo mật: Một cổng SSH mở, một phiên bản database chưa kịp vá lỗi hay một plugin CMS cũ đều có thể trở thành mục tiêu của bot quét mã độc trên internet.

2. Bước chuyển dịch sang Astro & Static-First JAMstack

Mô hình JAMstack (JavaScript, APIs, Markup) với framework Astro giải quyết toàn bộ những vấn đề trên:

  1. Chi phí máy chủ giảm về 0 đồng: Trang web được biên dịch sẵn thành các tệp tin HTML tĩnh và lưu trữ trên GitLab Pages / Cloudflare Pages. Cả hai nền tảng này đều miễn phí băng thông không giới hạn cho các trang web cá nhân.
  2. Miễn nhiễm với tấn công cơ sở dữ liệu: Không có máy chủ web động, không có MySQL, không có cổng backend mở ra ngoài internet.
  3. Quản trị bằng Markdown nguyên bản: Toàn bộ bài viết là các file .md được lưu trong kho mã nguồn Git. Không sợ bị hỏng cơ sở dữ liệu, có thể viết bài bằng bất kỳ phần mềm nào (VS Code, Obsidian, hoặc gõ trực tiếp trên GitLab Web).
  4. Tốc độ chạm mốc 100/100 tuyệt đối: Không mất thời gian chờ server truy vấn dữ liệu, toàn bộ bài viết được nạp tức thì từ mạng biên toàn cầu của Cloudflare.