
GitlabPhần 1: Cài đặt Gitlab Trên Ubuntu 22.04
Hướng dẫn từng bước cài GitLab CE trên Ubuntu 22.04 bằng Linux Package (Omnibus), từ chuẩn bị domain, SSL, SMTP đến đăng nhập root và cấu hình sau cài đặt.
Prerequisite
Trước khi bắt tay vào cài đặt, cần chuẩn bị sẵn một số thứ sau để quá trình cài đặt và vận hành GitLab về sau suôn sẻ:
- Domain trỏ về public IP của gitlab-server: ví dụ
gitlab.example.com, tạo bản ghi A trỏ về IP public của server. Domain này được dùng làmexternal_urlkhi cài đặt. - External SMTP/API để gửi mail: GitLab cần gửi mail cho các tác vụ như xác nhận tài khoản, reset password, thông báo pipeline, merge request... Có thể dùng SMTP của Gmail, Amazon SES, SendGrid, Mailgun...
- Domain cho registry: nếu dùng GitLab Container Registry thì nên có một domain riêng, ví dụ
registry.example.com, cũng trỏ về IP của gitlab-server. - SSL (nếu có): có thể dùng chứng chỉ SSL có sẵn của công ty, hoặc để GitLab tự xin chứng chỉ miễn phí từ Let's Encrypt (yêu cầu domain đã trỏ đúng và port 80, 443 được mở ra Internet).
Về cấu hình phần cứng, theo khuyến nghị của GitLab, server tối thiểu nên có 4 CPU core và 4 GB RAM (đủ cho khoảng 20 user). Thực tế nên để 8 GB RAM trở lên cho thoải mái, nhất là khi bật thêm Registry, CI/CD.
Các phương thức cài đặt
GitLab hỗ trợ khá nhiều cách cài đặt, tùy vào hạ tầng và mục đích sử dụng:
- Docker/Docker Compose: chạy GitLab dưới dạng container, tiện cho lab, test hoặc khi hạ tầng đã chuẩn hóa theo container.
- Linux Package (Omnibus): cách được GitLab khuyến nghị cho phần lớn trường hợp. Một package đóng gói đầy đủ các thành phần (Nginx, PostgreSQL, Redis, Puma, Sidekiq, Gitaly...), dễ cài, dễ nâng cấp.
- Helm chart (k8s): triển khai GitLab trên Kubernetes, phù hợp với hệ thống lớn, cần scale từng thành phần.
- GitLab Operator (k8s): quản lý vòng đời GitLab trên Kubernetes/OpenShift thông qua Operator.
- Build from source code: tự build từ source, linh hoạt nhất nhưng cũng phức tạp và tốn công bảo trì nhất. Chỉ nên dùng khi thực sự có nhu cầu đặc biệt.
Trong bài này mình sẽ dùng cách Linux Package (Omnibus) vì đơn giản, ổn định và phù hợp với đa số nhu cầu self-host.
Cài đặt GitLab CE Server qua Package (Omnibus Method)
- Docs ref: https://about.gitlab.com/install/#ubuntu
- OS Deploy: Ubuntu 22.04 LTS
- Phiên bản: GitLab Community Edition (CE)
Bước 1: Cập nhật hệ thống
Trước tiên, cập nhật lại danh sách package và nâng cấp hệ thống:
Bước 2: Install dependencies
Cài các package cần thiết:
Nếu server có firewall (UFW) đang bật thì mở các port cần thiết cho SSH, HTTP và HTTPS:
Bước 3: Cài đặt Postfix (tùy chọn)
Nếu muốn gửi mail trực tiếp từ server thì có thể cài Postfix:
Trong quá trình cài, chọn Internet Site và nhập domain của server. Tuy nhiên, như đã nói ở phần Prerequisite, mình khuyến khích dùng External SMTP cho ổn định và tránh bị đánh dấu spam. Nếu dùng External SMTP thì có thể bỏ qua bước này và cấu hình SMTP sau khi cài xong.
Bước 4: Thêm GitLab package repository
Chạy script của GitLab để thêm repository chính thức vào hệ thống:
Bước 5: Cài đặt GitLab CE
Khi cài, khai báo luôn biến EXTERNAL_URL là domain đã chuẩn bị. Nếu dùng https://, GitLab sẽ tự động xin chứng chỉ SSL từ Let's Encrypt:
Có thể chỉ định phiên bản cụ thể nếu cần. Xem danh sách phiên bản có trong repository bằng apt-cache madison gitlab-ce, sau đó cài theo dạng:
Quá trình cài sẽ mất vài phút tùy cấu hình server. Khi hoàn tất, GitLab sẽ tự chạy gitlab-ctl reconfigure để khởi tạo các service.
Bước 6: Lấy mật khẩu root và đăng nhập
Sau khi cài xong, GitLab sinh ngẫu nhiên mật khẩu cho tài khoản root và lưu trong file:
Truy cập https://gitlab.example.com, đăng nhập với user root và mật khẩu vừa lấy được, sau đó vào Edit profile → Password để đổi mật khẩu.
Bước 7: Kiểm tra trạng thái các service
Kiểm tra các thành phần của GitLab đã chạy đầy đủ chưa:
Một số lệnh hay dùng khi vận hành:
sudo gitlab-ctl reconfigure: áp dụng lại cấu hình sau khi sửa file/etc/gitlab/gitlab.rb.sudo gitlab-ctl restart: restart toàn bộ service.sudo gitlab-ctl tail: xem log realtime của các service.sudo gitlab-rake gitlab:check SANITIZE=true: kiểm tra tổng thể cấu hình GitLab.
Bước 8: Một số cấu hình sau cài đặt
Mọi cấu hình của GitLab Omnibus đều nằm trong file /etc/gitlab/gitlab.rb. Sau mỗi lần chỉnh sửa, nhớ chạy sudo gitlab-ctl reconfigure.
Cấu hình External SMTP, ví dụ với Gmail:
Áp dụng cấu hình:
Sau đó gửi thử một email từ Rails console để kiểm tra: