Từ ngày 30/03/2026, blog thuanbui.me này của mình đã được chính thức dọn nhà qua Astro. Chính thức nói lời chia tay WordPress sau hơn 10 năm gắn bó, 06/2015 - 03/2026.
Nếu bạn đang đọc bài này, nghĩa là mọi thứ đang hoạt động tốt. Blog đã chuyển nhà từ WordPress qua Astro thành công. Bài viết này là lần đầu tiên mình soạn bài viết cho blog sử dụng Visual Studio Code, không còn phải truy cập vào Dashboard của WordPress nữa.
I. Bye Bye WordPress
WordPres đã gắn bó với mình từ năm 2014 từ những ngày đầu làm quen với web development. Mình đã sử dụng WordPress để xây dựng blog Yêu Chạy Bộ vào năm 2014, tiếp theo là blog Thuận Bùi này năm 2015. Website bán hàng cho cửa hàng thể thao YCB của mình cũng được xây dựng dựa trên WordPress và vẫn còn duy trì hoạt động đến nay.
Mình còn kiếm được kha khá tiền từ công việc freelance WordPress Developer — xây dựng website bán hàng, landing page cho khách hàng.
Nếu không có kinh nghiệm từ WordPress, mình đã không thể tìm được công việc Laravel Developer hiện tại ở Osaka, Nhật Bản.
WordPress đã cho mình rất nhiều thứ, và mình không phủ nhận điều đó.
Nhưng ở thời điểm hiện tại, nó không còn phù hợp nữa.
1. Không còn thời gian quản lý server
Từ tháng 6 năm ngoái kể tư khi mình bắt đầu công việc full-time ở Osaka, blog Thuanbui.me này đã gần như bị bỏ hoang, không có bài viết mới vì mình bận rộn với công việc full-time.
Thời gian dành cho blog đã ít, nhưng vẫn phải lo xử lý cập nhập WordPres core, cập nhật plugin, theme để vá lỗi bảo mật. Lâu lâu database bị sập phải SSH vào server để khởi động lại hệ thống.
Mình không muốn lãng phí thời gian quản lý server nữa, thay vào đó tập trung cho việc quan trong hơn: viết blog.
2. Workflow viết bài quá rườm rà
Mỗi lần muốn đăng một bài mới, mình phải thực hiện các thao tác như sau:
- Mở trình duyệt
- Đăng nhập Dashboard
- Tạo bài viết mới
- Viết bài với Gutenberg Block Editor
- Thêm fatured image
- Chọn category
- Thêm tags
- Preview
- Publish.
Chưa kể Gutenberg lâu lâu lại dở chứng, block lỗi, và còn bị lag, gõ chữ 5s sau mới hiện ra.
Quá mất thời gian! Quá rườm rà!
Thay vào đó, mình muốn đơn giản hóa việc viết bài: mở VS Code → viết blog bằng Markdown → Push lên Githugb → Xong. Cloudflare sẽ tự xử lý phần còn lại.
Gọn lẹ! Đơn giản!
II. Kinh nghiệm từ việc chuyển nhà cho balodeplao.com
Trước khi tiến hành chuyển nhà cho blog Thuanbui.me này qua Astro, mình đã thử nghiệm trước trên 2 blog khác là Ba Lô & Dép Lào và SuperSilk. Toàn bộ quá trình diễn ra cực kỳ suôn sẻ và đã được chia sẻ trong series bài viết WordPress to Astro.
Nhờ việc chuyển nhà cho blog, mình đã học được nhiều kiến thức mới: Jamstack architecture, CI/CD với Cloudflare Workers Builds, TypeScript, tối ưu hình ảnh với Cloudflare Image Transformations…
Cũng nhờ đó, mình đã tìm ra lời giải cho những lo ngại ban đầu khi có ý tưởng chuyển qua dùng Static Site.
III. Những lo lắng ban đầu — và cách giải quyết
1. Chuyển bài viết từ database sang Markdown?
Đây là trở ngại lớn nhất với mình từ khi có ý tưởng chuyển blog từ WordPress qua Static Site.
Tuy nhiên, mọi thứ trở nên quá dễ dàng nhờ công cụ wordpress-export-to-markdown. Toàn bộ quá trình đã được chia sẻ trong bài viết trước đó
2. Quản lý ảnh ra sao?
Mình dùng Cloudflare R2 để lưu trữ hình ảnh. Tất cả được tải lên R2 bằng rclone.
Mình sử dụng thêm Cloudflare Image Transformations để tự động convert sang WebP và resize on-the-fly. Xem thêm: [WordPress → Astro] Phần 5 - Tối ưu hình ảnh cho blog
3. Hệ thống bình luận cho blog?
Theo mình tìm hiểu, Giscus là lựa chọn phổ biến để quản lý comment trong cộng đồng static site. Nhưng hạn chế của nó là người dùng phải có tài khoản GitHub mới comment được — không phải ai cũng có. Ngoài ra, việc chuyển comment cũ từ WordPress qua Giscus cũng là một thử thách vì chưa có sẵn công cụ nào hỗ trợ.
Mình đã quyết định tự xây dựng hệ thống comment riêng bằng Cloudflare D1 (SQLite serverless) + Drizzle ORM + Svelte 5 islands. Toàn bộ comment cũ từ WordPress đã được chuyển đổi thành công, lưu vào D1 không mất một comment nào. Và quan trọn nhất, ai cũng có thể comment trên blog mà không cần phải đăng ký tài khoản ở bất cứ đâu.
4. Tính năng tìm kiếm?
Làm sao kích hoạt tính năng tìm kiếm cho static site như Astro?
Câu trả lời là Pagefind — thư viện tìm kiếm chạy hoàn toàn trên client-side, tự động index toàn bộ nội dung blog lúc build. Không cần server, không cần API.
IV. Lựa chọn Astro Theme
Sau nhiều cân nhắc giữa nhiều theme khác nhau, mình quyết định chọn Astro Paper làm base theme cho blog Thuanbui.me vì nó đã được tích hợp sẵn Pagefind, dark mode, và SEO tốt.
Dựa trên đó, mình tùy biến lại giao diện theo ý thích, đồng thời bổ sung thêm tính năng cho phù hợp với nhu cầu sử dụng.
Còn về hạ tầng, hiện tại gần như mọi thứ đều lưu trên Cloudflare:
- Workers để deploy
- R2 để lưu ảnh
- D1 cho comment system
- Image Transformations để xử lý ảnh
Còn nội dung blog đuợc lưu trên Github. Mỗi khi có commit mới dược push lên Github, Cloudflare Worker sẽ tự động build bản mới.
Giờ không cần phải lo quản lý server nữa, không lo cài đặt cache, tối ưu cache,… Tất cả để Cloudflare lo!
Blog đã được điểm tuyệt đối 100/100 cho cả Mobile và Desktop!


Những việc cần làm tiếp theo
Hiện tại, việc chuyển nhà qua Astro vẫn chưa hoàn thành 100%. Còn nhiều vấn đề mình cần phải giải quyết: giao diện chưa thực sự tối ưu, chưa có thông báo khi có comment mới, chưa có trang quản lý comment,… Trong quá trình hoàn thiện blog, nếu tìm được kiến thức hữu ích, mình sẽ chia sẻ thêm trên blog.
Ngoài ra trong những bài viết tiếp theo, mình cũng sẽ chia sẻ cách xây dựng hệ thống comment cho Astro blog sử dụng Cloudlfare D1. Bạn nào quan tâm về việc chuyển đổi blog qua dạng serverless có thể đón theo dõi nhé!
Bye WordPress, và cảm ơn vì 10 năm qua. 🙏
Hello Astro, và cùng chờ đón tương lai với nhiều bài viết thú vị mới!