02. 装完 GitLab 先配啥?管理员视角的初始化设置清单

「GitLab」系列已发布: 00. GitLab 不只是代码托管:一套 DevOps 平台的 6 大核心能力 | 01. GitLab 怎么装最省心?Omnibus/Docker/K8s 三种姿势 | 02. 装完 GitLab 先配啥?管理员视角的初始化设置清单(本文) | 03. GitLab 角色搞不清?Member/Maintainer/Owner 权限全解

邮件发不出、注册乱开、项目乱建——初始化配置没做好,后面全是运维债。管理员视角的邮件、安全、默认值设置清单,一篇理清。

前置条件

已按第 01 篇完成安装部署,能用浏览器正常访问管理后台。用 root 登录。

一、管理员面板

root 登录后在左侧或顶部导航栏进 Admin Area,整个 GitLab 实例的控制中心:

模块 功能
Overview 仪表盘:用户数、项目数、组件版本等全局统计
Users 用户创建、编辑、禁用、删除
Groups 群组管理
Projects 所有项目的全局视图
Settings 实例级配置(通用、仓库、CI/CD、网络等)
Monitoring 系统监控(后台任务、日志、健康检查)
Messages 全局广播消息
Runners Runner 管理

1.1 实例基础配置

1.1.1 通用设置

Admin Area → Settings → General。关键项:

  • Default projects limit: 每个用户默认项目数上限
  • Sign-up enabled: 是否允许公开注册(生产环境强烈建议关)
  • Require admin approval for new sign-ups: 新注册需管理员审批

Sign-in restrictions:

  • Two-factor authentication: 强制/可选双因素认证
  • Email confirmation: 注册是否需要邮箱验证

Visibility and access controls:

  • Default project visibility: 新项目默认可见性(Private/Internal/Public)
  • Default group visibility: 新群组默认可见性
  • Restricted visibility levels: 禁止用户选特定可见性级别

Account and limit:

  • Maximum attachment size: 附件最大大小(默认 10 MB)
  • Maximum import size: 项目导入最大
  • Repository size limit: 单个仓库大小限制(0 = 不限)

1.1.2 仓库存储路径

编辑 /etc/gitlab/gitlab.rb:


# 默认
git_data_dirs({
  "default" => {
    "path" => "/var/opt/gitlab/git-data"
  }
})

# 多路径(不同项目分布在不同磁盘)
git_data_dirs({
  "default" => {
    "path" => "/data/gitlab/repos"
  },
  "storage2" => {
    "path" => "/data2/gitlab/repos"
  }
})

配置后执行:sudo gitlab-ctl reconfigure

1.1.3 对象存储

把大文件(LFS、附件、CI 工件等)存到 S3 兼容的对象存储,减轻主服务器压力:


# /etc/gitlab/gitlab.rb
gitlab_rails['object_store']['enabled'] = true
gitlab_rails['object_store']['proxy_download'] = true
gitlab_rails['object_store']['connection'] = {
  'provider' => 'AWS',
  'region' => 'us-east-1',
  'endpoint' => 'https://s3.amazonaws.com',
  'aws_access_key_id' => 'YOUR_ACCESS_KEY',
  'aws_secret_access_key' => 'YOUR_SECRET_KEY'
}
gitlab_rails['object_store']['objects']['artifacts']['bucket'] = 'gitlab-artifacts'
gitlab_rails['object_store']['objects']['lfs']['bucket'] = 'gitlab-lfs'
gitlab_rails['object_store']['objects']['uploads']['bucket'] = 'gitlab-uploads'

1.2 用户管理

1.2.1 创建用户

Web UI:Admin Area → Users → New user。填 Name、Username、Email。可以设初始密码(不设则系统发密码重置邮件)和权限级别(Regular / Administrator)。

命令行(Omnibus):

sudo gitlab-rails console

# 创建普通用户
user = User.new(
  username: 'zhangsan',
  email: 'zhangsan@example.com',
  name: 'Zhang San',
  password: 'TempPass123!',
  password_confirmation: 'TempPass123!'
)
user.skip_confirmation!  # 跳过邮箱验证


# 提升为管理员
user.admin = true
user.save!

1.2.2 用户状态控制

sudo gitlab-rails console

# 禁用
user = User.find_by_username('zhangsan')
user.block!

# 启用
user.activate!

# 查看信息
user = User.find_by_username('zhangsan')
puts "ID: #{user.id}, State: #{user.state}, Admin: #{user.admin}"

1.2.3 批量导入

CSV 格式:

name,username,email,organization,role
Zhang San,zhangsan,zhangsan@company.com,Engineering,Developer
Li Si,lisi,lisi@company.com,QA,Tester

导入路径:Admin Area → Users → Import。

1.3 群组管理

群组(Group)是 GitLab 组织和权限的核心。多个相关项目打包在一起,统一配成员权限。

1.3.1 创建群组

Admin Area → Groups → New group。

可见性:

  • Private:仅成员可见
  • Internal:所有登录用户可见
  • Public:任何人可见

1.3.2 角色权限

角色 能做什么
Guest 看 Issue、创建 Issue、看 MR
Reporter 拉代码、看 CI/CD 日志、项目分析
Developer 推代码、创建/管理 MR 和分支、触发 CI/CD
Maintainer 管理项目设置、加成员、推到受保护分支
Owner 群组完全控制(仅群组级别有此角色)

1.3.3 推荐的组织结构

graph TD Company[顶级群组] Company --> Backend[Backend 子群组] Company --> Frontend[Frontend 子群组] Company --> DevOps[DevOps 子群组] Backend --> ApiService[api-service 项目] Backend --> AuthService[auth-service 项目] Frontend --> WebApp[web-app 项目] Frontend --> AdminPanel[admin-panel 项目] DevOps --> Infra[infrastructure 项目] DevOps --> CiTemplates[ci-templates 项目]

1.4 项目配置

1.4.1 创建项目

三种方式:空白项目、从模板创建、从外部导入(GitHub、Bitbucket、GitLab.com 等)。

1.4.2 关键设置

项目 → Settings → General:

项目可见性

Merge requests:

  • Merge method: Merge commit / semi-linear history / Fast-forward merge
  • Squash commits when merging: 合并时压缩所有提交
  • Merge checks: 必须通过 CI/CD Pipeline 才允许合并
  • Merge approvals: 要求指定数量审批

Repository:

  • Default branch: 默认分支(推荐 main)
  • Push rules: 提交信息格式、文件大小限制等
  • Protected branches: 分支保护规则

1.4.3 分支保护

Settings → Repository → Protected branches:


# 典型配置
Branch: main
Allowed to merge: Maintainers        # 只有 Maintainer 可以合
Allowed to force push: 关闭
Code owner approval: 开启            # 要求 CODEOWNERS 审批

1.5 实例监控与维护

1.5.1 系统信息与健康检查


# 版本与组件信息
sudo gitlab-rake gitlab:env:info

# 健康检查
sudo gitlab-rake gitlab:check

# Git 仓库完整性
sudo gitlab-rake gitlab:git:fsck

# 后台任务队列
sudo gitlab-rake gitlab:sidekiq:check

1.5.2 日志位置

组件 日志路径
Puma (Web) /var/log/gitlab/puma/
Sidekiq /var/log/gitlab/sidekiq/
PostgreSQL /var/log/gitlab/postgresql/
Gitaly /var/log/gitlab/gitaly/
Nginx /var/log/gitlab/nginx/

1.6 性能监控与清理


# 数据库连接池
sudo gitlab-rails runner "puts ActiveRecord::Base.connection_pool.stat"

# 清理过期 CI/CD 工件和日志
sudo gitlab-rake gitlab:cleanup:orphan_job_artifact_files
sudo gitlab-rake gitlab:cleanup:orphan_lfs_files

1.6.1 定期维护


# root 用户 crontab
sudo crontab -e

# 每天凌晨 2 点清过期会话
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:cleanup:sessions

# 每周日凌晨 3 点清孤立文件
0 3 * * 0 /opt/gitlab/bin/gitlab-rake gitlab:cleanup:orphan_job_artifact_files

二、管理员工作流程

flowchart LR A[登录 Admin Area] --> B{配置类型} B -->|用户管理| C[创建/禁用/导入用户] B -->|群组设置| D[创建群组/设权限] B -->|实例配置| E[修改 gitlab.rb] B -->|监控维护| F[健康检查/清理] C & D & E & F --> G[gitlab-ctl reconfigure] G --> H[验证配置生效]

三、文章引用

📌 本文首发于微信公众号 【运维知识点滴】——专注运维实战干货,微信搜索“运维知识点滴”或扫下方二维码关注,更新不迷路。
📎 微信原文:02. 装完 GitLab 先配啥?管理员视角的初始化设置清单

微信公众号【运维知识点滴】 微信小程序【A5单据合并&大试卷拆分转A4打印】
运维实战干货 · 关注追更 Word 转 PDF · 试卷/发票打印神器 · 免费
运维实战干货 · 关注追更 Word 转 PDF · 试卷/发票打印神器 · 免费

💡 小程序【A5单据合并&大试卷拆分转A4打印】是干嘛的? 一个 Word 转 PDF 的打印神器,专治“文档版式和打印机对不上”:

  • A3 试卷打不出来? 学校发的电子版试卷多是 A3,家用打印机只吃 A4——上传 Word 一键转换:可缩到一页 A4(页数不变),也可对半拆成两张 A4(1:1 原大、字更清晰),两种模式自选;
  • 版式不乱:真实渲染引擎原样转换、绝不重排内容,转出的 PDF 和原 Word 排版一致,公式/表格/图片不跑版;
  • 两张 A5 单据拼一张 A4:出租车票、火车票等报销凭证拼版后,一次打印、整齐粘贴;
  • 隐私省心:无需注册,转换结果留存 5 天、最多下载 5 次即自动删除,不留任何历史记录;
  • 微信扫码即用,免费、免安装,支持 doc / docx(≤50MB)。

上一篇:01. GitLab 怎么装最省心?Omnibus/Docker/K8s 三种姿势 | 下一篇:03. GitLab 角色搞不清?Member/Maintainer/Owner 权限全解