ubuntu24.04搭建GitLab服务器
ubuntu24.04搭建gitlab服务
- 简述
- 安装GitLab
- 配置GitLab
- 访问与初始化
- 修改默认密码
- 日常管理维护
- 数据备份
- 数据恢复
- 进阶配置(可选)
- 使用方法简述
简述
GitLab是一个功能强大的DevOps平台,涵盖了从项目规划、源代码管理到持续集成、部署和监控的整个开发生命周期。下面这个流程图梳理了GitLab的核心功能模块和学习路径:

安装GitLab
- 安装依赖包
sudo apt update
sudo apt install -y curl openssh-server ca-certificates postfix
- 在安装postfix(邮件服务器)时,可能会弹出配置窗口。如果你有域名并计划用于GitLab,可以选择"Internet Site"并设置域名;如果暂时不需要邮件功能或没有域名,也可以先跳过,后续再配置。
- 添加GitLab软件仓库并安装
接下来,我们通过官方仓库安装GitLab。这里提供了官方源和国内镜像源两种方式,国内镜像通常速度更快。
- 使用官方源安装:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce
- 使用国内清华镜像源安装(推荐)
# 将镜像源添加到源列表
sudo vim /etc/apt/sources.list.d/gitlab-ce.list
# 在文件中添加以下行
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu noble main# 安装信任证书并更新软件列表
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
sudo apt update
sudo apt install gitlab-ce
安装成功后打印个很有创艺的Gitlab Logo:

配置GitLab
- 配置外部访问地址(关键步骤)
GitLab最重要的配置是设置其外部访问地址。编辑配置文件/etc/gitlab/gitlab.rb,找到external_url项。
- 如果你有域名(例如gitlab.example.com):
external_url 'http://gitlab.example.com'
- 如果你只有IP地址(例如192.168.0.136):
external_url 'http://192.168.0.136'
注意:一定要带’http://’ 或安全访问’https://’ 需要安装认证证书
- 注意:如果服务器的80端口已被占用,或者你想使用其他端口,可以在IP或域名后加上端口号,例如 http://192.168.0.136:8080
可以使用如下命令查看指定端口是否被占用,没有输出为未占用:
sudo ss -tulpn | grep 80
# 或
sudo netstat -tulpn | grep 80
- 应用配置并启动GitLab
执行以下命令使配置生效,这会启动所有必要的服务,这个过程可能需要几分钟,请耐心等待。
sudo gitlab-ctl reconfigure
- 配置防火墙
如果系统防火墙(UFW)是开启状态,需要放行HTTP和HTTPS流量
sudo ufw allow http
sudo ufw allow https
sudo ufw allow ssh # 确保SSH端口开放,以免被锁在服务器外
sudo ufw reload
访问与初始化
- 访问GitLab并查找初始密码
在浏览器中输入你配置的external_url地址(如http://192.168.1.100)。
首次访问会要求你设置管理员root的密码。初始密码存储在服务器的一个文件中,可以通过以下命令查看
sudo cat /etc/gitlab/initial_root_password
注意:此密码文件将在24小时后被自动删除,出于安全考虑,请尽快登录后修改密码。
如果提示错误可能是puma端口冲突,编辑gitlab.rb重新配置后重新启动
sudo vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.0.136:8080'puma['port'] = 8081
重新配置,重新启动
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

输入管理员账号密码登录
Username:root
Password:“初始密码”
操作到这一步输入 http://192.168.0.136:8080显示如下

选择:Acknowledge

修改默认密码
Overview=>Users=>Administrator行点击 Edit

输入需要修改的信息点击Save changes保存修改内容

使用修改后的账号密码重新登录

日常管理维护
- 服务器管理常用命令
sudo gitlab-ctl restart # 重启所有GitLab服务
sudo gitlab-ctl stop # 停止所有GitLab服务
sudo gitlab-ctl status # 查看各服务状态
sudo gitlab-rake --version # 查看gitlab-rake版本 不是GitLab的版本
sudo gitlab-rake gitlab:env:info # 查看GitLab详细信息
数据备份
定期备份是一个好习惯。可以使用以下命令创建备份
#
sudo gitlab-backup create# GitLab 12.2 之前版本旧命令,已弃用
sudo gitlab-rake gitlab:backup:create
备份文件默认存储在/var/opt/gitlab/backups/目录。
备份文件示例:1710123456_2025_03_10_16.8.0_gitlab_backup.tar
备份内容包含:
- Git 仓库
- 数据库(用户、项目、权限、Issue、CI/CD 等)
- 上传的附件(头像、LFS 文件、Wiki 等)
手动备份配置
备份命令不包含以下关键配置文件,需单独保存:
# 主配置文件
sudo cp /etc/gitlab/gitlab.rb ~/gitlab.rb.backup# 加密密钥(用于解密数据库中的敏感数据,如 CI 变量、两步验证等)
sudo cp /etc/gitlab/gitlab-secrets.json ~/gitlab-secrets.json.backup
数据恢复
- 安装原GitLab版本
# 查看原 GitLab 版本(在备份文件名中)
# 如:..._16.8.0_gitlab_backup.tar → 版本为 16.8.0# 在新服务器上安装对应版本
sudo apt install gitlab-ce=16.8.0-ce.0
- 停止 Puma 和 Sidekiq 服务
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
- 将备份文件复制到新服务器
scp oldserver:/var/opt/gitlab/backups/1710123456_2025_03_10_16.8.0_gitlab_backup.tar /var/opt/gitlab/backups/
sudo chown git:git /var/opt/gitlab/backups/*.tar
- 恢复数据
sudo gitlab-backup restore BACKUP=1710123456_2025_03_10_16.8.0
- 恢复配置
sudo cp ~/gitlab.rb.backup /etc/gitlab/gitlab.rb
sudo cp ~/gitlab-secrets.json.backup /etc/gitlab/gitlab-secrets.json
- 重新配置并启动
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
- 验证恢复结果
sudo gitlab-rake gitlab:check SANITIZE=true
进阶配置(可选)
-
配置HTTPS访问
为了更高的安全性,建议配置SSL证书启用HTTPS。你可以从Let’s Encrypt获取免费证书,或者使用自己的商业证书。配置需要在/etc/gitlab/gitlab.rb中修改external_url为https://,并配置证书路径。 -
配置外网访问
如果你希望GitLab能从公司或家庭网络之外访问,你需要:
- 在云服务平台的安全组规则中,放行你配置的端口(如80、443)。
- 如果你在局域网内,还需要在路由器上设置端口转发,将公网IP的端口转发到内网GitLab服务器的IP和端口。
使用方法简述

-
创建项目组





-
方式1:克隆仓库到本地
将远端服务器创建的空白git仓库克隆到本地,然后在此基础上做项目开发

-
方式2:本地仓库添加remote仓库
本地已经有项目代码
创建stm32f103rct6_modbus空白项目,然后执行如下命令:
git remote add origin http://192.168.0.136:8080/stm32f103/stm32f103rct6_modbus.git
git branch -M master
git push -uf origin master
