Skip to content

Gitlab操作指南

一、版本选择

访问 GitLab 官方版本发布页获取最新稳定版:
GitLab 版本发布页

二、安装与初始化配置

1. 环境准备(Docker 部署)

Terminal window
# 创建数据存储目录
mkdir -p /data/gitlab/config; mkdir -p /data/gitlab/data; mkdir -p /data/gitlab/logs

2. 编写 Docker Compose 配置文件(gitlab.yml

services:
gitlab:
image: gitlab/gitlab-ce:17.9.1-ce.0 # 指定版本号
container_name: gitlab
restart: always
hostname: 'gitlab.gaojinbo.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.gaojinbo.com'
gitlab_rails['gitlab_shell_ssh_port'] = 2424 # SSH 端口映射
ports:
- '8929:80' # HTTP 端口映射
- '2424:22' # SSH 端口映射(容器内默认 22 端口)
volumes:
- '/data/gitlab/config:/etc/gitlab' # 配置文件持久化
- '/data/gitlab/logs:/var/log/gitlab' # 日志持久化
- '/data/gitlab/data:/var/opt/gitlab' # 数据持久化
shm_size: '256m' # 共享内存配置(根据服务器内存调整)

3. 启动容器

Terminal window
docker compose -f gitlab.yml up -d

4. Caddy 反向代理配置(HTTP 转 HTTPS)

http://gitlab.gaojinbo.com {
reverse_proxy http://localhost:8929 # 代理到容器 HTTP 端口
}

三、SSL 证书配置(HTTPS)

1. 修改 GitLab 配置文件

Terminal window
vi /data/gitlab/config/gitlab.rb
external_url 'https://gitlab.gaojinbo.com' # 切换为 HTTPS 地址
gitlab_rails['gitlab_ssh_host'] = 'gitlab.gaojinbo.com' # SSH 访问域名
gitlab_rails['time_zone'] = 'Asia/Shanghai' # 设置时区
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 自定义 SSH 端口(需与反向代理一致)
# SMTP 邮件配置(示例:腾讯企业邮箱)
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@gaojinbo.com"
gitlab_rails['smtp_password'] = "$$ PASSWD $$" # 替换为实际密码
gitlab_rails['smtp_domain'] = "exmail.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@gaojinbo.com' # 发件人邮箱
# Nginx 强制 HTTPS 重定向 & 证书配置
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/gitlab.gaojinbo.com.pem" # SSL 证书路径
nginx['ssl_certificate_key'] = "/etc/gitlab/gitlab.gaojinbo.com.key" # 私钥路径

2. 重新加载配置

Terminal window
docker exec -it gitlab gitlab-ctl reconfigure

四、LDAP 认证配置

1. 修改 GitLab 配置文件(启用 LDAP)

Terminal window
vi /data/gitlab/config/gitlab.rb
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = {
'main' => {
'label' => 'LDAP',
'host' => 'lldap.gaojinbo.com', # LDAP 服务器地址
'port' => 6360, # LDAP over TLS 端口
'uid' => 'uid', # 用户唯一标识字段
'base' => 'ou=people,dc=gaojinbo,dc=com', # 搜索基准路径
'encryption' => 'simple_tls', # 加密方式
'verify_certificates' => false, # 关闭证书验证(测试环境用)
'bind_dn' => 'uid=admin,ou=people,dc=gaojinbo,dc=com', # 绑定账户
'password' => 'gaojinbo123', # 绑定账户密码
'active_directory' => false,
'user_filter' => '(&(objectclass=person)(memberof=cn=git_user,ou=groups,dc=gaojinbo,dc=com))', # 用户过滤条件
'attributes' => {
'username' => 'uid', # 用户名对应字段
'email' => 'mail', # 邮箱对应字段
'name' => 'displayName', # 显示名称对应字段
'first_name' => 'givenName',
'last_name' => 'sn'
}
}
}

2. 应用配置

Terminal window
docker exec -it gitlab gitlab-ctl reconfigure

五、使用外部数据库(PostgreSQL 示例)

1. 禁用内置数据库并配置外部数据库

Terminal window
vi /data/gitlab/config/gitlab.rb
# 禁用内置 PostgreSQL
postgresql['enable'] = false
# 外部数据库配置
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'unicode'
gitlab_rails['db_host'] = '192.168.22.103' # 数据库服务器 IP/域名
gitlab_rails['db_database'] = 'gitlab' # 数据库名称
gitlab_rails['db_port'] = '5433' # 数据库端口
gitlab_rails['db_user'] = 'gaojinbo' # 数据库用户
gitlab_rails['db_password'] = 'gaojinbo.com' # 数据库密码

2. 重新加载配置

Terminal window
docker exec -it gitlab gitlab-ctl reconfigure

六、重置管理员密码

1. 进入容器终端

Terminal window
docker exec -it gitlab bash

2. 进入 Rails 控制台

Terminal window
gitlab-rails console

3. 修改密码(以 root 用户为例)

user = User.find_by(username: 'root')
user.password = 'gaojinbo.com' # 新密码
user.password_confirmation = 'gaojinbo.com'
user.save!
exit

4. 重启服务

Terminal window
gitlab-ctl restart

注意事项

  1. 端口冲突:确保映射的端口(如 89292424)未被其他服务占用。
  2. 证书路径:SSL 证书需提前放置在容器内指定路径(如 /etc/gitlab/)。
  3. LDAP 安全:生产环境建议启用 verify_certificates 并使用 CA 签名证书。
  4. 数据备份:定期备份 /data/gitlab 目录下的配置和数据文件。