Установка GitLab CE на Ubuntu 18.04
Важно: перед началом убедитесь, что у вас есть резервные копии тестовых данных и вы можете восстановить систему при необходимости.
О чём эта инструкция
Это пошаговое руководство по установке GitLab CE (Community Edition) на Ubuntu 18.04 LTS (Bionic Beaver) с объяснением основных этапов, команд и практических замечаний. Используется Omnibus-пакет от GitLab — он автоматически устанавливает все необходимые зависимости и сервисы.
Кому полезно: системным администраторам, DevOps-инженерам, техническим руководителям и разработчикам, которым нужен собственный Git-сервер.
Основные варианты развёртывания
Primary intent: установить GitLab CE локально на Ubuntu 18.04.
Related variants:
- установка GitLab на Ubuntu 20.04/22.04
- развертывание GitLab в Docker / Docker Compose
- развертывание GitLab в Kubernetes (Helm)
- использование GitLab.com как SaaS
- миграция с другой Git-платформы
Предварительные требования
- Ubuntu 18.04 Server (Bionic Beaver)
- Минимум 4 ГБ оперативной памяти — рекомендуется 8 ГБ для стабильной работы
- Доступ с правами root (или sudo)
- Зарезервированный домен (например, git.example.com) и корректная DNS-запись A/AAAA на IP сервера
- Открытые порты: 22 (SSH), 80 (HTTP), 443 (HTTPS)
Что мы сделаем
- Обновим репозитории и пакеты
- Установим зависимости (curl, openssh-server, ca-certificates, postfix и т.п.)
- Установим GitLab CE через Omnibus
- Сгенерируем SSL-сертификат Let’s Encrypt и dhparam
- Настроим HTTPS в конфигурации GitLab
- Настроим UFW (брандмауэр Ubuntu)
- Выполним пост-установочную настройку и тесты
- Разберём отладку, безопасность и резервное копирование
Шаг 1 — Обновление системы
Перед установкой обновите список пакетов и сами пакеты:
sudo apt update
sudo apt upgrade -yПодождите, пока обновление завершится.

Шаг 2 — Установка зависимостей
GitLab требует ряда системных пакетов: curl, openssh-server, ca-certificates и почтового агента (например, postfix). Установите их так:
sudo apt install curl openssh-server ca-certificates postfix -yПри установке postfix выберите тип конфигурации “Internet Site” и укажите доменное имя сервера, которое будет использоваться для исходящей почты.

Примечание: GitLab использует почту для уведомлений и восстановления пароля — настройте DNS-записи (SPF/DKIM) и мониторьте доставку.
Шаг 3 — Установка GitLab Omnibus
Добавим официальный репозиторий GitLab и установим пакет gitlab-ce:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce -yOmnibus-пакет установит все компоненты: PostgreSQL, Redis, NGINX (или встроенный), Unicorn/Sidekiq и т. д.

После установки нужно указать URL, по которому будет доступен GitLab. Отредактируйте файл конфигурации:
sudo vim /etc/gitlab/gitlab.rbНайдите и измените параметр external_url на ваш домен (пока можно указать http):
external_url 'http://git.hakase-labs.pw'Сохраните файл и выйдите из редактора.
Шаг 4 — Генерация SSL (Let’s Encrypt) и DHPARAM
Установите клиент Let’s Encrypt (certbot) и получите сертификат методом standalone (сервер должен иметь открытый 80 порт во время получения):
sudo apt install letsencrypt -y
sudo letsencrypt certonly --standalone --agree-tos --no-eff-email --email support@example.com -d git.hakase-labs.pwПосле успешного выполнения сертификаты будут в каталоге /etc/letsencrypt/live/git.hakase-labs.pw/

Создайте каталог для dhparam и сгенерируйте файл:
sudo mkdir -p /etc/gitlab/ssl/
sudo openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
sudo chmod 600 /etc/gitlab/ssl/*Генерация dhparam может занять время; 2048 бит — компромисс между безопасностью и временем генерации.

Шаг 5 — Включение HTTPS в GitLab
Отредактируйте /etc/gitlab/gitlab.rb и укажите https в external_url, затем добавьте настройки Nginx для сертификатов:
sudo vim /etc/gitlab/gitlab.rbИзмените:
external_url 'https://git.hakase-labs.pw'Добавьте в раздел GitLab Nginx:
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/letsencrypt/live/git.hakase-labs.pw/fullchain.pem"
nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/git.hakase-labs.pw/privkey.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"Сохраните файл и выполните применить конфигурацию:
sudo gitlab-ctl reconfigureКоманда применит все изменения и перезапустит сервисы.

Если вы используете автоматическое продление сертификатов Let’s Encrypt, позаботьтесь о cron/timer и восстановлении сертификатов в конфигурации GitLab при обновлении.
Шаг 6 — Настройка UFW (брандмауэр Ubuntu)
Разрешите основные сервисы и активируйте брандмауэр:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw statusУбедитесь, что правила корректны и что вы не заблокировали свой доступ по SSH.

Шаг 7 — Пост-установочные шаги в веб-интерфейсе
Откройте в браузере https://git.hakase-labs.pw. При первом заходе потребуется задать пароль для пользователя root.
Установка пароля root
Заполните форму начальной установки, введите новый пароль и нажмите “Change your password”.

Войдите как root и настройте профиль: имя, имя пользователя, SSH-ключи и ограничения.
Добавление SSH-ключа
На клиентской машине сгенерируйте ключ и скопируйте публичный ключ:
ssh-keygen
cat ~/.ssh/id_rsa.pubВставьте публичный ключ в раздел SSH Keys в профиле GitLab.

Ограничение регистрации и квоты
В административной панели можно отключить саморегистрацию пользователей (signup enabled) и установить лимит проектов по умолчанию, например 20.

Шаг 8 — Тестирование рабочего процесса
Создайте тестовый проект через UI (плюс в верхней панели) и выполните первый коммит из локального репозитория.
git config --global user.name "hakase"
git config --global user.email "[email protected]"
git clone https://git.hakase-labs.pw/hakase/project01.git
cd project01/
vim README.md
git add .
git commit -m 'Add README.md file by hakase-labs'
git push origin masterПри использовании HTTPS GitLab запросит ваши учётные данные; при использовании SSH — проверит ключи.

Отладка и распространённые ошибки
Если что-то идёт не так, используйте следующие места для проверки:
- Логи GitLab: sudo gitlab-ctl tail — вывод в реальном времени
- Проверка статуса сервисов: sudo gitlab-ctl status
- Применение конфигурации: sudo gitlab-ctl reconfigure
- Проверка прав на сертификаты: sudo ls -l /etc/letsencrypt/live/git.hakase-labs.pw/
- Проверка DNS: nslookup/ dig имя_домена
- Firewall: sudo ufw status
Типичные проблемы и решения:
- Проблема: 502/504 после установки — проверьте статус unicorn/puma и sidekiq, перезапустите sudo gitlab-ctl restart
- Проблема: сертификат отсутствует — убедитесь, что порт 80 открыт во время запроса Let’s Encrypt и что домен резолвится на IP сервера
- Проблема: push по HTTPS требует пароль — используйте персональные токены (Personal Access Tokens) для CI/CLI или переключитесь на SSH
Безопасность и резервные копии
Рекомендации по безопасности:
- Отключите саморегистрацию, если это не требуется
- Включите двухфакторную аутентификацию для администраторов
- Настройте резервное копирование и проверяйте восстановления: sudo gitlab-rake gitlab:backup:create
- Обновляйте GitLab и пакеты регулярно
- Ограничьте доступ к административной панели по IP при возможности
- Регулярно проверяйте логи и настраивайте мониторинг (Prometheus, Grafana — доступны в Omnibus при включении)
Пример команды создания резервной копии (по умолчанию сохраняется в /var/opt/gitlab/backups):
sudo gitlab-rake gitlab:backup:createАльтернативные подходы к развёртыванию
- Docker / Docker Compose — контейнерные образы GitLab CE подходят для быстрых тестов и изолированных сред. Подходит для development и CI-экспериментов, но требует внимания к хранению данных (volume) и сетям.
- Kubernetes (Helm Chart) — для масштабируемых production-развёртываний с высокой доступностью. Требует знаний Kubernetes, хранения секретов и настроек Ingress/Ingress Controller.
- GitLab.com — если не хотите поддерживать инфраструктуру, используйте SaaS-версию GitLab.com.
Когда локальная Omnibus-установка предпочтительнее: когда нужен полный контроль над данными, интеграция с локальными сервисами или соблюдение корпоративных политик хранения данных.
Критерии приёмки
- GitLab доступен по HTTPS по заданному домену
- Веб-интерфейс открывается, можно установить пароль root
- Создан тестовый проект и выполнен push из локального репозитория
- Установлены и проверены правила UFW для SSH/HTTP/HTTPS
- Создан и протестирован SSH-доступ (добавлен публичный ключ)
- Сделана резервная копия конфигурации/данных
Руководство для ролей
Admin (администратор):
- Проверить DNS и доступность домена
- Установить платформу и настроить сертификацию
- Настроить бэкапы и политику обновлений
DevOps:
- Настроить мониторинг, логирование и алертинг
- Автоматизировать обновления сертификатов и конфигураций
- Настроить CI/CD раннеры при необходимости
Developer:
- Добавить SSH-ключ, настроить Git-клиент
- Создать проект, выполнить первый push
- Настроить CI/CD pipeline в проекте
Контроль качества и тесты приёмки
Тестовые сценарии:
- Доступ к https://<ваш-домен> и успешный вход как root
- Создание проекта и отображение файлов после push
- Отправка уведомления по почте (проверка SMTP)
- Ротация сертификата Let’s Encrypt (проверка cron/timer)
Критерии успешности: все тесты выполнены без ошибок, сервисы в статусе “running”.
Факты и рекомендации
- Порты: SSH 22, HTTP 80, HTTPS 443
- Минимальная ОЗУ: 4 ГБ (рекомендуется 8 ГБ для небольших команд)
- Omnibus упрощает установку, но требует контроля обновлений и бэкапов
Когда этот подход не подходит
- Требуется кластерная HA-установка с горизонтальным масштабированием — рассмотрите Kubernetes и Helm Chart
- Требуется минимизация длительности отклика и распределённая архитектура — оцените специализированные облачные решения
Краткое резюме
Вы установили GitLab CE на Ubuntu 18.04 с использованием Omnibus, настроили HTTPS через Let’s Encrypt, открыли необходимые порты в UFW, выполнили пост-установочную настройку и проверили базовый рабочий процесс. Дальше рекомендуется настроить регулярные бэкапы, мониторинг и план обновлений.
Справочные материалы
- Официальная документация Omnibus GitLab: https://docs.gitlab.com/omnibus/






Небольшие заметки
- Обязательно проверяйте, что вы используете актуальную версию Omnibus для Ubuntu 18.04, совместимую с вашей инфраструктурой.
- Планируйте окна обслуживания для обновлений и тестируйте обновления на копии окружения перед применением в production.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента