Mã nguồn mở: giấy phép MIT, kho mã và đóng góp
Cập nhật lần cuối:

KDIGI CMS là CMS headless nhiều website mã nguồn mở, phát hành theo giấy phép MIT (bản quyền 2026 KDIGI). Bạn được dùng, sửa, phân phối và bán lại, kể cả cho dự án thương mại. Mã nguồn công khai tại github.com/kdigivn/kdigi-cms-open, xây dựng trên Payload 3, Next.js 15 và PostgreSQL.
Tóm tắt nhanh
- Giấy phép: MIT, file
LICENSEở thư mục gốc repo, bản quyền 2026 KDIGI.- Repo: https://github.com/kdigivn/kdigi-cms-open (nhánh
main, phiên bản hiện tại 1.1.0).- Công nghệ: Payload 3.90, Next.js 15 (App Router), React 19, PostgreSQL, Milkdown, TypeScript, pnpm.
- Có sẵn
CONTRIBUTING.md,CODE_OF_CONDUCT.md(Contributor Covenant 2.1),SECURITY.mdvà mẫu issue/PR.- CI chạy typecheck, unit test, lint và integration test với PostgreSQL thật.
- Lỗ hổng bảo mật báo riêng tư qua GitHub Security Advisories, không mở issue công khai.

