Skip to content

Ubuntu 22.04 安装 GitLab EE 完全指南:从零搭建 Homelab 代码仓库

Ubuntu 22.04 安装 GitLab EE 示意图

手把手带你绕过 GitLab 安装中的各种坑,包括镜像源选择、Let's Encrypt 证书问题、以及用户权限最佳实践

前言

在 Homelab 环境中搭建一个可靠的代码托管平台,是许多开发者的刚需。GitLab 作为功能最全面的 DevOps 平台,自然是首选。但实际安装过程中,你会遇到各种意想不到的问题——镜像源慢、Let's Encrypt 证书报错、甚至安装完成后不知道该用哪个账号管理代码。

本文基于真实踩坑经历,记录了一次完整的 GitLab EE 安装过程,所有命令均经过验证,可以直接复用。

环境信息

  • 操作系统:Ubuntu 22.04 LTS (Jammy)
  • 目标版本:GitLab EE(GitLab Enterprise Edition v19.1.1-ee 国际版)
  • 部署方式:单机部署
  • 访问地址:https://git.homelab.org(内网 Homelab)

💡 为什么从一开始就规划 HTTPS 和自定义域名?

将外部访问地址定义为 https://git.homelab.org,是出于项目或工程需要。例如,Golang 的 Go Module 在进行存储库定义时,就需要指定一个仓库地址,并且通过 go getgo install 时都需要 HTTPS 支持,这样 go module path 就能与依赖无缝衔接!

并且在 GitLab Enterprise Edition v19.1.1-ee 这个版本,安装时会自动生成自签名证书!

第一步:系统准备

更新系统并安装依赖

在安装 GitLab 之前,先确保系统是最新状态,并安装必要的依赖包:

bash
sudo apt update
sudo apt install -y curl openssh-server ca-certificates tzdata perl

这些依赖中:

  • curl:用于下载安装脚本
  • openssh-server:SSH 服务,Git 通过 SSH 协议访问仓库的基石
  • ca-certificates:SSL 证书验证
  • tzdata:时区数据,影响 GitLab 的日志时间戳

第二步:添加 GitLab 软件源

方案一:官方源(备选)

bash
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

⚠️ 注意:官方源服务器在国外,国内下载速度可能只有几十 KB/s,安装包约 1.1GB,可能需要 30-60 分钟。如果耐心有限,直接看方案二。

方案二:清华大学镜像源(推荐)

国内用户强烈建议使用清华源,速度可达 10-20 MB/s:

bash
# 清理可能存在的旧源
sudo rm -f /etc/apt/sources.list.d/gitlab*.list

# 添加清华源
echo "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/gitlab-ee.list

# 添加 GPG 密钥(用于验证包完整性)
curl -fsSL https://packages.gitlab.com/gitlab/gitlab-ee/gpgkey | sudo gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/gitlab-ee.gpg > /dev/null

# 更新软件源
sudo apt update

💡 为什么用清华源:GitLab 安装包约 1.1GB,使用国内镜像源可以将下载时间从 1 小时缩短到 5-10 分钟。

第三步:安装 GitLab EE(关键)

正确的安装命令

bash
sudo EXTERNAL_URL="https://git.homelab.org" apt install -y gitlab-ee

🔥 常见坑:Let's Encrypt 证书错误

如果你看到类似这样的报错:

Acme::Client::Error::RejectedIdentifier: Cannot issue for "git.homelab.org": IP address is in a reserved address block

原因:GitLab 默认启用了 Let's Encrypt 自动证书申请,但 Let's Encrypt 不允许给内网域名(解析到内网 IP)签发证书

解决方案:安装时明确禁用 Let's Encrypt,使用我们生成的自签名证书:

bash
sudo EXTERNAL_URL="https://git.homelab.org" \
  GITLAB_OMNIBUS_CONFIG="letsencrypt['enable'] = false" \
  apt install -y gitlab-ee

如果已经安装到一半报错了,可以手动修改配置文件:

bash
# 编辑配置文件
sudo vim /etc/gitlab/gitlab.rb

# 修改以下配置
external_url "https://git.homelab.org"
letsencrypt['enable'] = false

# 保存后重新配置
sudo gitlab-ctl reconfigure

💡 提示

虽然浏览器会提示"不安全"(因为证书不受信任),但完全不影响 HTTPS 加密传输,也不影响 go get 等工具的使用(需要配置 Git 跳过 SSL 验证或导入自签名证书)。

配置 Git 跳过 SSL 验证(仅限内网开发环境)

如果不想处理自签名证书的信任问题,可以配置 Git 全局跳过 SSL 验证(仅推荐在内网 Homelab 使用):

bash
git config --global http.sslVerify false

对于 Go Module,配置私有仓库跳过校验:

bash
go env -w GOPRIVATE="git.homelab.org"
go env -w GONOSUMDB="git.homelab.org"

第四步:安装后配置

获取初始密码

GitLab 安装完成后,会生成一个随机密码,24 小时后自动删除:

bash
sudo cat /etc/gitlab/initial_root_password

输出示例:

Username: root
Password: ohJeIshzXE56HD5a+ubsEVyIdscYLxJIclhn1qUQg8g

配置本地 hosts 映射

在访问 GitLab 的电脑上配置 hosts 文件,将域名指向 GitLab 服务器:

hosts
# /etc/hosts (Linux/macOS) 或 C:\Windows\System32\drivers\etc\hosts (Windows)
192.168.0.234  git.homelab.org

📌 将 192.168.0.234 替换为你实际安装 GitLab 的服务器 IP 地址。

登录 GitLab

浏览器访问:https://git.homelab.org

  • 用户名:root
  • 密码:上面查到的初始密码

第五步:用户权限最佳实践(必读)

⚠️ 不要用 root 做日常操作!

这是一个非常重要的安全原则:

场景使用账号原因
系统配置、用户管理、全局设置root最高权限,仅用于管理
日常代码提交、创建项目、管理仓库普通用户(如 fishfinal最小权限原则,安全可控

为什么?

  1. 安全风险root 拥有整个实例的控制权,一旦泄露,所有项目都面临风险
  2. 审计混乱:多人共用 root 无法追溯操作者
  3. 权限粒度root 可以看到所有私有项目,无法模拟普通用户的权限边界

创建普通用户

  1. root 登录 → Admin AreaUsersNew user
  2. 填写用户名(如 fishfinal)、邮箱
  3. 选择 Regular(普通用户),而不是 Administrator
  4. 点击 Create user

设置用户密码

有两种方式可以为新用户设置密码:

方式一:通过 Web UI 设置

创建用户后,进入用户列表 → 点击 Edit → 在 Password 区域设置密码 → 保存。用户首次登录时会强制修改密码。

方式二:通过 Rails 控制台设置

如果 Homelab 没有配置 SMTP 邮件服务,也可以用命令行设置密码:

bash
sudo gitlab-rails console -e production

# 查找用户
user = User.find_by_username('fishfinal')

# 设置密码
user.password = '你的密码'
user.password_confirmation = '你的密码'
user.save!

# 退出
exit

第六步:配置 SSH 密钥(免密推送)

用普通用户登录 GitLab 后:

  1. 点击右上角头像 → PreferencesSSH Keys
  2. 在终端生成 SSH 密钥(如果还没有):
    bash
    ssh-keygen -t ed25519 -C "[email protected]"
    cat ~/.ssh/id_ed25519.pub
  3. 将公钥内容粘贴到 GitLab 的 SSH Key 输入框中,点击 Add key

之后就可以使用 SSH 协议克隆仓库,无需每次输入密码:

bash
git clone [email protected]:fishfinal/my-project.git

第七步:常用管理命令

安装完成后,熟悉这些命令有助于日常维护:

bash
# 查看所有服务状态
sudo gitlab-ctl status

# 启动/停止/重启
sudo gitlab-ctl start
sudo gitlab-ctl stop
sudo gitlab-ctl restart

# 修改配置后重新应用
sudo gitlab-ctl reconfigure

# 查看实时日志(排查问题用)
sudo gitlab-ctl tail

配置文件位置:/etc/gitlab/gitlab.rb

总结与建议

  1. 国内用户务必使用镜像源:清华源能节省大量时间
  2. 提前规划 HTTPS 和域名:为 Go Module、Maven 等工具做好准备
  3. 内网部署使用自签名证书:同时禁用 Let's Encrypt 避免报错
  4. 严格区分 root 和普通用户:这是安全底线
  5. 配置 SSH 密钥:大幅提升日常使用体验

常见问题速查

问题解决方案
安装包下载太慢切换到清华源
Let's Encrypt 报错禁用 Let's Encrypt,使用自签名证书
浏览器提示"不安全"导入自签名证书到系统信任区,或配置 Git 跳过 SSL 验证
go get 私有仓库报错配置 GOPRIVATEGONOSUMDB
忘记 root 密码sudo gitlab-rails console -e production 重置
收不到邮件重置密码通过 Web UI 编辑用户设置密码,或用命令行设置

下一步

GitLab 安装完成后,你还可以继续配置:

  • CI/CD Runner:实现自动化构建部署
  • SMTP 邮件服务:让 GitLab 能发送通知邮件
  • 项目备份策略:定期备份 /var/opt/gitlab/ 目录
  • Go Module 私有仓库:配置 GOPROXYGOPRIVATE 实现无缝依赖管理
最后更新2026/07/01 17:25
如果你觉得这篇文章有帮助,或者想聊聊技术、工作,欢迎通过下面方式联系我:
contact fishfinal