Nhật ký phát hành KDIGI CMS
Cập nhật lần cuối:

Phiên bản mới nhất của KDIGI CMS là 1.1.0, phát hành ngày 2026-11-03. Trang này liệt kê mọi bản phát hành (1.0.0, 1.0.1, 1.1.0) từ CHANGELOG của dự án, tuân theo Semantic Versioning, cùng cách nâng cấp an toàn. Mục Unreleased hiện trống.
Tóm tắt nhanh
- Bản mới nhất: 1.1.0 (2026-11-03). Trước đó: 1.0.1 và 1.0.0 (cùng ngày 2026-11-03).
- Giấy phép MIT, xây trên Payload 3.90, Next.js 15 và PostgreSQL (mã nguồn mở).
- CHANGELOG theo định dạng Keep a Changelog; phiên bản theo Semantic Versioning.
- Schema chỉ đổi bằng migration có timestamp; bản 1.0.1 thêm một migration.
- Luôn sao lưu database và media trước khi nâng cấp (hướng dẫn tự host).
Bản mới nhất: 1.1.0
Ngày phát hành: 2026-11-03. Bản này tập trung vào việc chạy một demo công khai an toàn và xác thực lời gọi revalidate.
Thêm mới
- Bảo vệ tài khoản demo công khai (tùy chọn): biến
DEMO_ACCOUNT_EMAILS(danh sách phân tách bằng dấu phẩy). Người dùng trong danh sách không đổi được email, mật khẩu, API key hay công tắc API key của chính mình và không tự xóa mình (403, thông báo song ngữ vi/en). Không đặt biến thì hành vi không đổi. Xem bản demo trực tiếp. pnpm demo:reset(src/seed/demo-reset.ts): xóa vĩnh viễn toàn bộ nội dung của riêng sitedemo, nạp lại bằng dữ liệu demo seed và đặt lại các tài khoản trongDEMO_ACCOUNT_EMAILS(mật khẩu từDEMO_ACCOUNT_PASSWORD, vai tròeditor, chỉ sitedemo). Dành cho tác vụ chạy hằng đêm.REVALIDATE_SECRET: khi đặt, ping revalidate (job và nút thủ công của biên tập viên) gửi kèm headerx-revalidate-secret, để frontend xác minh bên gọi. Không đặt thì ping không xác thực như trước. Xem headless API.- Cả hai file compose chuyển tiếp
REVALIDATE_SECRET,DEMO_ACCOUNT_EMAILSvàDEMO_ACCOUNT_PASSWORD. - README dẫn tới website dự án, tài liệu hosted và bản demo trực tiếp.
Danh sách bản phát hành
| Phiên bản | Ngày | Điểm chính | Chuyển schema |
|---|---|---|---|
| 1.1.0 | 2026-11-03 | Bảo vệ tài khoản demo, pnpm demo:reset, REVALIDATE_SECRET |
Không ghi trong CHANGELOG |
| 1.0.1 | 2026-11-03 | Sửa lỗi pipeline di chuyển WordPress (phase media, chạy lại, host có cổng) | Có: 20261103_052647_media_source_media_id |
| 1.0.0 | 2026-11-03 | Bản công khai đầu tiên (MIT) | Migration nền 20261103_042515_initial |
1.0.1 (2026-11-03): sửa lỗi di chuyển WordPress
Bản vá này chỉ chứa sửa lỗi cho pipeline chuyển từ WordPress:
- Phase media: collection
Mediacó thêm khóa ẩnsourceMediaIddùng để tránh nhập trùng (migration20261103_052647_media_source_media_id). Thiếu khóa này, mọi lần tra cứu media đều thất bại nên ảnh đại diện, slider và ảnh trong thân bài không được nhập. - Chạy lại: media chỉ tham chiếu bằng URL (logo site, ảnh OG) được định danh bằng hash của URL nguồn và không bị tải lên lại mỗi lần chạy.
- Host nguồn có cổng (ví dụ
127.0.0.1:8080) được khớp đúng khi viết lại canonical, menu và link nội bộ. --dry-runtrên database trống không còn báo các đích ảnh trong bài còn thiếu là lỗi.
Lưu ý Nếu bạn dự định chuyển từ WordPress, hãy dùng từ 1.0.1 trở lên.
1.0.0 (2026-11-03): bản công khai đầu tiên
KDIGI CMS (giấy phép MIT) là CMS headless nhiều website trên Payload 3.90, Next.js 15 và PostgreSQL. Nó được tách ra từ một hệ thống đa website đã chạy production và tổng quát hóa cho agency, blogger, doanh nghiệp nhỏ và người chuyển khỏi WordPress.
| Nhóm | Có trong 1.0.0 |
|---|---|
| Nhiều website | Một bản cài phục vụ nhiều website; mỗi tài liệu Sites giữ thương hiệu, SEO mặc định, liên hệ/footer, domain và (tùy chọn) thông tin lưu trữ riêng; nội dung cách ly theo site bằng access predicate tường minh (nhiều website) |
| Vai trò | super-admin, admin, editor, author kèm gán site; chỉ super-admin đổi role hoặc site của người dùng, người dùng không tự nâng quyền (phân quyền) |
| Mô hình nội dung | Pages, posts, products, landings (block), taxonomies, authors, menus (cây), FAQs, shortcodes, redirects, comments (có reCAPTCHA), rating events; collection nội dung có phiên bản và đa ngôn ngữ (vi mặc định, en có fallback) (nội dung và cấu trúc) |
| Trình soạn thảo | Markdown-first (Milkdown): slash menu, chọn media/link, shortcode, HTML đã làm sạch ở đúng khóa REST gốc (trình soạn thảo) |
| Media | Thư viện có thư mục, trình sửa ảnh, nhập từ URL (chống SSRF), chuyển WebP khi upload cho site dùng R2; mặc định lưu trên ổ đĩa, tùy chọn Cloudflare R2 theo site (thư viện media) |
| SEO | Đồ thị JSON-LD, mẫu tiêu đề/mô tả kiểu RankMath, kiểm tra SEO, gợi ý liên kết nội bộ, tạo nội dung SEO bằng AI tùy chọn (DeepSeek, bật bằng DEEPSEEK_API_KEY và DEEPSEEK_MODEL) (SEO và JSON-LD) |
| Công cụ biên tập | Lịch nội dung / bảng điều khiển biên tập, thùng rác và khôi phục (quy trình biên tập) |
| Tích hợp frontend | REST và GraphQL, job revalidate ISR, bộ phân giải URL tài liệu cho frontend (headless API) |
| Di chuyển | Pipeline WordPress (thô, chuẩn hóa, nhập) kèm runbook (chuyển từ WordPress) |
| Triển khai | Khởi động một lệnh bằng Docker Compose (PostgreSQL và app), site demo kèm nội dung mẫu (tự host) |
| Dự án | Bộ tài liệu trong docs/, Code of Conduct, Contributing, Security policy, mẫu issue/PR, CI |
Không mang sang từ hệ thống gốc: các module đặc thù miền nghiệp vụ, công cụ CDN tùy chọn, pipeline clone và mọi importer hay fixture một lần cho từng site riêng.
Cách nâng cấp một bản cài
-
Đọc CHANGELOG của mọi phiên bản giữa bản bạn đang chạy và bản đích: tìm mục "Breaking", biến môi trường mới và thay đổi ảnh hưởng phản hồi REST mà frontend dùng.
-
Sao lưu database (
pg_dump) và volume media; xem sao lưu và nâng cấp. -
Lấy code mới và build lại:
git fetch --tags && git checkout v1.1.0 docker compose up -d --build # entrypoint chạy payload migrate trước khi khởi độngVới Coolify, redeploy; không dùng Docker:
pnpm install --frozen-lockfile && pnpm build && pnpm migrate && pnpm start. -
Cập nhật biến môi trường nếu CHANGELOG thêm mới (ví dụ
REVALIDATE_SECRETtừ 1.1.0, tùy chọn). -
Kiểm tra: đăng nhập
/admin, mở vài tài liệu mỗi collection, tải một ảnh, gọi một URL công khai từ frontend.GET /api/healthchỉ chứng minh tiến trình còn sống, không chứng minh schema đã mới.
Nâng cấp CMS trước, rồi mới nâng cấp frontend dùng trường mới. Nếu cần quay lại, chỉ redeploy image cũ khi nó đọc được schema đã migrate; nếu không, khôi phục bản sao lưu ở bước 2. Chi tiết nằm trong mục nâng cấp của trang tự host.
Nguồn
- CHANGELOG của KDIGI CMS (định dạng Keep a Changelog, phiên bản theo Semantic Versioning): https://github.com/kdigivn/kdigi-cms-open/blob/main/CHANGELOG.md
- Tag và so sánh phiên bản: https://github.com/kdigivn/kdigi-cms-open/releases/tag/v1.0.0
- Quy trình nâng cấp:
docs/upgrading.mdtrong repo https://github.com/kdigivn/kdigi-cms-open
Câu hỏi thường gặp
Phiên bản mới nhất của KDIGI CMS là gì?
KDIGI CMS đánh số phiên bản theo quy tắc nào?
Nâng cấp từ 1.0.0 lên 1.1.0 có cần migration không?
Tôi theo dõi bản phát hành mới ở đâu?
Đọc tiếp
Tự host
Cài KDIGI CMS trên VPS của bạn bằng Docker Compose hoặc Coolify: yêu cầu hệ thống, biến môi trường, sao lưu, nâng cấp và các bước tăng cường bảo mật.
Sao lưu và nâng cấp KDIGI CMS: quy trình không mất dữ liệu
Quy trình sao lưu cơ sở dữ liệu và media, kiểm tra khôi phục, nâng cấp phiên bản bằng Docker, xem release notes và cách quay lui khi nâng cấp gặp sự cố.
Chuyển từ WordPress
Hướng dẫn chuyển WordPress sang KDIGI CMS: bài viết, trang, media, menu, dữ liệu Yoast/RankMath, WooCommerce, redirect 301. Có checklist và giới hạn rõ ràng.
Mã nguồn mở
KDIGI CMS phát hành theo giấy phép MIT trên GitHub. Xem kho mã, hướng dẫn đóng góp, chính sách bảo mật và lộ trình chỉ gồm những gì đã có thật.