📦 第04章 · GitLab Omnibus 安装

apt 安装/reconfigure

GitLab Omnibus 安装

这一章讲自托管 GitLab CE 的安装。用 Omnibus 包是最省事的方式:一条命令装好,自带 nginx/PostgreSQL/Redis 等全套依赖。装完 gitlab-ctl reconfigure 初始化。本机跑的就是 GitLab CE,外部由 nginx 反代。

先想清楚三件事

  1. 内存:GitLab 挺吃资源,建议至少 2GB 内存(单机),机器还不够可能会卡。
  2. 域名:确认用什么域名访问(本机 gitlab.bangdream.xyz),后面配 external_url。
  3. 部署形态:是否把 TLS 交给外层 nginx(本机是这样),GitLab 自带 nginx 只监听回环。

在 Ubuntu 上装 GitLab CE(Omnibus)

用官方脚本添加 gitlab 源再安装:

# 1) 加官方仓库脚本
curl -fsSL https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

# 2) 安装(指定版本可选;不指定装最新)
sudo apt update
sudo apt install gitlab-ce

提示 | 官方源在国内可能慢,可切换到镜像源(如清华/腾讯)提高速度。也可指定版本回滚,如 sudo apt install gitlab-ce=17.0.0。

配置 external_url(关键)

编辑 /etc/gitlab/gitlab.rb,设定访问地址:

external_url 'https://gitlab.bangdream.xyz'

初始化(reconfigure)

sudo gitlab-ctl reconfigure

这一步会安装/配置所有内置组件(nginx、PostgreSQL、Redis、sidekiq、puma、gitaly 等),并生成初始的 root 密码(版本不同,最新会输出到某个文件或需首次访问设置)。

耗时 | reconfigure 通常要几分钟,别中断。它决定服务能正常起。

获取并修改 root 密码

如果 reconfigure 生成了随机密码,或用本机的存放方式:

# 查看自动生成的 root 密码(某些版本)
cat /etc/gitlab/initial_root_password

# 或本机做法:把 root 密码记录在安全文件
cat /root/.deploy/gitlab_root_password

# 或直接命令行重置
sudo gitlab-rails runner "u=User.find_by(username:'root'); u.password='新密码'; u.password_confirmation='新密码'; u.save!"

安全 | root 密码属于敏感信息,存 chmod 600 的文件,别放进代码仓库或聊天明文。

启动/状态/日志

sudo gitlab-ctl status         # 看各组件状态
sudo gitlab-ctl restart        # 重启
sudo gitlab-ctl tail           # 跟随所有日志
gitlab-rails -v                # 看版本
sudo gitlab-ctl reconfigure    # 改配置后再跑一次

常见目录与命令

目录/命令 作用
/etc/gitlab/gitlab.rb 主配置文件
/var/opt/gitlab/gitlab-rails/etc/ 生成的配置
sudo gitlab-ctl reconfigure 应用配置(改 gitlab.rb 后必跑)
sudo gitlab-ctl status / restart 状态/重启
sudo gitlab-rails console / runner Rails 控制台
日志 sudo gitlab-ctl tail

前置注意(反代场景常见)

本机让外层 nginx 终止 TLS并反代到 127.0.0.1:8090,所以 gitlab.rb 里要把 GitLab 自带 nginx 改到回环 8090,并关掉它自己的 letsencrypt(详见下一章《gitlab.rb 配置》)。

容易错 | 若不改反代配置就直接把外部域名指到 80/443,会和 GitLab 自带的 nginx 冲突,或 TLS 重复/证书报错。务必让"一条链路"只终止一次 TLS。

相关命令 / 依赖检查

  • grep -i memory /var/opt/gitlab/ 看是否内存不足。
  • sudo gitlab-ctl tail postgresql,gitaly 看对应组件日志排错。
  • curl -sI https://gitlab.bangdream.xyz/ 访问测试。