【Gitlab】踩坑记录分享

前言

太菜了,gitlab docs 很全了,但是还是配了断断续续快一个月才配出完全体,网上也没有作业可抄
现在分享出来接受佬友们拷打,希望佬们多提提意见 :tieba_087:

这个 gitlab 是内网的 pve 上的一个 lxc ,走 pve 上另一个 vm 的 Nginx Proxy Manager(以下简称「NPM」),通过 frp 转发到公网小鸡实现的。内网路由器端做了DNS反向代理。

部署了最新的gitlab-18.5.1-ee

文中的IP:

  • NPM : 192.168.1.66

  • Gitlab WebUI + registry:192.168.1.22

  • Gitlab Pages:192.168.1.33

也不知道应不应该发到IDC,想了想还是发在这里好

一些小记

配置文件在的/etc/gitlab/gitlab.rb

改完记得执行

sudo gitlab-ctl reconfigure

升级 Docker 版 Gitlab

已经从docker容器迁移至单独的lxc容器了。你问我怎么升级?备份完之后直接

sudo apt update
sudo apt upgrade

0. 备份

官方文档

# 备份仓库/帐户等 不包含配置文件!
# 这个命令会在容器的 /var/opt/gitlab/backups 目录下创建一个 tar 包
docker exec -t gitlab gitlab-backup create 
# 进入容器或映射目录,备份配置文件及密钥
tar -czvf /etc/gitlab/gitlab-config-backup-$(date +%F).tar.gz /etc/gitlab
# 恢复
gitlab-backup restore

1. 查看升级路线图

官方指南

举个例子,目前是17.10.4,准备升级到18.5.1

拉个镜像先~

docker pull gitlab/gitlab-ce:17.11.7-ce.0
docker pull gitlab/gitlab-ce:18.2.8-ce.0
docker pull gitlab/gitlab-ce:18.5.1-ce.0

1.1. 进入维护模式(非免费版)

如何进入维护模式

2. 开干!

首先停止并移除旧容器:

docker compose down

修改原先compose的镜像版本至下一阶段的版本,随后

docker compose up -d

建议每成功一次就执行一次备份,随后重复此过程即可。

破解 Gitlab ee

有条件请支持正版喵!

有条件请支持正版喵!

有条件请支持正版喵!

穷鬼的粗鄙结论

对于个人使用下次安装gitlab可以一步到位:直接装ee版不用装ce版。
未激活的ee,功能会回退到ce,而ce升级ee需要迁移,ee破解也方便。

迁移请执行官方指南

破解教程请见参考文献,我用的方法1

基础配置

我这里的 gitlab webui 与 git 后端、registry 分开,走3个不同的域名,webui走小黄云,其他不走

OA 部分不谈也不想谈,因为这里的 appid 对应的是 github app 里的 client id ,我曾因为这个找了一天的问题 :tieba_087:

external_url 'https://gitlab.****.***'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['trusted_proxies'] = ['192.168.1.66']
nginx['listen_port'] = 80
nginx['listen_https'] = false
letsencrypt['enable'] = false

NPM配置:代理服务https://gitlab.****.***http://192.168.1.22:80

配置 Pages

502的解决方案

Custom Domains 配置

自用的可以把证明域名所有权的选项关掉,方便很多。

官方说明关闭方法

最终ruby部分(没说就是注释了):

pages_external_url "https://pages.****.***"
gitlab_pages['enable'] = true

##! Custom Domains 配置
##! 这个ip我是pve直接加了个网卡上去 需要与gitlab主ip不同
gitlab_pages['external_http'] = ['192.168.1.33:80']
##!内置的nginx也要换个监听ip
nginx['listen_addresses'] = ['192.168.1.22']

gitlab_pages['external_https'] = nil

gitlab_pages['propagate_correlation_id'] = true

gitlab_pages['log_verbose'] = false

gitlab_pages['redirect_http'] = false

# 502的解决方案
gitlab_pages['internal_gitlab_server'] = "http://localhost:8080"

pages_nginx['enable'] = false

NPM配置:代理服务https://*.pages.****.***http://192.168.1.33:80

配置 registry

闹麻了,在5005和5050端口调了半天,结果一看端口占用,5开头端口就一个127.0.0.1:5000

最后改成了下面的这份配置,把registry_http_addr127.0.0.1:5000改到你的ip:5000,终于可以正常上传下载镜像了

最终ruby部分(没说就是注释了):

registry_external_url 'https://registry.****.***'

gitlab_rails['registry_enabled'] = true

# https://docs.gitlab.com/administration/packages/container_registry_metadata_database/
registry['database'] = {
    'enabled' => true,
}

registry['registry_http_addr'] = "192.168.1.22:5000"

registry_nginx['enable'] = false

NPM配置:代理服务https://registry.****.***http://192.168.1.22:5000

给 git 拉库地址单独走一路

由于需要考虑到ssh拉库,所以nginx部分要注意,主机名是公网域名,但是实际连接主机时用的是转发的2424

我用的是NPM,所以只能做端口转发

gitlab_rails['gitlab_ssh_host'] = 'git.****.***'
gitlab_rails['gitlab_shell_ssh_port'] = 2424

NPM配置:端口转发2424192.168.1.22:22


【Gitlab】踩坑记录分享
https://blog.jiang.in/archives/ae4cbe1a-5e14-461e-8131-351665ca866f
作者
Jiang
发布于
2025年12月11日
更新于
2025年12月11日
许可协议