GitGres: Giải pháp thay thế GitHub riêng tư chạy hoàn toàn trên PostgreSQL

01 tháng 5, 2026·3 phút đọc

GitGres là một dự án mã nguồn mở nhằm tạo ra phiên bản GitHub riêng tư, tối ưu hóa cho các nhóm hoặc tác nhân AI, với toàn bộ dữ liệu được lưu trữ trên PostgreSQL. Công cụ này cho phép người dùng kiểm soát chi phí, độ trễ và tính nhất quán mà không cần lưu trữ tệp tin trên ổ đĩa máy chủ. Nó tương thích với các lệnh git chuẩn và GitHub CLI (gh).

GitGres: Giải pháp thay thế GitHub riêng tư chạy hoàn toàn trên PostgreSQL

GitGres là một điểm khởi đầu cho việc tái hiện lại GitHub dưới dạng phiên bản riêng tư, được tối ưu hóa đặc biệt cho nhu cầu của các nhóm phát triển hoặc các tác nhân (agents) tự động. Mặc dù GitHub là nền tảng tuyệt vời để chia sẻ mã nguồn cộng đồng, GitGres ra đời để giải quyết một số vấn đề cụ thể liên quan đến hiệu suất, chi phí và kiểm soát hạ tầng.

Đánh đổi hiệu suất và cấu hình

Dự án này tập trung vào việc cung cấp sự linh hoạt trong việc cân bằng giữa ba yếu tố kỹ thuật quan trọng:

  • Chi phí và Uptime: GitHub cung cấp lưu trữ miễn phí nhưng thời gian hoạt động (uptime) đôi khi không ổn định theo ý muốn. Với GitGres, bạn có sự linh hoạt để sử dụng hệ quản trị cơ sở dữ liệu Postgres kết hợp với lưu trữ phân tầng (tiered storage) để tinh chỉnh chi phí trong khi vẫn duy trì khả năng sẵn sàng cao.
  • Độ trễ và Chi phí: Khi sử dụng GitHub, bạn bị phụ thuộc vào tải hệ thống hiện tại của họ. GitGres cho phép bạn tự chọn giải pháp cache Postgres yêu thích để kiểm soát độ trễ.
  • Tính nhất quán và Throughput: Là một dịch vụ đám mây, nếu các yêu cầu đến máy chủ của GitHub bị sai thứ tự, các vấn đề về dữ liệu có thể xảy ra. GitGres là một máy chủ được hỗ trợ bởi Postgres, có thể chạy cục bộ hoặc đặt cùng vị trí (colocated) với nhiều tác nhân, giúp tính nhất quán và thông lượng hoàn toàn có thể điều chỉnh.

Kiến trúc "Database-first"

Điểm đặc biệt nhất của GitGres là kiến trúc không sử dụng ổ đĩa để lưu trữ dữ liệu. Mọi thứ — từ các đối tượng git, refs, packfiles, deltas, tokens, cho đến Pull Requests, issues, comments, reviews, reactions, teams, organizations và events — đều sống dưới dạng các hàng (rows) trong cơ sở dữ liệu Postgres. Máy chủ GitGres không lưu giữ bất kỳ tệp tin nào trên đĩa cứng vật lý.

Cài đặt và sử dụng

GitGres được viết bằng Rust và yêu cầu người dùng có một cơ sở dữ liệu Postgres đang hoạt động. Quy trình cài đặt bao gồm biên dịch binary, thiết lập chuỗi kết nối DB và khởi động server với một token bootstrap để tạo quản trị viên.

Về cách sử dụng, dự án hỗ trợ nhiều phương thức làm việc quen thuộc:

  • Git thông thường: Hỗ trợ Smart HTTP (v1 và v2), cho phép sử dụng các lệnh git clonegit push như bình thường.
  • GitHub CLI (gh): Người dùng có thể cấu hình gh để làm việc với GitGres. Hầu hết các lệnh phổ biến như gh pr create, gh issue list, gh repo clone đều hoạt động nhờ việc triển khai toàn bộ bề mặt API REST.
  • Remote helper tùy chỉnh: Một phương thức thay thế cho Smart HTTP, cho phép clone trực tiếp thông qua chuỗi kết nối database.

Hạn chế hiện tại

Hiện tại, GitGres vẫn đang trong giai đoạn phát triển sớm và chưa hỗ trợ một số tính năng quan trọng bao gồm: tính năng tìm kiếm (search), Actions/workflows/runs/secrets, SSH transport, webhooks, HTTP/2 và giao diện người dùng trên web (Web UI).

Dự án này là một lựa chọn thú vị cho các đội ngũ kỹ thuật muốn tự chủ hạ tầng Git của mình, tận dụng tính năng mạnh mẽ và khả năng mở rộng của PostgreSQL.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