Git của riêng bạn: Forgejo hoặc Gitea
Cách dựng máy chủ kho lưu trữ cá nhân với giao diện web, truy cập SSH và các lượt build — và cần sao chép gì để không mất mã nguồn.
Cập nhật 23 tháng 8, 2026
Bạn cần Git riêng khi mã nguồn không được phép rời sang nền tảng của người khác, hoặc khi bạn muốn không giới hạn kho lưu trữ riêng tư và số phút build. Forgejo và Gitea là hai dự án gần như song sinh (Forgejo tách ra từ Gitea); cả hai đều cài trong một container duy nhất và chạy trên một máy khiêm tốn.
Chọn gì và cần bao nhiêu tài nguyên
Công việc hằng ngày gần như không khác gì nhau: giao diện, issue, pull request, mirror, Actions để build. Forgejo do cộng đồng phát triển, Gitea do một công ty. Hãy chọn Forgejo nếu tính độc lập của dự án quan trọng với bạn.
Với hai hoặc ba người, VDS-1 là đủ. Ngay khi bạn thêm runner để build, hãy lấy VDS-3 trở lên: build ngốn CPU và ổ đĩa, mà tốc độ ổ đĩa bị giới hạn theo tier.
Cài đặt qua Compose
services:
forgejo:
image: codeberg.org/forgejo/forgejo:11
container_name: forgejo
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
ports:
- "3000:3000"
- "2222:22"
docker compose up -d
docker compose logs -f forgejo
Mở http://<machine-address>:3000 và thực hiện thiết lập ban đầu. Người dùng đầu tiên được tạo sẽ trở thành quản trị viên.
Bạn không cần mở cổng 3000 ra bên ngoài. Hãy đóng nó lại và đặt một web server có chứng chỉ phía trước dịch vụ — như vậy bạn có HTTPS và không phơi bảng thiết lập cho người ngoài. Cho đến khi thiết lập xong, bất kỳ ai mở địa chỉ đó đều có thể tạo quản trị viên trước.
Truy cập SSH
Cổng 22 bên trong container được chuyển tiếp sang 2222, vì 22 đã bị SSH của hệ thống chiếm. Trong cài đặt kho lưu trữ, địa chỉ sẽ trông như thế này:
git clone ssh://git@example.com:2222/user/repo.git
Nếu bạn muốn địa chỉ quen thuộc git@example.com:user/repo.git không kèm cổng, hãy để 2222 cho container và thiết lập chuyển tiếp trên host qua SSH của hệ thống, hoặc chuyển SSH quản trị sang cổng khác (xem bảo vệ truy cập).
Build
Actions được chạy bởi một runner riêng — container forgejo-runner, đăng ký bằng token từ cài đặt quản trị viên. Chỉ nên cấp cho nó quyền truy cập Docker socket một cách có chủ đích: việc đó tương đương quyền root trên máy. Với build, tốt hơn là giới hạn runner theo bộ nhớ và CPU — xem giới hạn tài nguyên.
Cần sao lưu những gì
Toàn bộ trạng thái nằm trong volume ./data: kho lưu trữ, cơ sở dữ liệu, tệp đính kèm, cấu hình. Sao lưu được thực hiện như sau:
docker compose stop forgejo
restic -r <repository> backup ./data
docker compose start forgejo
Bạn cần dừng dịch vụ nếu nó dùng SQLite — nếu không, bản chụp cơ sở dữ liệu có thể không nhất quán. Với PostgreSQL, chỉ cần pg_dump mà không cần dừng. Để biết thêm chi tiết, xem cần sao lưu chính xác những gì và Restic.
Lỗi thường gặp
- Quên kích thước kho lưu trữ. Build của máy chủ game và media nhanh chóng ngốn hết dung lượng ổ đĩa: 40 GB của tier khởi điểm hết lúc nào không hay.
- Chưa thiết lập email. Không có nó, lời mời và việc đặt lại mật khẩu không hoạt động. Kết nối SMTP bên ngoài dễ hơn là thiết lập mail server riêng.
- Cập nhật mà không sao lưu. Đổi phiên bản major sẽ thay đổi lược đồ cơ sở dữ liệu. Sao lưu trước, rồi mới
docker compose pull— xem cập nhật container.