Quay lại danh sách
Tin tức công nghệ

Tự Host GitHub Riêng Tư Siêu Nhẹ: Hướng Dẫn Cài Đặt Gitea Kết Hợp Drone CI Trên VPS RAM 1GB

28 tháng 5, 2026

Giới thiệu xu hướng Tự Host (Self-hosting) dịch vụ Git

Trong kỷ nguyên số hóa hiện nay, mã nguồn phần mềm không chỉ là tài sản trí tuệ mà còn là cốt lõi vận hành của nhiều doanh nghiệp. Việc phụ thuộc hoàn toàn vào các nền tảng đám mây công cộng như GitHub, GitLab hay Bitbucket đôi khi mang lại những rủi ro tiềm ẩn về chi phí leo thang, thay đổi chính sách bảo mật hoặc thậm chí là nguy cơ rò rỉ dữ liệu. Chính vì vậy, xu hướng Self-hosting (Tự host) đang trở thành lựa chọn hàng đầu cho các lập trình viên tự do, nhóm phát triển nhỏ và doanh nghiệp vừa và nhỏ (SMEs).

Tuy nhiên, một rào cản lớn khi tiếp cận Git Self-hosting là cấu hình phần cứng. Các nền tảng nặng đô như GitLab Enterprise thường yêu cầu tối thiểu 4GB RAM để vận hành ổn định. Bài viết này sẽ mở ra một giải pháp đột phá: Xây dựng hệ thống Git riêng tư siêu nhẹ bằng sự kết hợp giữa Gitea và Drone CI, tối ưu hóa hoàn hảo ngay cả trên một cấu hình cấu hình cực kỳ khiêm tốn – VPS chỉ với RAM 1GB.

Tại sao lại chọn bộ đôi Gitea và Drone CI?

Khi nhắc đến các giải pháp thay thế GitHub hiệu năng cao và tiết kiệm tài nguyên, Gitea và Drone CI là cấu hình tối ưu nhất hiện nay nhờ vào những ưu điểm vượt trội:

  • Gitea - Bản sao GitHub siêu nhẹ: Được viết bằng ngôn ngữ Go, Gitea tiêu tốn cực kỳ ít tài nguyên hệ thống. Một instance Gitea cơ bản chỉ chiếm khoảng 20MB đến 50MB RAM khi ở trạng thái chờ, nhưng vẫn cung cấp đầy đủ giao diện trực quan, quản lý Pull Request, Issue tracker, Wiki và phân quyền tổ chức tương tự như GitHub.
  • Drone CI - Container-Native Cloud Runner: Thay vì kiến trúc cồng kềnh như Jenkins, Drone CI được thiết kế hoàn toàn dựa trên Docker. Mỗi pipeline (quy trình CI/CD) được thực thi trong một container độc lập và tự động hủy sau khi hoàn thành. Drone sử dụng cú pháp YAML rất tương đồng với GitHub Actions, giúp lập trình viên không mất thời gian làm quen lại.
  • Chi phí tối ưu: Với việc vận hành mượt mà trên VPS RAM 1GB (mức giá chỉ khoảng $3 - $5/tháng tại các nhà cung cấp như DigitalOcean, Vultr, Linode hoặc các nhà cung cấp cloud Việt Nam), bạn đã có thể tiết kiệm hàng trăm USD chi phí bản quyền hàng năm so với các gói trả phí của bên thứ ba.

Yêu cầu chuẩn bị hệ thống trước khi cài đặt

Để quá trình triển khai diễn ra suôn sẻ và đạt hiệu năng tối ưu nhất, bạn cần chuẩn bị sẵn các thành phần sau:

  1. Cấu hình VPS: 1 vCPU, 1GB RAM (Khuyến khích tạo thêm dung lượng Swap khoảng 1GB đến 2GB để dự phòng khi Build Code nặng), hệ điều hành Ubuntu 22.04 LTS hoặc Ubuntu 24.04 LTS sạch hoàn toàn.
  2. Tên miền (Domain Name): Một tên miền hoặc sub-domain được trỏ sẵn bản ghi A về địa chỉ IP public của VPS (Ví dụ: git.yourdomain.com và ci.yourdomain.com).
  3. Docker & Docker Compose: Đảm bảo công nghệ ảo hóa container đã được cài đặt sẵn trên máy chủ để tối giản hóa quy trình thiết lập môi trường.

Hướng dẫn chi tiết từng bước cài đặt Gitea và Drone CI

Bước 1: Cấu hình phân mảnh bộ nhớ (Swap Space)

Với dung lượng RAM thực tế chỉ 1GB, hệ thống rất dễ rơi vào trạng thái Out-of-Memory (OOM) khi Drone CI tiến hành đóng gói ứng dụng. Việc tạo phân vùng RAM ảo (Swap) là kỹ thuật bắt buộc để tăng tính ổn định:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Bước 2: Viết file cấu hình Docker Compose đồng bộ

Chúng ta sẽ khởi tạo một file cấu hình duy nhất chứa cả Gitea, Drone Server, Drone Runner và Reverse Proxy (sử dụng Caddy hoặc Nginx) để tự động cấp phát chứng chỉ SSL Let's Encrypt miễn phí. Hãy tạo một thư mục làm việc và viết file docker-compose.yml:

Trong file cấu hình này, chúng ta định nghĩa các dịch vụ kết nối với nhau qua một mạng nội bộ (Docker Network). Gitea sử dụng cơ sở dữ liệu SQLite mặc định để tiết kiệm bộ nhớ tối đa, bỏ qua MySQL hoặc PostgreSQL vốn chiếm dụng hàng trăm MB RAM vô ích.

Bước 3: Khởi tạo Gitea và thiết lập OAuth2 cho Drone CI

Sau khi chạy lệnh docker compose up -d, hãy truy cập vào giao diện git.yourdomain.com để hoàn tất các thiết lập ban đầu của Gitea. Tạo tài khoản Admin đầu tiên của bạn.

Tiếp theo, để Drone CI có thể giao tiếp và xác thực người dùng thông qua Gitea, bạn cần đăng ký một ứng dụng OAuth2 bằng cách: Vào Cài đặt cấu hình (Settings) của tài khoản Admin -> Chọn Ứng dụng (Applications) -> Tạo ứng dụng mới với tên "Drone CI" và Redirect URI trỏ về: https://ci.yourdomain.com/login. Lưu lại hai chuỗi thông tin quan trọng là Client ID và Client Secret để cấu hình cho biến môi trường của Drone.

Bước 4: Kết nối và khởi chạy quy trình tự động hóa Drone CI

Cập nhật lại các thông tin Client ID, Client Secret cùng mã khóa bảo mật DRONE_RPC_SECRET vào phần cấu hình của Drone Server và Khởi động lại hệ thống container. Truy cập giao diện ci.yourdomain.com, bạn sẽ thấy hệ thống tự động chuyển hướng đăng nhập qua Gitea một cách mượt mà. Tại đây, toàn bộ các kho lưu trữ (repositories) từ Gitea sẽ được đồng bộ hóa sang Drone chỉ bằng một cú click kích hoạt.

Kinh nghiệm tối ưu hóa hiệu năng cho VPS RAM 1GB

Vận hành một hệ thống DevOps tích hợp trên tài nguyên hạn chế đòi hỏi bạn phải áp dụng nghiêm ngặt các nguyên tắc tối ưu hóa sau:

  • Giới hạn đồng thời (Concurrency Limits): Trong file cấu hình Drone Runner, hãy đặt biến DRONE_RUNNER_CAPACITY=1. Điều này đảm bảo tại một thời điểm chỉ có tối đa một pipeline được phép build, tránh tình trạng xung đột CPU và tràn RAM dẫn đến treo máy chủ.
  • Sử dụng Docker Cache: Khi viết file cấu hình pipeline .drone.yml cho các dự án, hãy tận dụng các plugin lưu trữ cache cho node_modules, vendor, hoặc thư mục build để giảm thiểu tối đa thời gian sử dụng CPU cho các lần build kế tiếp.
  • Dọn dẹp hệ thống định kỳ: Bản chất của các quy trình CI/CD là tạo ra rất nhiều hình ảnh container rác (dangling images) và volume thừa. Thiết lập một cronjob định kỳ hàng tuần chạy lệnh docker system prune -af --volumes để giải phóng không gian ổ đĩa đệm.

Lời kết và định hướng bảo mật

Việc tự host thành công bộ đôi Gitea và Drone CI trên một chiếc VPS RAM 1GB không chỉ giúp bạn làm chủ hoàn toàn mã nguồn và quy trình triển khai phần mềm (CI/CD) của mình, mà còn nâng cao tư duy quản trị hệ thống và tối ưu tài nguyên một cách bài bản. Để hệ thống hoạt động lâu dài và an toàn, hãy luôn đảm bảo rằng bạn đã tắt tính năng đăng ký tài khoản tự do trên Gitea (chuyển sang chế độ mời nội bộ), thường xuyên sao lưu (backup) thư mục dữ liệu và cập nhật các phiên bản vá lỗi bảo mật mới nhất từ nhà phát triển.

Tự Host GitHub Riêng Tư Siêu Nhẹ: Hướng Dẫn Cài Đặt Gitea Kết Hợp Drone CI Trên VPS RAM 1GB | DPTCloud