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.
NỘI DUNG BÀI VIẾT
- GitLab là gì và giải quyết bài toán nào cho team code?
- Bên trong GitLab là gì: repo, runner và CI/CD pipeline?
- So sánh GitLab vs GitHub: nên chọn cái nào?
- CI/CD trong GitLab hoạt động ra sao?
- Tự host GitLab là gì và cách cài trên VPS Ubuntu?
- Lệnh Git cơ bản để bắt đầu với một repo GitLab
- Phiên bản GitLab và cấu hình máy chủ nên chuẩn bị
- Câu hỏi thường gặp về GitLab
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 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.
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 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:
- Bạn push commit lên repo, hoặc tạo một merge request.
- GitLab phát hiện file
.gitlab-ci.ymlvà khởi tạo một pipeline. - Pipeline chia thành các stage chạy tuần tự: ví dụ
buildrồitestrồideploy. - Mỗi job trong stage được giao cho một GitLab Runner đang rảnh để thực thi.
- 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.
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:
- Tạo nhánh tính năng:
git checkout -b tinh-nang-moi - Code, rồi
git add .vàgit commit -m "Mô tả thay đổi" - Đẩy nhánh lên:
git push origin tinh-nang-moi - Vào GitLab tạo Merge Request từ nhánh đó vào
main, gắn người review. - 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.
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.
