GitLab: Установка и настройка

GitLab: Установка и настройка

Инструкция по установке и первичной настройке #GitLab.

Репозиторий

  • Скачать и установить ключ репозитория:
1
 curl -fsSL 'https://lib.onl/ru/2025/02/f2d03575-8435-5182-925d-ac2a22100055/gitlab.asc' | gpg --dearmor -o '/etc/apt/keyrings/gitlab.gpg'
  • Создать файл репозитория /etc/apt/sources.list.d/gitlab.sources:
1
 . '/etc/os-release' && echo -e "X-Repolib-Name: GitLab\nEnabled: yes\nTypes: deb\nURIs: https://packages.gitlab.com/gitlab/gitlab-ee/${ID}\n#URIs: https://mirror.yandex.ru/mirrors/packages.gitlab.com/gitlab/gitlab-ce\nSuites: ${VERSION_CODENAME}\nComponents: main\nArchitectures: $( dpkg --print-architecture )\nSigned-By: /etc/apt/keyrings/gitlab.gpg\n" | tee '/etc/apt/sources.list.d/gitlab.sources' > '/dev/null'

Установка

  • Установить пакеты:
1
 apt update && apt install --yes gitlab-ee

Настройка

  • Добавить в конец файла /etc/gitlab/gitlab.rb вызов локальной конфигурации:
1
 f='/etc/gitlab/gitlab.rb'; [[ -f "${f}" && ! -f "${f}.orig" ]] && mv "${f}" "${f}.orig" && cp "${f}.orig" "${f}" && echo -e '\nfrom_file "/etc/gitlab/gitlab.local.rb"\n' | tee -a "${f}" > '/dev/null'
  • Скачать файл локальной конфигурации в /etc/gitlab/:
1
 f=('gitlab'); d='/etc/gitlab'; p='https://lib.onl/ru/2025/02/f2d03575-8435-5182-925d-ac2a22100055'; for i in "${f[@]}"; do curl -fsSLo "${d}/${i}.local.rb" "${p}/${i}.rb"; done

Миграция

Angie

1
 f=('gitlab-ssl'); d='/etc/angie/http.d'; p='https://lib.onl/ru/2025/02/f2d03575-8435-5182-925d-ac2a22100055'; for i in "${f[@]}"; do curl -fsSLo "${d}/${i}.conf" "${p}/${i}.conf"; done

PostgreSQL

  • Остановить все сервисы GitLab, кроме #PostgreSQL:
1
gitlab-ctl stop && gitlab-ctl start postgresql && gitlab-ctl status
  • Экспортировать базу данных gitlabhq_production в файл /tmp/gitlabhq_production.sql:
1
sudo -u 'gitlab-psql' /opt/gitlab/embedded/bin/pg_dump --host='/var/opt/gitlab/postgresql' --username='gitlab-psql' --dbname='gitlabhq_production' --clean --create --file='/tmp/gitlabhq_production.sql'
  • Создать роль gitlab на внешнем #PostgreSQL:
1
sudo -u 'postgres' createuser --pwprompt 'gitlab'
  • Импортировать файл /tmp/gitlabhq_production.sql во внешний #PostgreSQL:
1
sudo -u 'postgres' psql --file='/tmp/gitlabhq_production.sql'
  • Создать расширения для базы данных gitlabhq_production во внешнем #PostgreSQL:
1
echo 'create extension if not exists pg_trgm; create extension if not exists btree_gist; create extension if not exists plpgsql;' | sudo -u 'postgres' psql 'gitlabhq_production'
  • Добавить настройки в файл конфигурации /etc/gitlab/gitlab.rb:
1
2
3
4
5
postgresql['enable'] = false
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'unicode'
gitlab_rails['db_host'] = '/run/postgresql'
gitlab_rails['db_password'] = '*****'

Лицензия

Генератор лицензии

  • Скачать и распаковать генератор:
1
 f=('license.gen'); d="${HOME}"; p='https://lib.onl/ru/2025/02/f2d03575-8435-5182-925d-ac2a22100055'; for i in "${f[@]}"; do curl -fsSLo "${d}/${i}.tar.xz" "${p}/${i}.tar.xz" && tar -xJf "${d}/${i}.tar.xz"; done
  • Запустить создание образа:
1
docker build "${HOME}/license.gen" -t 'gitlab-license-generator:main'
  • Создать ключ лицензии в директории ./license:
1
docker run --rm -it -v './license:/license-generator/build' -e LICENSE_NAME='GitLab' -e LICENSE_COMPANY='GitLab' -e LICENSE_EMAIL='license@example.com' -e LICENSE_PLAN='ultimate' -e LICENSE_USER_COUNT='2147483647' -e LICENSE_EXPIRE_YEAR='2500' 'gitlab-license-generator:main'

Готовая лицензия

  • Скачать открытый ключ в директорию /opt/gitlab/embedded/service/gitlab-rails и заменить им оригинальный файл license_encryption_key.pub:
1
 f=('public'); d='/opt/gitlab/embedded/service/gitlab-rails'; p='https://lib.onl/ru/2025/02/f2d03575-8435-5182-925d-ac2a22100055'; [[ -f "${d}/.license_encryption_key.pub" && ! -f "${d}/.license_encryption_key.pub.orig" ]] && mv "${d}/.license_encryption_key.pub" "${d}/.license_encryption_key.pub.orig"; for i in "${f[@]}"; do curl -fsSLo "${d}/.license_encryption_key.pub" "${p}/${i}.key"

ZFS

  • Создать тома elasticsearch и gitlab с алгоритмом компрессии zstd в пуле data:
1
 for i in 'elasticsearch' 'gitlab'; do zfs create -o 'compression=zstd' "data/${i}"; done
  • Установить точку монтирования тома gitlab на /var/opt/gitlab:
1
 p='data'; v='gitlab'; zfs set "mountpoint=/var/opt/${v}" "${p}/${v}"

Источники: