Qua có support cho một bro trong nhóm migration Gitlab từ server cũ sang server mới, công ty bạn ấy dùng Gitlab standalone config default, không mount dữ liệu, chẳng backup gì luôn cài đúng kiểu 1 lệnh apt install, mới thấy được nhiều công ty cũng ‘tự tin thật’ :)))
Thì mình có note lại mấy bước làm đang định xóa đi thì nghĩ để lên đây cho bạn nào chưa biết mà cần thì dùng. Còn nếu anh em thích mình có thể làm một bài riêng về setup Gitlab HA và migration các thứ.

Step 1. Chuẩn bị
Đầu tiên cứ làm vài bước kiểm tra nhanh đảm bảo đúng yêu cầu của Gitlab và hệ thống.
Step 1.1 Kiểm tra Phiên bản GitLab
Chạy lệnh này trên cả server cũ và mới (nếu đã cài Gitlab) để chắc chắn 2 GItlab cùng phiên bản:
sudo gitlab-rake gitlab:env:info
Nếu phiên bản khác nhau, anh em upgrade hoặc downgrade GitLab trên server mới để khớp với máy cũ (cái này bắt buộc nhé).
Step 1.2. Kiểm tra Dung lượng Ổ đĩa
Đảm bảo máy chủ mới có đủ dung lượng để chứa dữ liệu GitLab. Trên máy cũ chạy:
df -h
Anh em kiểm tra thử xem nếu thư mục /var/opt/gitlab/
rất lớn thì có thể cần thêm dung lượng lưu trữ (nhớ mount ổ nhé).
Step 2. Cài Đặt GitLab trên Server Mới
Trước khi migrate dữ liệu, cài đặt đúng phiên bản GitLab của server cũ trên server mới.
Step 2.1. Thêm Repository của GitLab
Với hệ thống Debian-based (Ubuntu, Debian):
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash # Enterprise Edition
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash # Community Edition
Với hệ thống RHEL-based (CentOS, Rocky, Fedora):
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash # Enterprise Edition
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash # Community Edition
Step 2.2. Cài đặt GitLab
Thay X.Y.Z
bằng phiên bản GitLab chính xác:
sudo apt install gitlab-ee=X.Y.Z-ee.0 # Enterprise Edition trên Debian/Ubuntu
sudo apt install gitlab-ce=X.Y.Z-ce.0 # Community Edition trên Debian/Ubuntu
sudo yum install gitlab-ee-X.Y.Z-ee.0 # Enterprise Edition trên RHEL/CentOS
sudo yum install gitlab-ce-X.Y.Z-ce.0 # Community Edition trên RHEL/CentOS
Step 2.3. Cấu hình GitLab
Chỉnh sửa file cấu hình:
sudo vim /etc/gitlab/gitlab.rb
Cập nhật external URL:
gitlab_rails['external_url'] = 'http://NEW_GITLAB_IP' #hoặc domain nhé
Áp dụng cấu hình:
sudo gitlab-ctl reconfigure
Step 3. Dừng các services GitLab trên server cũ
Để tránh thay đổi dữ liệu trong khi migrate:
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
Step 4. Tạo backup trên server Gitlab cũ
GitLab có công cụ tích hợp để sao lưu dữ liệu.
Step 4.1. Tạo Backup
sudo gitlab-backup create
Mặc định backup sẽ nằm trong /var/opt/gitlab/backups/
. Nếu muốn lưu ở nơi khác:
export GITLAB_BACKUP_DIR="/mnt/backup"
sudo gitlab-backup create
Step 4.2. Xác định File Backup
ls -lh /var/opt/gitlab/backups/
Ví dụ tên file:
1548470000_2025_09_25_15.3.0_gitlab_backup.tar
Step 5. Chuyển backup sang server mới
Dùng scp
hoặc rsync
:
scp /var/opt/gitlab/backups/*.tar root@NEW_GITLAB_IP:/var/opt/gitlab/backups/
Step 6. Restore GitLab trên server mới
Step 6.1. Dừng services GitLab
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop
Step 6.2. Restore Backup
export GITLAB_BACKUP_DIR="/var/opt/gitlab/backups"
sudo gitlab-backup restore BACKUP=1548470000_2025_09_25_15.3.0_gitlab_backup.tar
Step 7. Sao chép File Cấu hình
Trên server cũ, copy các file:
scp /etc/gitlab/gitlab.rb root@NEW_GITLAB_IP:/etc/gitlab/gitlab.rb
scp /etc/gitlab/gitlab-secrets.json root@NEW_GITLAB_IP:/etc/gitlab/gitlab-secrets.json
Trên server mới:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
Step 8. Migration Container Registry (nếu có dùng)
Thông thường cũng ít recommend anh em dùng trực tiếp container registry của Gitlab vì đầy thằng mạnh như harbor, hay sẵn trên cloud mà chuyên biệt hơn.
Step 8.1. Kiểm tra dung lượng Registry
du -sh /var/opt/gitlab/gitlab-rails/shared/registry/
Step 8.2. Copy Registry Data
rsync -avz /var/opt/gitlab/gitlab-rails/shared/registry/ root@NEW_GITLAB_IP:/var/opt/gitlab/gitlab-rails/shared/registry/
Sau đó restart GitLab:
sudo gitlab-ctl restart
Step 9. Kiểm tra Migration
- Đăng nhập GitLab Web UI:
http://NEW_GITLAB_IP
hayhttps://domain.com
- Thử clone & push repository:
git clone http://NEW_GITLAB_IP/group/project.git
cd project
echo "test" > test.txt
git add test.txt
git commit -m "Migration test"
git push origin main
- Kiểm tra trạng thái GitLab:
sudo gitlab-rake gitlab:check
- Test Container Registry:
docker login registry.NEW_GITLAB_IP -u username -p password
docker tag my-image registry.NEW_GITLAB_IP/my-project/my-image:v1
docker push registry.NEW_GITLAB_IP/my-project/my-image:v1
Step 10. Cập nhật DNS & clear
- Cập nhật DNS trỏ domain GitLab sang IP của máy mới.
- Giữ hoặc decommission (ngưng hoạt động) server cũ tùy nhu cầu backup.
Kết luận
Vậy là với vài bước đơn giản anh em đã migrate được GitLab sang server mới. Toàn bộ repository, người dùng, CI/CD pipeline, và Container Registry đã được giữ nguyên. Nếu gặp sự cố, dùng lệnh sau để kiểm tra log:
gitlab-ctl tail