Trong một so sánh gitea so với forgejo so với onedev, bạn đang xem xét ba công cụ trả lời cho hai câu hỏi khác nhau. Gitea và Forgejo là các máy chủ git gắn thêm quản lý dự án. OneDev là một nền tảng quản lý dự án và CI mà tình cờ lưu trữ git rất tốt. Vì vậy quyết định không phải là "cái nào trong ba cái này tốt nhất". Đó là "tôi muốn một máy chủ git nhỏ gọn, hay một nền tảng tất cả trong một, và tôi có đủ khả năng chi trả lượng RAM mà giải pháp tất cả trong một tốn không?"
Phần cuối đó chính là điểm mấu chốt gây tranh cãi. OneDev làm được nhiều thứ hơn ngay khi cài đặt, và thử nghiệm của nodatools.com đo được mức RAM nghỉ của nó cao gấp khoảng 3 lần so với một bản cài Forgejo trần trụi, điều này trên một VPS nhỏ có thể khiến hóa đơn hàng tháng của bạn tăng gấp đôi. Sự đánh đổi đó chính là toàn bộ vấn đề. (Và không, GitLab không nằm trong so sánh này. Nếu bạn muốn mức tiêu tốn tài nguyên kiểu GitLab, bạn đã không đọc bài về ba công cụ này.)
Tôi đã chạy cả ba. Dưới đây là những điều thực sự quan trọng khi bạn chọn một trong số này cho một đội nhóm: sự khác biệt về quản trị và giấy phép phân biệt Gitea với Forgejo, các tính năng biện minh cho sự tồn tại của OneDev, các con số RAM đã được kiểm chứng, và một lời khuyên thẳng thắn "chọn cái này nếu..." cho từng cái.
Tóm tắt nhanh
- Muốn một git server gọn nhẹ với CI kiểu Actions? Gitea hoặc Forgejo. Chọn Gitea nếu khả năng tương thích GitHub Actions gần hơn là điều quan trọng; chọn Forgejo nếu cú pháp workflow giống GitHub kèm một vài điều chỉnh khi di chuyển là chấp nhận được.
- Quan tâm đến quản trị phi lợi nhuận hay giấy phép copyleft? Forgejo. Đây là bản fork được quản trị bởi cộng đồng, và là lựa chọn mặc định của tôi cho hầu hết các đội nhóm.
- Muốn giấy phép MIT, cộng đồng forge lớn nhất, hoặc gói Enterprise trả phí có SLA/SSO? Gitea.
- Muốn quản lý dự án tích hợp sẵn, CI đi kèm, và code intelligence trong một lần cài đặt, và có dư RAM để đáp ứng? OneDev. Chỉ cần biết rằng nó cần tối thiểu khoảng 4 GB trong khi Forgejo chỉ cần 1 GB là đủ.
Kết luận nhanh: Với hầu hết các đội nhóm, Forgejo là lựa chọn mặc định gọn nhẹ hợp lý: cùng nền tảng cốt lõi với Gitea, quản trị rõ ràng hơn, và Forgejo Actions với cú pháp workflow giống GitHub. Chỉ chọn OneDev khi bạn thực sự muốn trải nghiệm PM cộng CI tích hợp trong một khối và bạn không phải di chuyển một loạt workflow GitHub Actions hiện có.
Hai câu hỏi mà ba công cụ này trả lời

