Hướng dẫn cài đặt Forgejo: Giải pháp Git self-hosted ‘nhẹ cân’ và bảo mật hơn Gitea

Git tutorial - IT technology blog
Git tutorial - IT technology blog

Vấn đề: Khi GitHub và GitLab không còn là lựa chọn duy nhất

Bạn muốn quản lý code nội bộ cho team nhưng lại ngại chi phí đỏ đỏ của GitHub Enterprise? Hay bạn từng nếm mùi đau khổ khi cài GitLab lên con VPS 2GB RAM rồi nhìn hệ thống treo cứng vì ngốn tài nguyên? Bản thân mình từng kẹt trong thế khó này khi startup bắt đầu cần bảo mật dữ liệu khắt khe hơn, nhưng ngân sách cho hạ tầng thì không hề dư dả.

Gitea từng là ngôi sao sáng nhất trong làng Git self-hosted nhờ sự gọn nhẹ. Tuy nhiên, từ khi dự án này rục rịch chuyển sang mô hình thương mại hóa, cộng đồng đã quyết định “dứt áo ra đi”. Họ tạo ra Forgejo – một bản fork hoàn toàn mở, tập trung vào tính minh bạch. Nếu bạn đã quen dùng Gitea, việc chuyển sang Forgejo giống như khoác lên mình một chiếc áo mới nhưng mang lại cảm giác an tâm hơn nhiều.

Lúc bắt đầu tìm giải pháp, mình đã thử quăng Forgejo lên một con VPS “nát” nhất có thể. Kết quả thực sự gây sốc về hiệu năng. Dưới đây là những kinh nghiệm xương máu mình rút ra khi triển khai hệ thống này.

Khái niệm cốt lõi về Forgejo

Forgejo là gì?

Forgejo (phát âm là /for-‘dʒe-jo/) là nền tảng quản lý Git tự vận hành (self-hosted). Nó kế thừa 100% mã nguồn của Gitea nhưng được dẫn dắt bởi cộng đồng thay vì mục tiêu lợi nhuận. Forgejo ra đời để đảm bảo không một tổ chức nào có thể chi phối hay bóp nghẹt hướng phát triển của phần mềm tự do này.

Tại sao nên chọn Forgejo thay vì Gitea hay GitLab?

  • Ăn cực ít RAM: Bạn có thể chạy Forgejo mượt mà trên Raspberry Pi. Thực tế, ở trạng thái nghỉ, nó chỉ tiêu tốn khoảng 60-100MB RAM, thấp hơn 10 lần so với GitLab.
  • Triển khai trong tích tắc: Chỉ cần một file thực thi hoặc một container Docker là xong chuyện.
  • Giao diện quen thuộc: Layout cực giống GitHub. Các bạn junior trong team mình chẳng mất đến 5 phút để làm quen và bắt đầu push code.
  • Nói không với tracking: Forgejo loại bỏ hoàn toàn các đoạn mã theo dõi hành vi người dùng thường thấy ở các bản thương mại và ưu tiên vá lỗi bảo mật cực nhanh.

Thực hành: Cài đặt Forgejo với Docker Compose

Dùng Docker là con đường ngắn nhất và sạch sẽ nhất. Bạn sẽ không phải vật lộn với việc cài database hay cấu hình môi trường lằng nhằng trên hệ điều hành.

1. Chuẩn bị môi trường

Bạn cần một server chạy Ubuntu đã cài sẵn Docker. Nếu server vẫn còn “trắng tinh”, hãy chạy nhanh các lệnh này:

sudo apt update
sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker

2. Tạo file cấu hình Docker Compose

Hãy gom mọi thứ vào một thư mục để sau này dễ backup:

mkdir forgejo-server && cd forgejo-server
nano docker-compose.yml

Dán đoạn mã dưới đây vào file. Mình dùng SQLite cho gọn. Nếu team bạn đông (tầm 50 người trở lên), hãy đổi sang PostgreSQL để gánh tải tốt hơn.

version: "3"

networks:
  forgejo:
    external: false

services:
  server:
    image: codeberg.org/forgejo/forgejo:latest
    container_name: forgejo
    restart: always
    networks:
      - forgejo
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:22"
    environment:
      - USER_UID=1000
      - USER_GID=1000

Mẹo nhỏ: Mình đẩy cổng SSH Git về 2222. Việc này giúp tránh đụng hàng với cổng 22 mặc định bạn dùng để remote vào server.

3. Khởi chạy Forgejo

Kích hoạt server bằng một lệnh duy nhất:

docker-compose up -d

Bây giờ, hãy mở trình duyệt và gõ: http://IP-SERVER-CUA-BAN:3000. Màn hình chào đón của Forgejo sẽ hiện ra ngay lập tức.

4. Cấu hình nhanh qua giao diện Web

Ở bước này, bạn chỉ cần lưu ý vài chỗ quan trọng:

  • Database Type: Giữ nguyên SQLite3 cho dự án nhỏ.
  • Server Domain: Điền IP hoặc domain (ví dụ: git.lab-cua-toi.com).
  • SSH Port: Nhập 2222 (khớp với file Docker bên trên).
  • Tài khoản Admin: Hãy tạo ngay ở bước này. Nếu bạn bỏ trống, người đầu tiên đăng ký trên web sẽ nghiễm nhiên trở thành admin đấy!

Kinh nghiệm thực tế: Áp dụng Git Flow trên Forgejo

Với team 8 người của mình, việc chuyển sang Forgejo giúp giảm đến 60% các vụ xung đột code (merge conflict) ngớ ngẩn. Bí kíp nằm ở tính năng Protected Branches.

Mình khóa chặt nhánh main, không cho phép ai đẩy code thẳng vào đó. Mọi thay đổi đều phải qua Pull Request (PR). Giao diện PR của Forgejo rất thoáng, cho phép review và comment trực tiếp trên từng dòng code. Nhờ vậy, các buổi code review online trở nên hiệu quả hơn hẳn, junior cũng tiến bộ nhanh hơn.

Quy trình chuẩn mà team mình đang chạy:

  1. Tách nhánh feature/tính-năng-mới từ develop.
  2. Code xong thì mở PR hướng về develop.
  3. Ít nhất một người khác vào review và nhấn Approve.
  4. Merge vào develop để kiểm thử.

Điểm cộng lớn là Forgejo tích hợp sẵn Issue Tracker và Wiki cực kỳ xịn xò. Bạn không cần phải cài thêm bất kỳ plugin rắc rối nào mà vẫn quản lý công việc trơn tru.

Kết luận

Tự dựng một Git server riêng không hề khó như lời đồn. Forgejo không chỉ giúp bạn tiết kiệm tài nguyên mà còn mang lại quyền kiểm soát tuyệt đối với tài sản trí tuệ của mình. Với các startup hay dân DevOps, việc tự vận hành một Forgejo instance là bài tập thực hành không thể tốt hơn để hiểu sâu về Docker và quản lý mã nguồn.

Nếu bạn đang tìm kiếm sự cân bằng hoàn hảo giữa tính năng và tốc độ, Forgejo chính là bến đỗ an toàn nhất hiện nay. Đừng chần chừ nữa, hãy thử cài đặt ngay, bạn sẽ tự hỏi tại sao mình không biết đến nó sớm hơn!

Share: