GitLab Là Gì? So Sánh GitLab vs GitHub & Cách Sử Dụng

GitLab là gì là câu hỏi bạn sẽ gặp ngay khi muốn giữ source code trong nội bộ, dựng pipeline tự động build – deploy và bớt phụ thuộc dịch vụ bên ngoài. GitLab là một nền tảng DevOps quản lý mã nguồn Git kèm CI/CD, có thể tự host trên máy chủ của bạn. Bài này giải thích bản chất, so sánh với GitHub và hướng dẫn dựng thật trên VPS. Tất cả dịch vụ máy chủ trong bài đều thuộc hệ sinh thái InterData.

GitLab là gì và giải quyết bài toán nào cho team code?

GitLab là gì? Đó là một nền tảng DevOps mã nguồn mở, dùng Git để quản lý mã nguồn và tích hợp sẵn CI/CD, issue tracking, code review, container registry trong một giao diện duy nhất. Bạn có thể dùng bản cloud tại gitlab.com hoặc tự host trên máy chủ riêng.

Khác biệt lớn nhất so với một dịch vụ Git thuần là phạm vi. GitLab gói toàn bộ vòng đời phần mềm vào một chỗ: từ lúc commit code, review merge request, chạy test tự động, build image cho tới deploy lên server. Bạn không cần ghép nối nhiều công cụ rời rạc.

Nỗi đau thường gặp khiến người ta tìm đến GitLab khá cụ thể:

  • Code không được ra ngoài: dự án có NDA, dữ liệu nhạy cảm hoặc yêu cầu nội bộ. Bạn cần một kho lưu trữ code đặt trên hạ tầng mình kiểm soát.
  • Deploy thủ công mệt mỏi: mỗi lần lên bản mới phải SSH vào server, kéo code, restart service bằng tay. Dễ quên bước, dễ sai.
  • Phụ thuộc gói trả phí: số private repo hoặc số phút CI miễn phí trên nền tảng bên ngoài bị giới hạn, chi phí tăng theo team.
  • Quản lý quyền lộn xộn: không kiểm soát được ai đọc được nhánh nào, ai có quyền push lên production.

GitLab giải quyết cả bốn vấn đề trên trong một sản phẩm. Đặc biệt với team Việt Nam muốn dữ liệu nằm trong nước, bản tự host (GitLab Community Edition) cho phép cài lên một con VPS và toàn quyền với mọi byte dữ liệu.

Gitlab

GitLab dùng được cho ai?

Lập trình viên cá nhân dùng GitLab để lưu code riêng và tập CI/CD. Team nhỏ dùng để review code và tự động deploy. Doanh nghiệp dùng để chuẩn hóa quy trình release, phân quyền theo phòng ban và giữ toàn bộ tài sản code trong nội bộ. Quy mô càng lớn, giá trị phần tự host và phân quyền càng rõ.

Lưu ý: GitLab tự host ngốn RAM. Một instance CE chạy thật cần tối thiểu 4GB RAM, khuyến nghị 8GB nếu có vài người dùng và chạy pipeline. Cài lên VPS 1-2GB sẽ bị OOM (hết bộ nhớ) và service tự sập. Đây là lỗi phổ biến nhất của người mới.

Thuê VPS

Toàn quyền root, SSD NVMe U.2, CPU thế hệ mới, hỗ trợ kỹ thuật 24/7

Cần một server riêng để tự host GitLab?

Để dựng GitLab CE bạn cần quyền root và đủ RAM cho instance lẫn runner. VPS có toàn quyền hệ điều hành, đủ dư địa cho 4-8GB RAM khi team còn nhỏ và muốn giữ code trong nội bộ.

Xem cấu hình VPS ⟶

Bên trong GitLab là gì: repo, runner và CI/CD pipeline?

Hiểu rõ vài khái niệm dưới đây giúp bạn đọc tài liệu GitLab không bị rối. Chúng lặp đi lặp lại trong mọi hướng dẫn.

  • Repository (repo GitLab): kho chứa source code của một dự án, kèm lịch sử commit, nhánh và tag. Đây là đơn vị cơ bản của quản lý mã nguồn.
  • Group: tập hợp nhiều repo, dùng để gom dự án theo team hoặc phòng ban và phân quyền chung một lần.
  • Merge Request (MR): yêu cầu gộp một nhánh vào nhánh chính. Đây là nơi review code, chạy test và thảo luận trước khi merge. Tương đương Pull Request bên GitHub.
  • GitLab Runner: tiến trình chạy job CI/CD. Runner nhận lệnh từ GitLab, thực thi build/test/deploy rồi báo kết quả về. Có thể cài trên cùng máy hoặc tách ra máy riêng.
  • Pipeline: chuỗi các stage (build, test, deploy…) chạy tự động khi có commit hoặc MR. Cấu hình bằng file .gitlab-ci.yml đặt ở gốc repo.
  • Container Registry: kho lưu Docker image tích hợp sẵn, để pipeline build image rồi push vào đó mà không cần dịch vụ ngoài.

Mối liên hệ rất rõ ràng. Bạn push code lên một repo, GitLab đọc file .gitlab-ci.yml, tạo một pipeline, rồi giao từng job cho runner thực thi. Không có runner đăng ký, pipeline sẽ đứng ở trạng thái pending mãi mãi. Đây là lỗi hay gặp khi mới làm CI/CD.

So sánh GitLab vs GitHub: nên chọn cái nào?

GitLab vs GitHub

GitLab vs GitHub là so sánh được tìm nhiều nhất. Câu trả lời ngắn: chọn GitLab nếu bạn cần tự host miễn phí và muốn DevOps trọn gói trong một chỗ; chọn GitHub nếu bạn ưu tiên cộng đồng mã nguồn mở lớn nhất và hệ sinh thái tích hợp rộng. Cả hai đều dùng Git và đều có CI/CD riêng.

Tiêu chí GitLab GitHub
Tự host miễn phí Có, bản Community Edition đầy đủ tính năng cốt lõi Có GitHub Enterprise Server nhưng trả phí theo license
CI/CD tích hợp GitLab CI/CD, gắn liền sản phẩm từ sớm, runner tự host dễ GitHub Actions, marketplace action rất phong phú
Cộng đồng & dự án OSS Nhỏ hơn Lớn nhất hiện nay, nơi tập trung phần lớn dự án mã nguồn mở
Phù hợp khi Cần kiểm soát hạ tầng, giữ code nội bộ, quy trình DevOps khép kín Mở mã nguồn, cộng tác công khai, tận dụng hệ sinh thái tích hợp

Khi nào nên chọn GitLab

Chọn GitLab khi yêu cầu bảo mật buộc code phải nằm trong nội bộ, khi bạn muốn không giới hạn private repo mà không tốn phí license, hoặc khi cần một runner CI tự host gắn thẳng vào server deploy. Bản GitLab Enterprise bổ sung phân quyền nâng cao, kiểm soát compliance và hỗ trợ chính hãng cho doanh nghiệp lớn.

Khi nào GitHub hợp hơn

Nếu bạn làm dự án mã nguồn mở, cần lập trình viên ngoài đóng góp dễ dàng, hoặc muốn xài kho Actions có sẵn cho mọi thứ từ deploy tới quét bảo mật, GitHub đáng cân nhắc hơn. Nhiều team Việt vẫn dùng song song: GitHub cho dự án public, GitLab tự host cho dự án nội bộ.

GitLab CI/CD hoạt động ra sao?

CI/CD là tự động hóa hai việc: tích hợp liên tục (build và test mỗi khi có code mới) và phân phối liên tục (đưa bản chạy được lên server). Trong GitLab, toàn bộ logic này nằm trong một file YAML duy nhất ở gốc repo: .gitlab-ci.yml.

Luồng chạy diễn ra như sau:

  1. Bạn push commit lên repo, hoặc tạo một merge request.
  2. GitLab phát hiện file .gitlab-ci.yml và khởi tạo một pipeline.
  3. Pipeline chia thành các stage chạy tuần tự: ví dụ build rồi test rồi deploy.
  4. Mỗi job trong stage được giao cho một GitLab Runner đang rảnh để thực thi.
  5. Nếu một job thất bại, các stage sau dừng lại và bạn nhận thông báo. Nếu tất cả xanh, bản mới được deploy.

Một file pipeline tối giản trông như thế này:

stages:
  - build
  - test
  - deploy

build-job:
  stage: build
  script:
    - echo "Đang build ứng dụng..."
    - npm install
    - npm run build

test-job:
  stage: test
  script:
    - echo "Chạy test..."
    - npm test

deploy-job:
  stage: deploy
  script:
    - echo "Deploy lên server production"
  only:
    - main

File trên chạy build và test cho mọi nhánh, nhưng chỉ deploy khi code được merge vào nhánh main. Đây là pattern an toàn cơ bản: không bao giờ deploy thẳng từ nhánh đang phát triển.

Lỗi thường gặp: pipeline kẹt ở trạng thái pending. Nguyên nhân gần như luôn là chưa đăng ký runner nào, hoặc runner không khớp tag với job. Kiểm tra ở Settings → CI/CD → Runners xem có runner nào đang active không.

Thuê Cloud Server

Nâng/hạ tài nguyên theo tải, mạng tốc độ cao, backup định kỳ

Pipeline nặng, nhiều runner chạy song song?

Khi team đông và pipeline build image, chạy test song song, nhu cầu CPU/RAM tăng theo đợt. Cloud Server cho phép tăng tài nguyên khi cao điểm rồi hạ lại, phù hợp tải biến động của hệ thống CI/CD.

Tìm hiểu Cloud Server ⟶

Tự host GitLab là gì và cách cài trên VPS Ubuntu?

Phần này hướng dẫn cài đặt GitLab CE bằng gói Omnibus trên Ubuntu. Cách này gói sẵn mọi thành phần (PostgreSQL, Redis, Nginx) nên dễ nhất cho người mới. Lệnh dưới tham khảo theo tài liệu chính thức tại about.gitlab.com/install.

Điều kiện đầu vào

  • VPS chạy Ubuntu 22.04 hoặc 24.04, có quyền root hoặc sudo.
  • Tối thiểu 4GB RAM, khuyến nghị 8GB. CPU 2-4 nhân. Ổ SSD còn trống ít nhất 10GB.
  • Một tên miền hoặc subdomain trỏ về IP của VPS (ví dụ git.tencongty.vn) nếu muốn dùng HTTPS.
  • Mở cổng 80 và 443 trên firewall.

Các bước cài đặt

Bước 1. Cập nhật hệ thống và cài các gói phụ thuộc:

sudo apt update
sudo apt install -y curl openssh-server ca-certificates tzdata perl

Bước 2. Thêm repository chính thức của GitLab:

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

Bước 3. Cài GitLab với URL truy cập của bạn. Biến EXTERNAL_URL quyết định địa chỉ instance và việc cấp chứng chỉ Let’s Encrypt tự động:

sudo EXTERNAL_URL="https://git.tencongty.vn" apt install gitlab-ee

Bước 4. Lấy mật khẩu root khởi tạo (file này tự xóa sau 24 giờ):

sudo cat /etc/gitlab/initial_root_password

Bước 5. Mở trình duyệt vào đúng EXTERNAL_URL, đăng nhập bằng user root và mật khẩu vừa lấy. Đổi mật khẩu ngay sau lần đăng nhập đầu.

Khi cần đổi cấu hình về sau, sửa file /etc/gitlab/gitlab.rb rồi áp dụng:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl status

Cảnh báo tài nguyên: ngay sau khi cài, GitLab cần vài phút để khởi động hết các service. Nếu vào web báo lỗi 502, thường là instance chưa lên xong hoặc thiếu RAM. Chạy sudo gitlab-ctl status kiểm tra, và cân nhắc thêm swap nếu RAM sát ngưỡng.

Cài GitLab Runner để chạy CI/CD

Cài GitLab xong vẫn chưa chạy được pipeline. Bạn cần đăng ký ít nhất một runner. Cài runner trên cùng VPS hoặc trên một máy riêng:

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt install -y gitlab-runner

Sau đó vào Settings → CI/CD → Runners trong project hoặc group để lấy URL và registration token, rồi chạy sudo gitlab-runner register và làm theo hướng dẫn. Chọn executor docker hoặc shell tùy nhu cầu. Xong bước này pipeline mới thực sự chạy.

Lệnh Git cơ bản để bắt đầu với một repo GitLab

Dù dùng GitLab hay GitHub, bạn vẫn thao tác bằng cùng bộ lệnh Git. Dưới đây là luồng tối thiểu để đẩy code lên một repo GitLab mới tạo.

Đầu tiên, khai báo danh tính và tạo SSH key nếu chưa có:

git config --global user.name "Ten Cua Ban"
git config --global user.email "[email protected]"

# Tạo SSH key rồi thêm public key vào GitLab: Preferences → SSH Keys
ssh-keygen -t ed25519 -C "[email protected]"
cat ~/.ssh/id_ed25519.pub

Đẩy một dự án có sẵn lên repo GitLab trống:

cd du-an-cua-ban
git init
git remote add origin [email protected]:nhom/du-an.git
git add .
git commit -m "Commit đầu tiên"
git push -u origin main

Quy trình làm việc hằng ngày với nhánh và merge request:

  1. Tạo nhánh tính năng: git checkout -b tinh-nang-moi
  2. Code, rồi git add .git commit -m "Mô tả thay đổi"
  3. Đẩy nhánh lên: git push origin tinh-nang-moi
  4. Vào GitLab tạo Merge Request từ nhánh đó vào main, gắn người review.
  5. Pipeline tự chạy test. Khi xanh và được duyệt, bấm Merge.

Chỉ với chừng đó lệnh bạn đã dùng được GitLab cho phần lớn công việc. Phần phức tạp hơn như rebase, cherry-pick, giải quyết conflict sẽ học dần khi gặp tình huống thật.

Phiên bản GitLab và cấu hình máy chủ nên chuẩn bị

GitLab có hai dòng chính. Hiểu khác biệt giúp bạn không trả tiền cho thứ chưa cần, cũng không thiếu tính năng khi team lớn lên.

  • Community Edition (CE): mã nguồn mở, miễn phí, đủ cho quản lý mã nguồn, CI/CD, issue và merge request. Phù hợp đa số team nhỏ và vừa tự host.
  • Enterprise Edition (EE) – GitLab Enterprise: bản trả phí với phân quyền nâng cao, kiểm soát compliance, bảo mật mở rộng và hỗ trợ chính hãng. Đáng cân nhắc khi tổ chức lớn, nhiều phòng ban và yêu cầu kiểm toán.

Một điểm hay bị nhầm: bản Omnibus bạn cài ở trên là gói gitlab-ee nhưng nếu không nhập license sẽ chạy ở chế độ miễn phí, tương đương CE. Bạn không bắt buộc phải trả phí.

Checklist chọn máy chủ cho GitLab

  • RAM: 4GB cho team rất nhỏ, 8GB trở lên nếu chạy nhiều pipeline. Đây là yếu tố quyết định nhất.
  • CPU: tối thiểu 2 nhân, nên 4 nhân khi runner chạy build nặng.
  • Ổ đĩa: ưu tiên SSD NVMe vì GitLab đọc/ghi database và Git object liên tục. Dung lượng phình theo số repo và artifact.
  • Backup: cấu hình sao lưu định kỳ cho cả dữ liệu repo lẫn file cấu hình /etc/gitlab.
  • Khả năng mở rộng: nếu lượng người dùng và pipeline tăng nhanh, chọn nền tảng cho phép nâng tài nguyên không cần dựng lại.

Với team mới bắt đầu, một VPS đủ RAM là điểm xuất phát hợp lý. Khi tải tăng, số runner nhiều và pipeline chạy song song nặng hơn, chuyển sang Cloud Server để nâng tài nguyên theo nhu cầu là bước đi tự nhiên. Bạn có thể tham khảo thêm các gói VPS có toàn quyền root của InterData để dựng môi trường thử trước khi đưa lên production.

Câu hỏi thường gặp về GitLab

GitLab có miễn phí không?

Có. Bản Community Edition và bản Free trên gitlab.com đều miễn phí, gồm private repo không giới hạn, CI/CD và merge request. Bạn chỉ trả phí khi cần tính năng Enterprise như phân quyền nâng cao, compliance hoặc hỗ trợ chính hãng cho tổ chức lớn.

GitLab và Git khác nhau thế nào?

Git là phần mềm quản lý phiên bản chạy dưới dòng lệnh, do Linus Torvalds tạo ra. GitLab là một nền tảng web xây trên Git, bổ sung giao diện, phân quyền, CI/CD và quản lý dự án. Nói gọn: Git là công cụ, GitLab là nơi lưu trữ và cộng tác quanh công cụ đó.

Tự host GitLab cần cấu hình máy chủ tối thiểu bao nhiêu?

Theo tài liệu chính thức, GitLab cần tối thiểu 4GB RAM để chạy ổn cho vài người dùng, khuyến nghị 8GB khi có pipeline. CPU 2-4 nhân và ổ SSD. Cài lên VPS dưới 4GB RAM thường gặp lỗi hết bộ nhớ khiến service tự sập.

GitLab Runner là gì và có bắt buộc không?

GitLab Runner là tiến trình thực thi các job CI/CD. Nó nhận lệnh build, test, deploy từ GitLab rồi chạy và báo kết quả. Nếu bạn muốn dùng tính năng CI/CD thì bắt buộc phải có ít nhất một runner đã đăng ký, nếu không pipeline sẽ kẹt ở trạng thái pending.

Nên chọn GitLab hay GitHub cho dự án nội bộ công ty?

Nếu yêu cầu là giữ code trong nội bộ và tự chủ hạ tầng, GitLab tự host là lựa chọn mạnh vì miễn phí và không giới hạn private repo. GitHub hợp hơn cho dự án mã nguồn mở hoặc khi bạn muốn tận dụng cộng đồng và kho tích hợp lớn. Nhiều công ty dùng cả hai song song.

Tóm lại: bắt đầu với GitLab thế nào cho đúng?

Qua bài này bạn đã rõ GitLab là gì: một nền tảng DevOps quản lý mã nguồn kèm CI/CD, có thể tự host để giữ code trong nội bộ. Ba điều đáng nhớ: bản Community Edition đủ dùng và miễn phí; pipeline cần có runner đăng ký mới chạy được; và yếu tố quyết định thành bại khi tự host là đủ RAM. Nếu bạn đang chuẩn bị dựng một instance để team dùng thật, hãy bắt đầu trên một VPS có toàn quyền root và đủ tài nguyên, rồi nâng cấp khi tải tăng.

Sẵn sàng dựng GitLab của riêng bạn?

Chọn một VPS đủ RAM, có root, SSD NVMe để cài GitLab CE và chạy thử pipeline đầu tiên.

Xem các gói VPS InterData ⟶

Nội dung kỹ thuật trong bài chỉ mang tính tham khảo. Các lệnh, đường dẫn file và cấu hình có thể thay đổi theo hệ điều hành, phiên bản GitLab và môi trường thực tế của bạn. Trước khi áp dụng cho hệ thống production, hãy đọc tài liệu chính thức tương ứng với phiên bản đang dùng, sao lưu dữ liệu đầy đủ và kiểm thử trên môi trường tách biệt để đánh giá rủi ro.