OneDev chạy daemon build CI của nó bên trong chính process OneDev, nên không có runner riêng biệt nào cần triển khai. Gitea và Forgejo làm ngược lại: máy chủ git là một thứ, và bạn triển khai một CI runner như một process riêng biệt bên cạnh nó. Chính chi tiết kiến trúc đơn giản này cho thấy mỗi công cụ tự nhìn nhận bản thân như thế nào.
Gitea và Forgejo ưu tiên git trước tiên. Repository, pull request và code review là cốt lõi; issue và kanban là các tiện ích bổ sung hữu ích; CI là thứ bạn gắn thêm vào. Toàn bộ hệ thống được xây dựng xoay quanh việc lưu trữ git và không cản đường bạn. Đó là lý do chúng nhỏ gọn, nhanh và rẻ để vận hành.
OneDev được xây dựng theo hướng ngược lại. Đó là một nền tảng quản lý dự án và CI/CD, nơi lưu trữ git là một thành phần hạng nhất nhưng không phải là nguyên tắc tổ chức. Các bảng kanban được tự động hóa, CI được tích hợp sẵn, trí tuệ mã nguồn được xây dựng sẵn, và nó kỳ vọng trở thành nơi đội nhóm của bạn làm việc hàng ngày, chứ không chỉ là nơi mã nguồn của bạn nằm. Đó là một sản phẩm thực sự khác biệt, đó là lý do so sánh nó với Gitea về "ai lưu trữ git tốt hơn" là bỏ lỡ trọng điểm. Chúng lưu trữ git tốt gần như ngang nhau. OneDev chỉ muốn làm nhiều hơn thế, và nó tính phí bạn bằng tài nguyên cho đặc quyền đó.
Mọi thứ tiếp theo đều bắt nguồn từ sự phân nhánh này. Lựa chọn Gitea so với Forgejo là một quyết định phụ trong nhánh "forge nhẹ". Câu hỏi "OneDev có đáng dùng không" là một nhánh hoàn toàn khác.
Gitea so với Forgejo: Quyết định giữa hai lựa chọn gần như song sinh

Cả hai đều dùng khoảng 180-350 MB RAM, chia sẻ chung một codebase cho đến điểm phân nhánh, và đều lưu trữ git cốt lõi theo cùng một cách. Với repository, pull request, code review, issue và CI kiểu Actions, bạn sẽ khó tìm thấy khác biệt đáng kể trong sử dụng hàng ngày trừ khi bạn đang di chuyển các workflow GitHub Actions hiện có. Vậy hãy nói rõ ngay từ đầu: đây không phải là cuộc đua tính năng. Khoảng cách giữa onedev và gitea là rất lớn; khoảng cách giữa gitea và forgejo nằm ở việc ai kiểm soát dự án và nó phát hành dưới giấy phép nào.
Đây là bối cảnh bạn thực sự cần biết. Vào tháng 10 năm 2022, tên miền và thương hiệu Gitea trở thành trung tâm của một tranh chấp về quản trị, và Forgejo ra đời để đáp lại. Forgejo hiện thuộc về Codeberg e.V., một tổ chức phi lợi nhuận tại Đức, và phát hành dưới GPL-3.0. Gitea vẫn giữ giấy phép MIT và có một phiên bản tự lưu trữ mã nguồn mở miễn phí, trong khi CommitGo bán Gitea Enterprise song song với nó. Forgejo mô tả sự sắp xếp đó là Open Core; Gitea/CommitGo phản đối cách gọi này và cho rằng bản thân dự án mã nguồn mở Gitea không chứa mã độc quyền. Đối với độc giả, sự khác biệt thực tế đơn giản hơn nhiều so với những tranh cãi chính trị nội bộ: Forgejo tối ưu cho mô hình quản trị phi lợi nhuận, copyleft, hoàn toàn miễn phí; Gitea cung cấp phần lõi MIT phóng khoáng cùng một hướng đi Enterprise được hậu thuẫn bởi nhà cung cấp.
Ba điều kéo theo từ đó, và mỗi điều đều ảnh hưởng đến quyết định của bạn:
- Giấy phép. GPL-3.0 copyleft (Forgejo) nghĩa là nếu bạn chỉnh sửa Forgejo và phân phối phiên bản đã sửa đổi, bạn phải chia sẻ các thay đổi của mình theo GPL. MIT (Gitea) không yêu cầu điều đó. Với hầu hết các đội nhóm chạy một instance không chỉnh sửa nội bộ, điều này không bao giờ phát sinh. Nhưng nếu bạn xây dựng thêm trên forge và phát hành nó, điều này lại quan trọng.
- Công bố bảo mật. Forgejo thông báo cho tất cả mọi người về các khuyến cáo bảo mật qua các kênh công khai. Gitea dành thông báo bảo mật sớm cho khách hàng Enterprise trả phí, nghĩa là quản trị viên self-hosted ở gói miễn phí có thể bị phơi bày trước một lỗ hổng đã biết lâu hơn so với khách hàng trả phí. Nếu bạn đang chạy phiên bản miễn phí, sự bất cân xứng đó đáng để biết.
- Một bên có tồn tại gói trả phí. Gitea có một phiên bản Enterprise thương mại ($9.50-$19/người dùng/tháng) bổ sung SSO, audit log, hỗ trợ ưu tiên và SLA. Forgejo không có gói trả phí, mọi tính năng đều nằm trong bản GPL miễn phí.
Nếu hôm nay bạn đang dùng Gitea và điều này thúc đẩy bạn chuyển sang Forgejo, tin tốt là có một lộ trình di chuyển được hỗ trợ (với một ngưỡng phiên bản ở Gitea 1.22 đáng để hiểu rõ trước khi bắt đầu). Tôi đã viết riêng về điều đó, xem hướng dẫn di chuyển đầy đủ từng bước để xem chi tiết theo từng phiên bản. Nếu bạn đang rời GitHub và chưa chọn được forge nào, đó là một quyết định riêng với những đánh đổi riêng, đáng để cân nhắc theo cách riêng của nó.
Điểm chính của phần này: về khả năng lưu trữ git cốt lõi, Gitea và Forgejo ngang tài ngang sức. Chọn Forgejo nếu bạn muốn quyền sở hữu phi lợi nhuận, giấy phép copyleft, và công bố bảo mật công khai. Chọn Gitea nếu bạn muốn giấy phép MIT, cộng đồng lớn hơn, hoặc gói Enterprise thương mại.
OneDev thực sự khác biệt ở đâu
Chạy OneDev (16.0.1 tại thời điểm viết bài) trong một ngày và điều đầu tiên bạn nhận ra là bạn chưa bao giờ phải triển khai CI runner. Trình nền build nằm ngay trong server OneDev, nên CI hoạt động ngay khi nền tảng khởi chạy. Bạn có thể xây dựng pipeline trong GUI mà không cần viết một dòng YAML nào, debug một job qua terminal trên web, và kiểm thử một bản build với các thay đổi cục bộ chưa commit trước cả khi push. Đây là một sự đơn giản hóa vận hành thực sự so với điệu nhảy "cài server, rồi cài và đăng ký một runner riêng" mà Gitea và Forgejo yêu cầu.
Điểm mắc kẹt, và đó là một điểm lớn đối với các nhóm đã có sẵn hạ tầng, là OneDev dùng một biến thể YAML riêng của nó. Nó không phải tương thích GitHub Actions. Mọi workflow bạn đã viết cho GitHub, Gitea hoặc Forgejo đều phải được viết lại để chạy trên OneDev. Nếu bạn có cả một loạt tệp .github/workflows đang phụ thuộc vào, đó là một chi phí di chuyển thực sự, không phải chuyện nhỏ. Gitea và Forgejo đều kế thừa hệ sinh thái GitHub Actions, nhưng không kế thừa theo cùng một cách. Gitea Actions được thiết kế để thay thế trực tiếp GitHub Actions, nên hầu hết workflow chuyển sang mà không cần thay đổi. Runner của Forgejo tương thích trên thực tế nhưng có những khoảng trống đã được ghi nhận: thiếu subkey permissions, continue-on-error bị bỏ qua, cú pháp OIDC khác. Hãy kiểm tra những điều đó trước khi cho rằng có thể chuyển đổi hoàn toàn.
Điều thứ hai mà OneDev làm được mà các forge nhỏ hơn thì không: code intelligence ngay trong giao diện web. Tìm kiếm symbol, chuyển đến định nghĩa, và tìm tham chiếu hoạt động trên nhiều ngôn ngữ (danh sách chính thức bao gồm Java, JavaScript, C, C++, C#, Go, PHP, và Python) mà không cần clone repo về máy. Gitea và Forgejo không có gì tương đương tích hợp sẵn, nên bạn sẽ phải tìm đến công cụ bên ngoài. Nếu nhóm bạn review code nhiều ngay trên trình duyệt, đây thực sự là một điểm cộng đáng giá.
Bổ sung thêm bảng kanban tự động hoàn toàn (di chuyển task theo quy tắc, trạng thái và trường tùy chỉnh, quy tắc chuyển trạng thái), một service desk biến email gửi đến thành issue mà người gửi không cần có tài khoản, và các issue bảo mật bên trong project công khai, bạn sẽ hình dung được: OneDev đang cố trở thành công cụ theo dõi issue, hệ thống CI, trình duyệt code, và bảng project của bạn cùng một lúc.
Có một điểm cần làm rõ về registry gói. OneDev có một registry tích hợp sẵn; phần đó thì rõ ràng. hướng dẫn về package liệt kê Docker, npm, NuGet, Maven, PyPI, và RubyGems, trong khi nội dung sản phẩm hiện tại còn nhắc đến Helm. Gitea và Forgejo vẫn bao phủ một tập hợp định dạng gói rộng hơn nhiều, bao gồm Alpine, Arch, Cargo, Composer, Conan, Conda, Debian, Go, Helm, Maven, npm, NuGet, PyPI, RPM, RubyGems, Swift, Vagrant, và nhiều hơn nữa. Nếu nhóm bạn phụ thuộc vào các định dạng gói nằm ngoài tập registry hẹp hơn của OneDev, Gitea hoặc Forgejo là lựa chọn an toàn hơn.
Điểm chính của phần này: OneDev mang lại cho bạn CI tích hợp sẵn, code intelligence, và một bộ công cụ PM đầy đủ chỉ trong một lần cài đặt. Đổi lại, bạn phải viết lại mọi workflow GitHub Actions, chấp nhận một hệ sinh thái nhỏ hơn, và (như phần tiếp theo sẽ đề cập) cấp cho nó nhiều RAM hơn hẳn.
Chi phí tài nguyên: mỗi công cụ thực sự cần gì

Con số quyết định toàn bộ phép so sánh này đối với nhiều nhóm đến từ thử nghiệm của nodatools.com: OneDev ở trạng thái nghỉ tiêu tốn khoảng 600 MB RAM trong khi Forgejo chỉ khoảng 180 MB. Đó là hơn 3 lần, và con số này còn tăng thêm khi có tải. Đây là các số liệu thử nghiệm của họ từ nodatools.com's measured comparison, chạy trên một VPS mới:
| Công cụ | Phiên bản hiện tại | RAM khi rảnh (đã kiểm tra) | RAM hoạt động khi có tải (đã kiểm tra) | Tối thiểu chính thức |
|---|---|---|---|---|
| Forgejo | v15.0.3 LTS | ~180 MB | ~320 MB | 512 MB |
| Gitea | 1.26.4 | ~200 MB | ~350 MB | 512 MB |
| OneDev | 16.0.1 | ~600 MB | ~950 MB | 2 GB |
Vì sao có khoảng cách này? OneDev được viết chủ yếu bằng Java, nên JVM mang theo chi phí heap mà Gitea và Forgejo dựa trên Go đơn giản là không có. Thêm vào đó, OneDev lập chỉ mục code cho các tính năng thông minh của nó, và việc lập chỉ mục ban đầu này rất ngốn RAM. Khi tôi lần đầu dựng nó lên, đợt tăng vọt RAM lúc khởi động là phần đáng sợ nhất, và đó không phải là trạng thái ổn định.
Mẹo nhỏ: đừng hoảng khi thấy mức RAM khởi động của OneDev. Nó có thể tăng vọt ngay sau khi khởi động trong lúc JVM khởi động và chỉ mục code ban đầu được xây dựng, rồi giảm dần về mức nghỉ khi mọi thứ ổn định. Tuy vậy, hãy tính toán theo con số thực tế khi hoạt động, không phải mức nghỉ. Khi CI đang chạy job liên tục, hãy dự trù ổn định 1-2 GB. Mức tối thiểu chính thức 2 GB không phải ngẫu nhiên.
Về mặt kích thước, điều đó chuyển thành các gói VPS rõ ràng:
- Forgejo hoặc Gitea, cài đặt cơ bản, không có CI runner trên máy: 1 GB RAM / 1 vCPU is comfortable.
- Forgejo hoặc Gitea kèm CI runner trên cùng một máy chủ: tăng lên 4 GB RAM / 2 vCPU để runner có đủ không gian hoạt động.
- OneDev, cài đặt cơ bản: 4 GB RAM is the practical floor. Go to 8 GB if code indexing is heavy or CI is busy.
Vậy nên khoảng chênh lệch chi phí không hề nhỏ. Một git server gọn nhẹ chạy tốt trên máy 1 GB so với một instance OneDev cần 4 GB gần như gấp đôi hóa đơn VPS hàng tháng của bạn. Với một lập trình viên cá nhân hay một nhóm nhỏ, đó là sự khác biệt giữa "gần như chạy miễn phí" và một khoản chi phí bạn sẽ để ý thấy. Với một nhóm lớn hơn, dùng CI và PM tích hợp sẵn mỗi ngày, khoản đó hoàn toàn có thể xứng đáng. Nhưng đây là một sự đánh đổi thực sự: chi phí phát sinh của OneDev chính là JVM, và cái giá đó đổi lấy những gì JVM vận hành.
Gitea, Forgejo, và OneDev đều là các bản triển khai chỉ với một cú nhấp chuột trong Marketplace của Cloudzy, vì vậy khi đã xác định đúng kích thước, dựng một forge chỉ mất vài phút thay vì cả buổi chiều vật lộn với Docker. Nếu bạn chạy CI runner hoặc chức năng lập chỉ mục mã nguồn của OneDev, phần dư ra thêm nằm ở một Linux VPS có quyền root, để bạn có thể tự điều chỉnh heap của JVM và mức độ đồng thời của runner.
Một lưu ý riêng của Cloudzy: các thẻ ứng dụng trên Marketplace hiện khởi động Gitea, Forgejo và OneDev ở mức 2 GB RAM. Khuyến nghị 1 GB ở trên áp dụng cho các bản cài đặt thủ công gọn nhẹ không có CI runner cục bộ. Nếu bạn triển khai qua Cloudzy Marketplace, hãy làm theo mức tối thiểu trên thẻ ứng dụng để hệ điều hành, cơ sở dữ liệu, cập nhật gói và các dịch vụ nền có đủ không gian hoạt động.
Bạn nên chọn cái nào?
Bạn đã xem bảng so sánh và các đánh đổi, vậy đây là nhận định thẳng thắn của tôi cho từng đối tượng độc giả, dựa trên kinh nghiệm chạy cả ba công cụ.
Chọn Forgejo nếu bạn muốn một forge gọn nhẹ, do cộng đồng quản trị, có CI kiểu Actions, và có thể chấp nhận vài khác biệt nhỏ trong workflow so với GitHub Actions. Đây là lựa chọn mặc định tôi khuyên hầu hết các nhóm. Bạn có được khả năng lưu trữ git cốt lõi giống Gitea, quyền sở hữu phi lợi nhuận rõ ràng hơn, công bố bảo mật công khai, giấy phép copyleft, và mức tiêu tốn RAM nhẹ nhất trong ba công cụ. Nếu bạn không có lý do cụ thể nào để chọn một trong hai công cụ còn lại, hãy chọn cái này.
Chọn Gitea nếu bạn cụ thể muốn giấy phép MIT (phóng khoáng hơn GPL-3.0 của Forgejo), cộng đồng và hệ sinh thái forge lớn nhất, hoặc gói Enterprise thương mại có SSO, nhật ký audit, và SLA. Về khả năng lưu trữ git thuần túy thì ngang bằng với Forgejo, nên bạn đang chọn dựa trên sở thích về giấy phép và quyền sở hữu, cộng thêm lựa chọn hỗ trợ trả phí nếu tổ chức của bạn cần một nhà cung cấp để liên hệ khi cần.
Chọn OneDev nếu bạn muốn quản lý dự án tích hợp sẵn, CI đi kèm, và code intelligence trong một lần cài đặt, bạn đang bắt đầu từ đầu (không có workflow GitHub Actions nào cần di chuyển), và bạn có đủ ngân sách RAM cho một máy từ 4 GB trở lên. Quyết định giữa Forgejo và OneDev thực chất quy về câu hỏi này: bạn đang mua một git server, hay một nền tảng? Nếu câu trả lời là "nền tảng, và tôi không muốn tự lắp ghép CI vào", thì OneDev xứng đáng với chi phí phát sinh của nó.
Một yếu tố quyết định dễ bị bỏ qua: không có lộ trình di chuyển giữa nhóm Gitea/Forgejo và OneDev. Mô hình dữ liệu khác, định dạng CI khác, schema khác. Nếu bạn bắt đầu với Forgejo rồi sau đó quyết định muốn dùng OneDev (hoặc ngược lại), bạn sẽ phải thực hiện một cuộc chuyển đổi dựa trên API, từng repo một, làm mất lịch sử CI và dữ liệu quản lý dự án của bạn. Vì vậy nếu cách tiếp cận tất cả trong một của OneDev hấp dẫn bạn dù chỉ một chút, bắt đầu ngay từ đó rẻ hơn nhiều so với chuyển sang sau này. Giữa Gitea và Forgejo, việc di chuyển thì có tồn tại (đó là hướng đi di chuyển đã đề cập ở trên), nhưng việc vượt qua ranh giới từ một forge gọn nhẹ sang OneDev là một chuyến đi một chiều và có mất mát. Hãy tính đến điều này ngay từ bây giờ, chứ không phải sau mười tám tháng nữa.
Câu hỏi thường gặp
Gitea vẫn còn là mã nguồn mở không?
Có. Phần cốt lõi của Gitea dùng giấy phép MIT và miễn phí để tự lưu trữ với số lượng người dùng và repository không giới hạn. Lưu ý thực tế nằm ở khía cạnh quản trị, không phải khả năng truy cập mã nguồn: Gitea do một công ty kiểm soát và có gói Enterprise được hậu thuẫn bởi nhà cung cấp thông qua CommitGo, trong khi Forgejo là bản fork do cộng đồng quản trị, dùng giấy phép GPL, thuộc Codeberg e.V. Forgejo mô tả mô hình thương mại của Gitea là Open Core; Gitea/CommitGo phản đối nhãn đó và cho rằng bản thân dự án mã nguồn mở không chứa mã độc quyền. Vậy nên Gitea vẫn là mã nguồn mở, nhưng không được quản trị theo cộng đồng theo cách mà Forgejo đang làm.
Forgejo có tốt hơn Gitea không?
Về lưu trữ git cốt lõi, chúng gần như giống hệt nhau: Forgejo được fork từ Gitea và dùng chung nền tảng. Forgejo khác biệt ở quản trị (tổ chức phi lợi nhuận Codeberg e.V.), giấy phép (GPL-3.0 copyleft so với MIT của Gitea), và công bố bảo mật (công khai cho tất cả mọi người, so với chính sách ưu tiên khách hàng Enterprise của Gitea). "Tốt hơn" phụ thuộc vào việc những điều đó có quan trọng với bạn hay không; chỉ xét về tính năng thì đây là một trận hòa.
OneDev cần bao nhiêu RAM?
Mức tối thiểu chính thức của OneDev là 2 GB RAM. Trong thử nghiệm của nodatools.com, nó dùng khoảng 600 MB khi rảnh và đạt xấp xỉ 950 MB khi có tải. Lúc khởi động có thể cao hơn trong khi JVM khởi động và lập chỉ mục hoàn tất, nhưng khi CI đang chạy thực sự bạn nên dự trù ổn định 1-2 GB. Để so sánh, cùng thử nghiệm đó cho thấy Forgejo và Gitea ở mức khoảng 180-200 MB khi rảnh.
Tôi có thể di chuyển từ Gitea sang OneDev, hoặc từ OneDev sang Forgejo không?
Không tồn tại lộ trình di chuyển trực tiếp giữa nhóm Gitea/Forgejo và OneDev. Chúng sử dụng mô hình dữ liệu, định dạng CI và schema khác nhau, nên việc chuyển đổi sẽ đòi hỏi một cuộc di chuyển dựa trên API, từng repo một, làm mất lịch sử CI và quản lý dự án. Việc di chuyển giữa Gitea và Forgejo thì có tồn tại (xem hướng dẫn di chuyển từ Gitea sang Forgejo của chúng tôi, vì chúng có chung nguồn gốc.
OneDev có hỗ trợ GitHub Actions không?
Không. OneDev sử dụng phương ngữ YAML riêng của nó cộng với một trình soạn thảo pipeline dạng GUI, nên các workflow viết cho GitHub, Gitea hoặc Forgejo phải được viết lại để chạy trên đó. Gitea Actions được thiết kế như một giải pháp thay thế trực tiếp, nên hầu hết workflow hiện có chạy được mà không cần thay đổi. Runner của Forgejo tương thích trên thực tế nhưng không được thiết kế để sao chép chính xác GitHub Actions; hãy kiểm tra tài liệu chính thức của Forgejo để biết các điểm không tương thích đã ghi nhận trước khi cho rằng có thể chuyển đổi hoàn toàn.