01. GitLab 怎么装最省心?Omnibus/Docker/K8s 三种姿势
「GitLab」系列已发布: 00. GitLab 不只是代码托管:一套 DevOps 平台的 6 大核心能力 | 01. GitLab 怎么装最省心?Omnibus/Docker/K8s 三种姿势(本文)
Omnibus 一键包、Docker 容器、Helm Chart 上 K8s——三种主流部署方式各有取舍。本文对比优劣,教你按团队规模选对安装姿势。
一、Omnibus 安装(官方推荐)
1.1 系统依赖准备
# Ubuntu / Debian
sudo apt update
sudo apt install -y curl openssh-server ca-certificates tzdata perl
# Postfix 邮件通知(可选,也能用外部 SMTP)
sudo apt install -y postfix
# 配置界面选 "Internet Site",填域名
1.2 添加官方仓库并安装
# 添加 EE 仓库(EE 包含 CE 全部功能,试用期免费)
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
# 安装
sudo EXTERNAL_URL="https://gitlab.example.com" apt install -y gitlab-ee
# 只要社区版的话:
# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# sudo EXTERNAL_URL="https://gitlab.example.com" apt install -y gitlab-ce
1.3 获取初始密码并登录
# 密码存在这个文件里(24 小时内有效)
sudo cat /etc/gitlab/initial_root_password
# Password: abc123def456...
# 浏览器打开 https://gitlab.example.com
# 用户名:root
# 密码:上面拿到的
1.4 RHEL 9 / CentOS Stream 9 安装
# RHEL 9 / CentOS Stream 9
sudo dnf install -y curl policycoreutils openssh-server openssh-clients perl
# 启用 Postfix
sudo systemctl enable postfix --now
# 加仓库安装
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee
1.5 常用维护命令
# 重新配置(改了 gitlab.rb 后必须跑)
sudo gitlab-ctl reconfigure
# 看所有服务状态
sudo gitlab-ctl status
# 重启单个服务
sudo gitlab-ctl restart nginx
sudo gitlab-ctl restart puma
# 重启全部
sudo gitlab-ctl restart
# 停止
sudo gitlab-ctl stop
# 看日志
sudo gitlab-ctl tail nginx
sudo gitlab-ctl tail puma
sudo gitlab-ctl tail postgresql
# 备份
sudo gitlab-backup create
# 升级最新版
sudo apt update && sudo apt install gitlab-ee
二、Docker 安装
2.1 单容器启动
# 建数据持久化目录
export GITLAB_HOME=/srv/gitlab
mkdir -p $GITLAB_HOME/{config,logs,data}
# 启动
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee:latest
2.2 docker-compose 部署
# docker-compose.yml
version: '3.8'
services:
gitlab:
image: gitlab/gitlab-ee:17.6.0-ee.0
container_name: gitlab
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
shm_size: '256m'
docker compose up -d
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
三、Kubernetes Helm Chart 部署
3.1 添加 Helm 仓库并安装
# 加 Helm 仓库
helm repo add gitlab https://charts.gitlab.io/
helm repo update
# 建命名空间
kubectl create namespace gitlab
# 写 values.yaml
cat > gitlab-values.yaml << 'EOF'
global:
hosts:
domain: example.com
externalIP: ""
ingress:
configureCertmanager: true
class: nginx
tls:
enabled: true
initialRootPassword:
secret: gitlab-root-secret
certmanager-issuer:
email: admin@example.com
gitlab:
webservice:
minReplicas: 2
maxReplicas: 5
sidekiq:
minReplicas: 1
maxReplicas: 2
registry:
enabled: true
minio:
enabled: true
nginx-ingress:
enabled: false
EOF
# 安装
helm install gitlab gitlab/gitlab \
--namespace gitlab \
--timeout 600s \
--values gitlab-values.yaml
# 拿 root 密码
kubectl get secret gitlab-gitlab-initial-root-password -n gitlab \
-o jsonpath="{.data.password}" | base64 --decode
3.2 查看部署状态
kubectl get pods -n gitlab -w
kubectl logs -n gitlab deployment/gitlab-webservice-default
四、SMTP 邮件配置
4.1 修改 root 密码
# Omnibus:进 Rails 控制台
sudo gitlab-rails console
user = User.find_by_username('root')
user.password = '新的强密码'
user.password_confirmation = '新的强密码'
user.save!
4.2 配置 SMTP
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "gitlab@example.com"
gitlab_rails['smtp_password'] = "your_password"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
sudo gitlab-ctl reconfigure
# 测试发邮件
sudo gitlab-rails console
# Notify.test_email('admin@example.com', 'Test Subject', 'Test Body').deliver_now
五、常见问题排查
5.1 Puma 启动失败
# 检查 Puma
sudo gitlab-ctl status puma
# 持续失败看日志
sudo gitlab-ctl tail puma
# 最常见:内存不够
free -h
# 可用内存不足 4 GB → 加内存或调小 puma worker
六、文章引用
📌 本文首发于微信公众号 【运维知识点滴】——专注运维实战干货,微信搜索“运维知识点滴”或扫下方二维码关注,更新不迷路。
📎 微信原文:01. GitLab 怎么装最省心?Omnibus/Docker/K8s 三种姿势
| 微信公众号【运维知识点滴】 | 微信小程序【A5单据合并&大试卷拆分转A4打印】 |
|---|---|
![]() |
![]() |
| 运维实战干货 · 关注追更 | Word 转 PDF · 试卷/发票打印神器 · 免费 |
💡 小程序【A5单据合并&大试卷拆分转A4打印】是干嘛的? 一个 Word 转 PDF 的打印神器,专治“文档版式和打印机对不上”:
- A3 试卷打不出来? 学校发的电子版试卷多是 A3,家用打印机只吃 A4——上传 Word 一键转换:可缩到一页 A4(页数不变),也可对半拆成两张 A4(1:1 原大、字更清晰),两种模式自选;
- 版式不乱:真实渲染引擎原样转换、绝不重排内容,转出的 PDF 和原 Word 排版一致,公式/表格/图片不跑版;
- 两张 A5 单据拼一张 A4:出租车票、火车票等报销凭证拼版后,一次打印、整齐粘贴;
- 隐私省心:无需注册,转换结果留存 5 天、最多下载 5 次即自动删除,不留任何历史记录;
- 微信扫码即用,免费、免安装,支持 doc / docx(≤50MB)。

