Self-hosted CMS trong Jamstack
Các hệ thống quản lý nội dung (CMS) tự lưu trữ hiện nay có những tính năng nổi trội nào? Cùng tìm hiểu về Self-hosted CMS trong bài viết dưới đây.
Mặc dù JAMstack là một kiến trúc phát triển website mới phát triển mạnh mẽ trong khoảng 5 năm gần đây, nhưng kiến trúc này có rất nhiều các công cụ hỗ trợ để phát triển nhanh chóng. Trong đó, một danh sách dài các CMS tự lưu trữ đã sẵn sàng để các lập trình viên lựa chọn. Do đó, việc chọn nền tảng CMS phù hợp không hề dễ dàng.
Trong bài đăng này, JAMstack Vietnam sẽ trình bày một cách ngắn gọn và dễ hiểu nhất các đặc trưng của các CMS này và tại sao bạn nên cân nhắc sử dụng hoặc không sử dụng chúng.
Trước hết, hãy tìm hiểu những điều cơ bản.
1. Self-hosted CMS là gì?
CMS tự lưu trữ chịu trách nhiệm quản lý toàn bộ cơ sở hạ tầng của website và các phần phụ thuộc phần mềm của nó (bao gồm cơ sở dữ liệu, thư viện phần mềm bắt buộc,…). Bạn có quyền kiểm soát toàn bộ nội dung cũng như cách thức hoạt động của website.
Các CMS tự lưu trữ trong JAMstack, chẳng hạn như NetlifyCMS, cho phép quản trị viên website thực hiện tất cả các tác vụ CMS nhưng không cồng kềnh. Điều đó có nghĩa là bạn vẫn có thể thêm trang, viết bài đăng trên blog, thay đổi hoặc thêm chi tiết liên hệ, v.v. mà không phải lo lắng về việc cập nhật hệ thống quản lý nội dung của mình hoặc các plugin.
2. Tại sao sử dụng self-hosted CMS?
Có một số lý do sử dụng self-hosted CMS tốt hơn so với sử dụng hosting solution.
- Bạn hoàn toàn kiểm soát dữ liệu của mình. Kiểm soát dữ liệu của bạn giúp doanh nghiệp tuân thủ Bộ luật Bảo vệ Dữ liệu chung (GDPR-compliant)
- Bạn tự lưu trữ website. Bạn hoàn toàn kiểm soát, thay đổi, chỉnh sửa nội dung hay phát triển website theo hướng bạn mong muốn.
- Không có bản cập nhật, cài đặt và hỗ trợ.
- Bảo mật tốt hơn. Giống như với các headless CMS, lưu trữ một website trên đám mây mà bạn chọn có thể giảm đáng kể khả năng bị tấn công.
- Khả năng mở rộng các dịch vụ API phụ trợ và Admin Panel GUI (Bảng điều khiển quản trị) với các tính năng tùy chỉnh của riêng bạn.
Xem thêm: JAMstack là gì?
3. Các self-hosted CMS phổ biến dành cho JAMstackers
3.1. Strapi
Strapi là CMS không đầu với mã nguồn mở và JavaScript dựa trên Node.js.
CMS này cho phép người dùng sử dụng các thao tác kéo - thả để tạo ra website nhanh chóng và hiệu quả hơn. Đồng thời, nó cung cấp nhiều tùy chỉnh khác nhau giúp biên tập viên có trải nghiệm tạo lập và quản lý nội dung tốt hơn. Ví dụ: bạn có thể cài đặt một số plugin chỉ trong vài giây để bổ sung các chức năng cần thiết.
Khi nào sử dụng Strapi?
Strapi rất phù hợp nếu bạn muốn bắt đầu một dự án CMS mới trong vòng hai phút. Trong giai đoạn phát triển website, Strapi sẽ thiết lập kết nối thư viện phần mềm SQLite để bạn không cần phải khởi động hệ thống quản trị cơ sở dữ liệu mã nguồn mở MongoDB hoặc MySQL.
Ưu và nhược điểm của Strapi
Ưu điểm
- Self-hosted CMS này dễ dàng sử dụng và thiết lập, hỗ trợ nhiều loại dữ liệu
- Hỗ trợ API RESTful và GraphQL
- Hoàn toàn có thể tùy chỉnh.
Nhược điểm
- Vẫn đang trong giai đoạn thử nghiệm. Một số lỗi hoặc vấn đề về sự ổn định có thể xảy ra. (Họ đã cho ra mắt bản ổn định vào tháng Năm nhưng chúng tôi chưa thử nghiệm phiên bản này).
3.2. Wordpress
Wordpress là một trong những hệ thống quản lý nội dung phổ biến nhất trên thế giới trong hơn 15 năm qua.
WordPress có liên quan gì với Jamstack?
Kể từ năm 2016, Wordpress cung cấp quyền truy cập vào API của nó nên các lập trình viên có thể sử dụng CMS này theo nhiều cách khác nhau. Trong đó, khả năng tách biệt quản lý nội dung giao diện người dùng và quản lý nội dung của WordPress giúp bạn không còn phụ thuộc vào PHP nữa và có thể áp dụng được vào kiến trúc lập trình JAMstack.
Với số lượng lớn lập trình viên đã sử dụng WordPress, thật dễ hiểu tại sao WordPress không đầu lại có được sự ủng hộ lớn như vậy.
Sử dụng Wordpress khi nào?
Nếu bạn muốn tạo một chương trình độc lập bằng ngôn ngữ không phải là PHP thì đây chắc chắn là lựa chọn tuyệt vời nhất.
Nếu bạn sử dụng JavaScript hoặc jQuery, bạn vẫn có thể sử dụng REST API do WordPress cung cấp. Thay vì admin-ajax, Wordpress đưa ra một giải pháp có cấu trúc hơn để tương tác với nội dung lưu trữ. Đồng thời, nó cũng tạo ra trải nghiệm tốt hơn cho người dùng.
Hạn chế duy nhất là REST API đòi hỏi nhiều thời gian để phát triển. Tuy nhiên, WPGraphQL có thể xử lý vấn đề này. Không giống như REST API, GraphQL có thể giúp bạn lấy tất cả dữ liệu của mình từ một yêu cầu duy nhất. Ví dụ: các ứng dụng với GraphQL API có thể hoạt động nhanh ngay cả khi mạng di động chậm.
Ưu và nhược điểm của Wordpress
Ưu điểm
- Cho phép xây dựng website một cách nhanh chóng
- Quản lý dữ liệu phía máy chủ dễ dàng
- Khả năng phát triển lớn
- Hầu hết các lập trình viên và nhân viên không phải nhà phát triển trong nhóm đã quen thuộc với nó
Nhược điểm
- Self-hosted CMS cần dành nhiều thời gian để phát triển
3.3. Ghost
Các lập trình viên với nhiều năm sử dụng Wordpress đều thấy được sự phức tạp và cồng kềnh của CMS này. Trong khi đó, họ chỉ muốn có một nền tảng blog sạch sẽ, nhanh và dễ sử dụng chứ không phải một hệ thống quản lý nội dung cho hầu hết mọi thứ. Vì vậy, họ đã tạo ra Ghost.
Ghost là một nền tảng blog mã nguồn mở được viết bằng Node.js. Về cơ bản, nó là một headless CMS mà bạn có thể sử dụng phiên bản tự lưu trữ hoặc được lưu trữ trên máy chủ của chính Ghost.
Khi nào sử dụng Ghost?
Ngay từ những ngày đầu, Ghost được xây dựng như một nền tảng blog, cho nên, đây vẫn là mục đích sử dụng tốt nhất cho hệ thống quản lý nội dung này. Nó nhanh hơn WordPress (khi viết blog) và có tích hợp sẵn các chức năng để tối ưu SEO và các chức năng chia sẻ trên mạng xã hội, thích hợp cho việc viết blog.
Ưu và nhược điểm của Ghost
Ưu điểm
- Là mã nguồn mở & được sử dụng miễn phí
- Nhanh hơn WordPress
- Hỗ trợ ngôn ngữ Markdown
- Có chức năng chia sẻ xã hội và SEO gốc
- Có các biểu mẫu đăng ký gốc, quản lý thành viên, thanh toán, đăng ký và bản tin email
- Bạn có toàn quyền kiểm soát dữ liệu nhờ API JSON của Ghost
Nhược điểm
- Tập trung vào viết blog làm cho nó trở thành một hệ thống không hiệu quả cho các loại website khác
- Cần các chức năng tùy chỉnh? Bạn cần học cách viết mã trước đã.
3.4. Grav
Grav là một flat-file CMS với mã nguồn mở hiện đại. CMS tập tin phẳng không có cơ sở dữ liệu mà lưu dữ liệu trực tiếp vào các tập tin và thư mục. Grav không phụ thuộc vào cơ sở dữ liệu và có khả năng tối đa hóa và đơn giản hóa quá trình phát triển web thông qua các API. Do đó, việc mở rộng website và chuyển đổi kiến trúc website dễ dàng hơn. Đồng thời, nó mang lại kết quả hoạt động tốt hơn.
Khi nào sử dụng Grav?
Grav đơn giản, hiệu quả và nhanh chóng trong một số trường hợp. Nó hoạt động tốt nhất cho các blog vừa và nhỏ, và đó dường như là cảm nhận chung trong nhiều bài đánh giá mà tôi đã xem qua.
Ưu và nhược điểm của Grav
Ưu điểm
- Sử dụng dễ dàng trong việc đăng tải tài liệu, di chuyển thư mục và cập nhật phiên bản.
- Tùy chỉnh các trường cho nội dung.
Nhược điểm
- Thiếu các tính năng nâng cao
- Giới hạn tài nguyên có sẵn
3.5. Cockpit
Cockpit là một headless CMS có nguồn mở, self-hosted, chạy bằng API được các lập trình viên Vue.js yêu thích. Nó đáp ứng nhu cầu về một cấu trúc nội dung linh hoạt nhưng không bị giới hạn trong cách sử dụng nội dung. Vì vậy, không có các định dạng bài viết được thiết lập sẵn mà bạn phải tự tạo.
Khi nào thì sử dụng Cockpit?
Các trang web quy mô vừa và nhỏ là những trường hợp sử dụng tốt nhất cho Cockpit.
Ưu và nhược điểm của Cockpit
Ưu điểm
- Thiết lập dễ dàng
- Hỗ trợ SQLite hoặc MongoDB
- Tiện ích khác của Cockpit.
Nhược điểm
- Các bản cập nhật và sửa lỗi rất thất thường
- Tiện ích của Cockpit rất ít
- Tài liệu hướng dẫn hạn chế
3.6. Directus
Directus là một công cụ mã nguồn mở quản lý kiến trúc cơ sở dữ liệu SQL tùy chỉnh và cung cấp một ứng dụng quản trị trực quan để quản lý nội dung. Giao diện người dùng khá sạch và được viết bằng Vue.js, nhưng quan trọng nhất, tài liệu hướng dẫn sử dụng Self-hosted CMS này khá đầy đủ. Nó bao gồm tất cả mọi thứ liên quan tới Directus, bao gồm hướng dẫn viết các phần bổ trợ của riêng bạn.
Khi nào sử dụng Directus?
Trong trường hợp bạn đang lên kế hoạch xây dựng một ứng dụng hoặc website có kiến trúc tùy chỉnh để tiếp cận đa kênh, Directus rất phù hợp.
Ưu và nhược điểm của Directus
Ưu điểm
• Tự lưu trữ miễn phí hoặc sử dụng dịch vụ Đám mây theo yêu cầu của họ
• Giao diện thân thiện
• Nhiều nguồn tài liệu và có một cộng đồng tuyệt vời
Nhược điểm
- Vẫn còn một số lỗi phổ biến
- Dựa trên PHP
- Ít tài liệu hướng dẫn
- Cấu hình thiết lập nhiều dự án trên cùng một bản cài đặt
3.7. Prime CMS
Prime CMS là một CMS không đầu tự lưu trữ khác có giao diện GraphQL. Nó được cung cấp bởi TypeScript với một hệ thống đơn giản nhưng mạnh mẽ.
Với Prime, bạn có thể tạo các trường tùy chỉnh của riêng mình và CMS hỗ trợ đa ngôn ngữ.
Khi nào sử dụng Prime CMS?
Mặc dù có một số tùy chọn tốt hơn Prime, nhưng CMS không đầu này không phải là một lựa chọn tồi nếu bạn muốn lưu trữ CMS của mình tại địa phương. Không giống như Contentful và Strapi, Prime CMS cung cấp các trường nhóm và bố cục động. Một lợi ích tuyệt vời khác là nó hoàn toàn miễn phí để sử dụng.
Ưu và nhược điểm của việc sử dụng Prime
Ưu điểm
• Hoàn toàn miễn phí
• Nguồn mở và tự lưu trữ
• Đa ngôn ngữ thích hợp với nhiều quốc gia
Nhược điểm
• Hiện đang ở phiên bản beta
• Không có nhiều tài liệu hướng dẫn, các tài liệu đã cũ, chưa cập nhật.
3.8. Netlify CMS
NetlifyCMS là một trong những git-based headless CMS phổ biến nhất trên thị trường. Nó cho phép tạo một trang web hoặc một ứng dụng với việc triển khai liên tục các HTTPS chỉ bằng 1 cú nhấp chuột. Nó thường là lựa chọn số một của các lập trình viên khi nói đến việc tạo các trang web và ứng dụng tĩnh hiện đại.
Khi nào sử dụng NetlifyCMS?
Một lĩnh vực mà NetlifyCMS thực sự vượt trội là nội dung. Ngay cả các nhà văn và biên tập viên của bạn cũng sẽ thích nó vì việc thêm nội dung vô cùng hiệu quả và dễ dàng. Nó thân thiện với cú pháp Markdown, cho phép tải lên hình ảnh và video bằng cách kéo - thả. Về cơ bản, nó có thể cài đặt và sử dụng dễ dàng với bất kỳ trình tạo trang tĩnh nào.
Chức năng chia sẻ mạng xã hội có thể được thêm vào bằng các API từ các công cụ như ShareThis hoặc Shareaholic, chức năng nhận xét có thể được tích hợp với Disqus, và việc chạy A/B testing rất đơn giản nhờ tính năng split testing. Bạn sẽ có thể xem các phiên bản khác nhau của trang web hoặc các trang của mình từ các nhánh Git khác nhau.
Ưu và nhược điểm của Netlify
Ưu điểm
• Có thể được sử dụng với bất kỳ trình tạo trang web tĩnh nào
• Có chế độ xem trước
• Các loại nội dung linh hoạt và không giới hạn với các trường tùy chỉnh
• Có thể mở rộng hoàn toàn - cho phép bạn tạo bản xem trước theo kiểu tùy chỉnh, tiện ích giao diện người dùng và plugin trình chỉnh sửa
• Cộng đồng lớn và gắn bó
• Mã nguồn mở
• Bạn có thể theo dõi những tính năng đang hoạt động trong cộng đồng
Nhược điểm
• Không có cách nào để tạo các loại nội dung thông qua giao diện - phải chỉnh sửa trong tệp `config.yml`
• Trong một số trường hợp, bạn sẽ cần nhiều cấu hình để hoạt động tốt. Ví dụ: cần một vài plugin và một số mã để gatsby-img hoặc markdown hoạt động
• Không có giao diện tương tác, không có ứng dụng di động
• Không thể lên lịch để các bài đăng phát trực tiếp
4. Bạn nên chọn cái nào?
Trước khi tìm ra Self-hosted CMS phù hợp, bạn cần trả lời một số câu hỏi như bạn sử dụng CMS tự lưu trữ để làm gì? (để xây dựng blog, website thương mại điện tử hay website nhận diện thương hiệu?), bạn có phải là một lập trình viên hay là một chủ doanh nghiệp với một đội ngũ lập trình viên? Một số CMS ở đây không yêu cầu mã hóa, nhưng chúng yêu cầu lập trình viên thao tác để khiến chúng hoạt động theo cách bạn muốn. Theo dõi JAMstack Việt Nam để cập nhật nhanh chóng những kiến thức bổ ích về xây dựng và thiết kế website.