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

手把手带你绕过 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 get 或 go 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) | 最小权限原则,安全可控 |
为什么?
- 安全风险:
root拥有整个实例的控制权,一旦泄露,所有项目都面临风险 - 审计混乱:多人共用
root无法追溯操作者 - 权限粒度:
root可以看到所有私有项目,无法模拟普通用户的权限边界
创建普通用户
- 用
root登录 → Admin Area → Users → New user - 填写用户名(如
fishfinal)、邮箱 - 选择 Regular(普通用户),而不是 Administrator
- 点击 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 后:
- 点击右上角头像 → Preferences → SSH Keys
- 在终端生成 SSH 密钥(如果还没有):bash
ssh-keygen -t ed25519 -C "[email protected]" cat ~/.ssh/id_ed25519.pub - 将公钥内容粘贴到 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
总结与建议
- 国内用户务必使用镜像源:清华源能节省大量时间
- 提前规划 HTTPS 和域名:为 Go Module、Maven 等工具做好准备
- 内网部署使用自签名证书:同时禁用 Let's Encrypt 避免报错
- 严格区分
root和普通用户:这是安全底线 - 配置 SSH 密钥:大幅提升日常使用体验
常见问题速查
| 问题 | 解决方案 |
|---|---|
| 安装包下载太慢 | 切换到清华源 |
| Let's Encrypt 报错 | 禁用 Let's Encrypt,使用自签名证书 |
| 浏览器提示"不安全" | 导入自签名证书到系统信任区,或配置 Git 跳过 SSL 验证 |
go get 私有仓库报错 | 配置 GOPRIVATE 和 GONOSUMDB |
忘记 root 密码 | sudo gitlab-rails console -e production 重置 |
| 收不到邮件重置密码 | 通过 Web UI 编辑用户设置密码,或用命令行设置 |
下一步
GitLab 安装完成后,你还可以继续配置:
- CI/CD Runner:实现自动化构建部署
- SMTP 邮件服务:让 GitLab 能发送通知邮件
- 项目备份策略:定期备份
/var/opt/gitlab/目录 - Go Module 私有仓库:配置
GOPROXY和GOPRIVATE实现无缝依赖管理