Giấy phép MIT nghĩa là gì với bạn
KDIGI CMS dùng MIT License, một giấy phép dễ dãi (permissive). Văn bản trong repo cho phép bất kỳ ai nhận một bản sao phần mềm và tài liệu đi kèm được "sử dụng, sao chép, sửa đổi, hợp nhất, xuất bản, phân phối, cấp phép lại và/hoặc bán" bản sao, miễn là giữ nguyên thông báo bản quyền và thông báo giấy phép. Phần mềm được cung cấp "nguyên trạng" và không có bảo hành.
| Bạn muốn | MIT có cho phép không |
|---|---|
| Dùng cho website của khách hàng, kể cả thu phí | Có |
| Cài một bản phục vụ nhiều website | Có (không giới hạn số site trong giấy phép) |
| Fork và sửa mã theo nhu cầu | Có |
| Phân phối lại bản đã sửa, kể cả đóng gói thương mại | Có, với điều kiện giữ thông báo bản quyền và giấy phép |
| Đòi tác giả bảo hành hay chịu trách nhiệm | Không, phần mềm cung cấp nguyên trạng |
Khi bạn gửi đóng góp, theo CONTRIBUTING.md bạn đồng ý đóng góp đó được cấp phép theo cùng giấy phép MIT. Đây là mô tả tóm lược chứ không phải tư vấn pháp lý; văn bản LICENSE trong repo là bản có hiệu lực.
Nguồn gốc và phạm vi mã nguồn
Theo CHANGELOG, bản 1.0.0 là bản công khai đầu tiên, tách ra từ một hệ thống CMS đa website đã chạy production rồi tổng quát hóa cho agency, blogger, doanh nghiệp nhỏ và người đang rời WordPress. Khi mở mã nguồn, các module đặc thù miền nghiệp vụ, công cụ CDN tùy chọn, pipeline clone và mọi importer/fixture một lần cho từng site riêng của hệ thống gốc không được mang sang. Những gì có trong repo là sản phẩm tổng quát:
- Quản lý nhiều website trong một bản cài, phân quyền
super-admin,admin,editor,author(phân quyền). - Mô hình nội dung, trình soạn thảo Markdown, thư viện media, SEO tích hợp với JSON-LD.
- REST và GraphQL cho frontend tùy chọn.
- Pipeline di chuyển từ WordPress.
- Cấu hình tự host bằng Docker Compose và Coolify.
Cấu trúc kho mã
| Thư mục/file | Vai trò |
|---|---|
src/ |
Mã nguồn ứng dụng: collections, access, hooks, endpoints, importer WordPress, seed |
docs/ |
Bộ tài liệu: getting started, configuration, deploy, upgrading, architecture, REST API, SEO, multi-site, media, roles, content Markdown, WordPress migration |
src/migrations/ |
Migration PostgreSQL có timestamp; schema không bao giờ tự đồng bộ |
docker/, Dockerfile, docker-compose*.yml |
Đóng gói và triển khai |
e2e/ |
Kiểm thử Playwright |
.github/ |
CI, mẫu bug report, feature request và pull request |
AGENTS.md, CLAUDE.md |
Hướng dẫn cho trợ lý lập trình AI khi làm việc với repo |
Tài liệu đầy đủ được xuất bản tại docs.opencms.kdigi.vn.
Chạy thử và đóng góp mã
Yêu cầu: Node.js ≥ 20.9 (khuyến nghị 22), pnpm 10 (corepack enable) và Docker cho PostgreSQL.
git clone https://github.com/kdigivn/kdigi-cms-open.git
cd kdigi-cms-open
pnpm install --frozen-lockfile
cp .env.example .env # đặt PAYLOAD_SECRET ngẫu nhiên ≥ 32 ký tự
docker compose up -d db # chỉ PostgreSQL, cổng 5432
pnpm migrate # áp dụng migration
pnpm dev # http://localhost:3000/admin
Cách gửi một đóng góp
-
Tìm hoặc mở issue. Với thay đổi lớn hãy mở issue trước để thống nhất hướng; tìm trước để tránh trùng. Có mẫu cho bug report và feature request.
-
Fork và tạo nhánh từ
main. Một thay đổi logic cho mỗi pull request, đủ nhỏ để review. -
Chạy bộ kiểm tra giống CI:
pnpm typecheck pnpm lint pnpm test # unit test (node:test + tsx, file *.test.ts đặt cạnh mã) pnpm test:integration # cần PostgreSQL qua DATABASE_URI và PAYLOAD_INTEGRATION=1next buildcố ý bỏ qua lint và typecheck, nên một bản build xanh chưa chứng minh được gì. -
Nếu đổi schema:
pnpm payload migrate:create <tên-ngắn>, rà soát SQL được sinh,pnpm generate:types, vàpnpm generate:importmapnếu thêm hoặc đổi tên component admin. Migration phải đảo ngược được và không giả định database trống. -
Đổi hợp đồng REST công khai thì cập nhật
docs/rest-api.mdtrong cùng PR. -
Commit theo Conventional Commits (
feat:,fix:,docs:,chore:,refactor:,test:), điền mẫu pull request, thêm test cho thay đổi hành vi và ghi vào mục Unreleased của CHANGELOG.
Quy ước mã nguồn
- TypeScript, tên file kebab-case mô tả rõ, test đặt cạnh mã.
- Kiểm soát truy cập là ranh giới bảo mật: mọi collection khai báo
access.*tường minh; không dựa riêng vào bộ lọc của plugin multi-tenant. - Collection nội dung có phiên bản, nên hook không được gọi lại
payload.update()trên chính tài liệu của nó. - Không bao giờ log hay trả về bí mật (thông tin lưu trữ từng site, API key).
- Tiếng Việt (
vi) là locale mặc định, tiếng Anh (en) là fallback; giữ nhãn song ngữ trên các trường admin. - Không đưa bí mật, dữ liệu khách hàng thật hay domain thật vào mã, fixture hoặc tài liệu; dùng
example.comvàchange-me.
Dự án cũng ghi rõ bạn được dùng trợ lý lập trình AI với AGENTS.md và CLAUDE.md, nhưng bạn chịu trách nhiệm với những gì mình gửi.
CI
Workflow .github/workflows/ci.yml chạy cho mọi pull request và mọi push lên main, không cần secret:
| Job | Làm gì |
|---|---|
verify |
Node 22, pnpm install --frozen-lockfile, pnpm typecheck, pnpm test, pnpm lint (đều chặn merge) |
integration |
Dựng PostgreSQL 16, áp dụng pnpm migrate lên database trống (đồng thời chứng minh cài mới hoạt động), rồi chạy pnpm test:integration |
Chính sách bảo mật
Bản 1.x mới nhất được vá bảo mật; các bản trước 1.0 không được hỗ trợ. Đừng mở issue công khai cho lỗ hổng. Báo riêng tư tại https://github.com/kdigivn/kdigi-cms-open/security/advisories/new và nêu:
- phiên bản hoặc commit, cách bạn chạy (Docker, VPS, Coolify…);
- mô tả lỗi và tác động (kẻ tấn công đọc, sửa hoặc chạy được gì);
- các bước tái hiện hoặc proof of concept;
- đề xuất sửa nếu có.
Dự án cam kết xác nhận trong 3 ngày làm việc, cập nhật trạng thái trong 10 ngày làm việc, ghi công người báo trong ghi chú phát hành trừ khi bạn yêu cầu không, và nhắm tới vá trong tối đa 90 ngày trước khi công bố.
Các vùng được quan tâm đặc biệt: cách ly dữ liệu giữa các site, rò rỉ bí mật (thông tin lưu trữ và API key), SSRF ở các tính năng tải từ máy chủ (media/from-url, importer WordPress), bypass kiểm soát lạm dụng ở endpoint công khai (bình luận, đánh giá), và XSS lưu trữ qua nội dung Markdown đã render. Ngoài phạm vi: lỗ hổng thư viện bên thứ ba không có tác động chứng minh được, kỹ thuật xã hội, tấn công từ chối dịch vụ bằng lưu lượng, và sự cố cần tài khoản super-admin bị chiếm (vai trò này được tin cậy theo thiết kế).
Nếu bạn vận hành, hãy theo phần bảo mật trong hướng dẫn tự host và thực hành bảo mật, phân quyền.
Quy tắc ứng xử và cộng đồng
Dự án áp dụng Contributor Covenant 2.1 cho mọi không gian của dự án (issue, pull request, thảo luận, chat và sự kiện). Kênh chính thức là GitHub: Issues cho lỗi và đề xuất; cấu hình mẫu issue tắt issue trống và dẫn bạn tới tài liệu cùng kênh báo bảo mật riêng. Bạn có thể thử sản phẩm ngay ở bản demo trước khi tham gia.
Lộ trình
Repo hiện không có tài liệu roadmap riêng, và mục Unreleased trong CHANGELOG đang trống. Lịch sử thay đổi đã phát hành (1.0.0, 1.0.1, 1.1.0) nằm ở trang Phát hành. Muốn đề xuất tính năng, hãy mở issue bằng mẫu feature request. Chúng tôi chỉ nêu trên website những gì đã có trong phiên bản phát hành.
Nguồn
- Repo, LICENSE, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT: https://github.com/kdigivn/kdigi-cms-open
- MIT License (văn bản chuẩn của Open Source Initiative): https://opensource.org/license/mit
- Contributor Covenant 2.1: https://www.contributor-covenant.org/version/2/1/code_of_conduct/
- Tài liệu sản phẩm: https://docs.opencms.kdigi.vn/
Câu hỏi thường gặp
KDIGI CMS dùng giấy phép mã nguồn mở nào?
Tôi có được dùng KDIGI CMS cho khách hàng của agency không?
Làm sao đóng góp mã cho KDIGI CMS?
Phát hiện lỗ hổng bảo mật thì báo ở đâu?
Dự án có lộ trình (roadmap) công khai không?
Đọc tiếp
Phát hành
Danh sách các phiên bản KDIGI CMS: tính năng mới, sửa lỗi và thay đổi quan trọng, lấy trực tiếp từ CHANGELOG của dự án, cập nhật theo từng bản phát hành.
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.
Demo
Đăng nhập demo KDIGI CMS bằng tài khoản có sẵn, thử soạn bài, SEO, media và phân quyền. Dữ liệu demo được đặt lại hằng đêm, có giới hạn sandbox.
KDIGI CMS vs WordPress: nên chọn cái nào?
So sánh KDIGI CMS và WordPress về kiến trúc, bảo mật, SEO, plugin, chi phí và công sức chuyển đổi. Có bảng, nguồn dẫn và khi nào nên ở lại WordPress.