Установка GitLab CE на Ubuntu 20.04
TL;DR
Установите GitLab CE на сервер Ubuntu 20.04 через официальный репозиторий Omnibus, настройте external_url и включите Let’s Encrypt для SSL. После установки проверьте статус служб, отключите публичную регистрацию, создайте проект и выполните простые операции Git для верификации.
Краткое введение
GitLab — это платформа DevOps с открытым исходным кодом для хранения и управления Git-репозиториями, обзора кода, управления задачами, CI/CD и мониторинга. В этой инструкции показан быстрый и надёжный способ установки GitLab Community Edition (CE) на Ubuntu 20.04 с использованием пакетов Omnibus.
Требования
- Сервер с Ubuntu 20.04 LTS. Рекомендуется выделить минимум 4 ГБ ОЗУ и 2 vCPU для базовой рабочей нагрузки; для производственных установок — больше ресурсов и отдельный диск для данных.
- Действующий домен, указывающий на IP вашего VPS (A/AAAA запись).
- Пароль root или учётная запись с правами sudo.
- Открытые порты: 80 и 443 (HTTP/HTTPS) и 22 при необходимости для SSH.
Important: Настройте DNS заранее, иначе Let’s Encrypt не сможет подтвердить домен.
Шаг 1. Обновление системы и установка зависимостей
Обновите пакеты и установите требуемые утилиты:
apt-get update -y
apt-get upgrade -yУстановите дополнительные пакеты:
apt-get install apt-transport-https gnupg2 curl -yNotes: apt-transport-https позволяет APT работать через HTTPS; curl используется для загрузки GPG-ключей.
Шаг 2. Добавление официального репозитория GitLab
GitLab не входит в стандартный репозиторий Ubuntu 20.04, поэтому добавим официальный репозиторий Omnibus.
Скачайте и добавьте GPG-ключ:
curl -sL https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey | apt-key add -Создайте файл репозитория:
nano /etc/apt/sources.list.d/gitlab.listДобавьте в него следующие строки:
deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ bionic main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ bionic mainСохраните файл и обновите индексы пакетов:
apt-get update -y
apt-get install gitlab-ce -yПосле завершения установки вы увидите сообщение об успешной установке и подсказку про параметр external_url в /etc/gitlab/gitlab.rb. Пример вывода инсталлятора содержит ASCII-логаотип и указание запустить gitlab-ctl reconfigure после задания external_url.
Шаг 3. Настройка external_url и первичная конфигурация
Отредактируйте конфигурационный файл и укажите ваш домен:
nano /etc/gitlab/gitlab.rbНайдите и измените строку на ваш действующий URL (HTTP или HTTPS):
external_url 'http://gitlab.example.com'Сохраните файл и примените конфигурацию:
gitlab-ctl reconfigureОжидаемый вывод покажет выполнение рецептов (puma, sidekiq, nginx и т.д.) и сообщение “gitlab Reconfigured!”.
Проверка статуса служб:
gitlab-ctl statusВы получите список сервисов и их статусы (puma, sidekiq, postgresql, nginx и пр.).
Шаг 4. Включение HTTPS через Let’s Encrypt
Рекомендуется защитить инстанс HTTPS. Убедитесь, что ваш домен указывает на сервер.
Установите клиент Let’s Encrypt (Certbot):
apt-get install letsencrypt -yВнесите изменения в /etc/gitlab/gitlab.rb:
nano /etc/gitlab/gitlab.rbИзмените и добавьте строки:
external_url 'https://gitlab.example.com'
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['[email protected]']
letsencrypt['auto_renew'] = trueСохраните и примените:
gitlab-ctl reconfigureNotes: Omnibus GitLab автоматически выполнит запрос сертификата при корректно настроенном DNS и открытых портах 80/443. Если сертификат не будет выписан автоматически, проверьте логи и статус nginx.
Шаг 5. Первый вход в веб-интерфейс
Откройте в браузере URL вашего GitLab, например https://gitlab.example.com.

Установите новый пароль для пользователя root и затем выполните вход.


Если вход выполнен успешно — вы попадаете на панель администратора.
Шаг 6. Отключение публичной регистрации
По умолчанию регистрация открыта — это удобно для публичных проектов. Для частного корпоративного инстанса рекомендуется её отключить.
На панели администратора перейдите в раздел администрирования и откройте Настройки:


В настройках найдите блок регистрации, разверните и снимите галочку Разрешить регистрацию. Сохраните изменения:

После выхода вы увидите страницу входа без опции регистрации:

Important: Если планируете централизованную аутентификацию, настройте LDAP/SSO до отключения регистрации.
Шаг 7. Создание проекта и проверка функциональности Git
Создайте новый проект в веб-интерфейсе:


После создания клонируйте репозиторий на удалённую машину:
git config --global user.name "Ваше Имя"
git config --global user.email "[email protected]"
git clone https://gitlab.example.com/root/project1.gitПример вывода при клонировании пустого репозитория показывает приветствие и предупреждение об пустом репозитории.
Создайте README, закоммитьте и запушьте изменения:
cd project1
echo "This is my first file" > README.md
git add README.md
git commit -m "add README"
git push -u origin masterПосле успешного push зайдите в веб-интерфейс и убедитесь, что файл появился в проекте:

Чеклист ролей перед вводом в эксплуатацию
- Администратор:
- Настроить резервное копирование /var/opt/gitlab.
- Настроить мониторинг и алерты (Prometheus/Grafana по желанию).
- Проверить автоматическое обновление сертификатов Let’s Encrypt.
- DevOps:
- Настроить доступный объём диска и retention для логов и CI артефактов.
- Ограничить доступ в брандмауэре до необходимых портов.
- Разработчики:
- Проверить SSH-ключи и доступ по HTTPS/SSH.
- Создать шаблон проекта и CI/CD pipeline.
Мини‑методология установки (короткий план):
- Подготовка: резервное копирование, DNS и порты.
- Установка зависимостей и репозитория.
- Установка пакета gitlab-ce и базовая конфигурация external_url.
- Включение HTTPS и проверка статуса служб.
- Настройка политики доступа и тестирование рабочих сценариев.
Тесты приёмки и проверка после установки
Критерии приёмки:
- Веб-интерфейс доступен по HTTPS без ошибок сертификата.
- Службы gitlab-ctl status показывают все ключевые сервисы в состоянии run.
- В проект можно успешно запушить изменения по HTTPS или SSH.
- Let’s Encrypt сертификат автоматически обновляется (проверка cron/renew).
Примеры тестов:
- Выполнить git clone/push/pull из внешней машины.
- Провести вход под root и обычным пользователем.
- Отключить регистрацию и попытаться зарегистрировать нового пользователя (ожидается отказ).
Альтернативные подходы к развёртыванию
- Docker / Docker Compose: подойдёт для тестовых инстансов и простоты развёртывания, но требует настройки персистентных томов и сети.
- Kubernetes с Helm chart: подходит для масштабируемых production-окружений и для мульти‑node установок.
- Установка из исходников: используется редко, требует глубокой экспертизы и поддержки зависимостей.
Counterexample: Если нужен только лёгкий Git-сервер без CI/CD и мониторинга, можно использовать bare Git + Gitea для экономии ресурсов.
Разбор типичных проблем и рекомендации по устранению неполадок
Проблема: Не удаётся получить Let’s Encrypt сертификат.
Причины: DNS не указывает на сервер, порты 80/443 заблокированы, rate limit Let’s Encrypt.
Решение: проверить DNS, открыть порты, временно отключить брандмауэр, запросить сертификат вручную и проверить логи /var/log/letsencrypt.Проблема: gitlab-ctl status показывает down для alertmanager или gitaly.
Решение: посмотреть логи через gitlab-ctl tail, проверить доступность портов, целостность базы данных. Проблема: при push запросит имя/пароль и не принимает токен.
Решение: использовать Personal Access Token вместо пароля для доступа по HTTPS, либо настроить SSH-ключи.
Секьюрити и конфиденциальность
- Включите HTTPS и тестируйте автоматическое обновление сертификатов.
- Ограничьте доступ к административной панели по IP, если возможно.
- Настройте резервное копирование с шифрованием и offsite‑реплику.
- Если храните персональные данные пользователей, проверьте требования локального законодательства о защите данных и настройте retention и логи в соответствии с политиками компании.
Шпаргалка команд (cheat sheet)
- Обновить конфигурацию GitLab: gitlab-ctl reconfigure
- Проверить статус сервисов: gitlab-ctl status
- Посмотреть логи сервиса: gitlab-ctl tail
- Перезапустить сервис: gitlab-ctl restart
- Полный список служб: gitlab-ctl list
Однострочная глоссарий
- Omnibus GitLab — пакет, который включает все компоненты GitLab (Nginx, PostgreSQL, Redis и т.д.) в одном установочном пакете.
Заключение
В этой инструкции вы установили GitLab CE на Ubuntu 20.04, настроили external_url, включили Let’s Encrypt SSL, отключили публичную регистрацию и проверили базовую функциональность с помощью создания проекта и операций Git. Для production-инфраструктуры доработайте резервное копирование, мониторинг и политики безопасности.
Summary:
- Установка через Omnibus — быстрый и надёжный способ развёртывания GitLab.
- Обязательно укажите external_url перед первичной конфигурацией.
- Настройка HTTPS через Let’s Encrypt повышает безопасность и доверие к инстансу.
Если вам нужна помощь с настройкой бэкапов, CI/CD pipelines или миграцией данных — задайте конкретный вопрос, и я подготовлю пошаговую инструкцию.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента