迁移 Debian 上的 GitLab 通常有两种常见场景:
1️⃣ 同机或跨机迁移(保留数据)
2️⃣ 升级迁移(Debian / GitLab 版本变化)
下面以 官方 Omnibus GitLab 为例,给你一套最稳妥、生产可用的迁移方案。
dpkg -l | grep gitlab
gitlab-ee 或 gitlab-ce → Omnibus 安装(推荐)gitlab-rake gitlab:env:info
或
cat /opt/gitlab/version-manifest.txt
✅ 强烈建议:目标服务器 GitLab 版本 ≥ 源服务器
gitlab-rake gitlab:backup:create
备份文件位置:
/var/opt/gitlab/backups/
文件名类似:
1234567890_2026_01_21_gitlab_backup.tar
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
⚠️ 必须一起迁移,否则:
scp /var/opt/gitlab/backups/*.tar root@new-server:/var/opt/gitlab/backups/
scp /etc/gitlab/gitlab.rb root@new-server:/etc/gitlab/
scp /etc/gitlab/gitlab-secrets.json root@new-server:/etc/gitlab/
curl -fsSL https://packages.gitlab.com/gpg.key | gpg --dearmor > /usr/share/keyrings/gitlab.gpg
echo "deb [signed-by=/usr/share/keyrings/gitlab.gpg] https://packages.gitlab.com/gitlab/gitlab-ce/debian $(lsb_release -cs) main" \
> /etc/apt/sources.list.d/gitlab.list
apt update
apt install gitlab-ce=16.7.2-ce.0
版本号必须和旧服务器一致(或更高但兼容)
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak
cp gitlab.rb /etc/gitlab/
cp gitlab-secrets.json /etc/gitlab/
gitlab-ctl reconfigure
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1234567890
只写时间戳,不要
.tar
恢复完成后:
gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true
浏览器访问:
http://新服务器IP
✅ 仓库
✅ 用户
✅ CI/CD
✅ Runner
gitlab-runner register
/etc/gitlab-runner/config.toml
必须先升级旧 GitLab,再迁移
gitlab-ctl status
gitlab-ctl restart
检查端口冲突(80 / 443 / 22)
gitlab-rake db:migrate
✅ 备份 → 同版本安装 → 恢复 → 验证
如果你愿意,可以告诉我:
我可以给你 定制迁移方案 + 命令清单 ✅