Gitlab操作指南
一、版本选择
访问 GitLab 官方版本发布页获取最新稳定版:
GitLab 版本发布页
二、安装与初始化配置
1. 环境准备(Docker 部署)
# 创建数据存储目录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. 启动容器
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 配置文件
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'] = truegitlab_rails['smtp_address'] = "smtp.exmail.qq.com"gitlab_rails['smtp_port'] = 465gitlab_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'] = truegitlab_rails['smtp_tls'] = truegitlab_rails['gitlab_email_from'] = 'gitlab@gaojinbo.com' # 发件人邮箱
# Nginx 强制 HTTPS 重定向 & 证书配置nginx['redirect_http_to_https'] = truenginx['ssl_certificate'] = "/etc/gitlab/gitlab.gaojinbo.com.pem" # SSL 证书路径nginx['ssl_certificate_key'] = "/etc/gitlab/gitlab.gaojinbo.com.key" # 私钥路径
2. 重新加载配置
docker exec -it gitlab gitlab-ctl reconfigure
四、LDAP 认证配置
1. 修改 GitLab 配置文件(启用 LDAP)
vi /data/gitlab/config/gitlab.rb
gitlab_rails['ldap_enabled'] = truegitlab_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. 应用配置
docker exec -it gitlab gitlab-ctl reconfigure
五、使用外部数据库(PostgreSQL 示例)
1. 禁用内置数据库并配置外部数据库
vi /data/gitlab/config/gitlab.rb
# 禁用内置 PostgreSQLpostgresql['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. 重新加载配置
docker exec -it gitlab gitlab-ctl reconfigure
六、重置管理员密码
1. 进入容器终端
docker exec -it gitlab bash
2. 进入 Rails 控制台
gitlab-rails console
3. 修改密码(以 root
用户为例)
user = User.find_by(username: 'root')user.password = 'gaojinbo.com' # 新密码user.password_confirmation = 'gaojinbo.com'user.save!exit
4. 重启服务
gitlab-ctl restart
注意事项
- 端口冲突:确保映射的端口(如
8929
、2424
)未被其他服务占用。 - 证书路径:SSL 证书需提前放置在容器内指定路径(如
/etc/gitlab/
)。 - LDAP 安全:生产环境建议启用
verify_certificates
并使用 CA 签名证书。 - 数据备份:定期备份
/data/gitlab
目录下的配置和数据文件。