GitLab Community Edition (CE) — это мощная, самостоятельная платформа для управления Git-репозиториями с возможностями отслеживания ошибок, обсуждений, непрерывной интеграции и доставки (CI/CD). Она позволяет развернуть полнофункциональный аналог GitHub на собственном сервере без ограничений на количество репозиториев и пользователей.
В этом руководстве я покажу, как установить GitLab CE на Debian 13, 12 и 11 из официального репозитория GitLab.
⚠️ Системные требования:
- Оперативная память: Минимум 4 ГБ (рекомендуется 8 ГБ для небольшой команды, 16+ ГБ для продакшена)
- Место на диске: Минимум 40 ГБ (зависит от количества репозиториев и артефактов)
- Архитектура: amd64 (64-бит) или arm64
Предварительные требования
Перед установкой убедитесь, что:
- У вас есть доменное имя, привязанное к IP сервера (если нужен HTTPS)
- Открыты порты 22 (SSH), 80 (HTTP), 443 (HTTPS) в файрволе
- Вы имеете права
sudo(администратора)
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.
✅ Ожидаемый вывод в терминале:
root
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
Установка GitLab CE
Шаг 1: Обновите систему и установите зависимости
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl ca-certificates gpg perl tzdata openssh-server ufw
Шаг 2: Настройте файрвол (UFW)
⚠️ Если вы подключаетесь по SSH, сначала разрешите SSH, чтобы не заблокировать себе доступ!
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable
Проверьте правила:
sudo ufw status
Шаг 3: Добавьте GPG-ключ GitLab
curl -fsSL https://packages.gitlab.com/gpgkey/gpg.key | sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg
Шаг 4: Добавьте репозиторий GitLab
. /etc/os-release
printf 'Types: deb\nURIs: https://packages.gitlab.com/gitlab/gitlab-ce/debian/\nSuites: %s\nComponents: main\nSigned-By: /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg\n' "$VERSION_CODENAME" | sudo tee /etc/apt/sources.list.d/gitlab_gitlab-ce.sources > /dev/null
Что делает: Создаёт файл репозитория в современном формате DEB822. Кодовое имя (trixie, bookworm, bullseye) подставляется автоматически.
Шаг 5: Обновите список пакетов и проверьте, что GitLab виден
sudo apt update
apt-cache policy gitlab-ce
✅ Ожидаемый вывод: Должна быть строка с https://packages.gitlab.com/gitlab/gitlab-ce/debian и вашим кодовым именем.
Шаг 6: Установите GitLab
Замените gitlab.example.com на ваше реальное доменное имя.
Для HTTPS (рекомендуется, если домен указывает на сервер):
sudo EXTERNAL_URL="https://gitlab.example.com" apt install -y gitlab-ce
Для HTTP (если нет домена или не настроен HTTPS):
sudo EXTERNAL_URL="http://gitlab.example.com" apt install -y gitlab-ce
⚠️ Установка может занять несколько минут — GitLab скачивается (около 1 ГБ) и настраивает внутренние сервисы (PostgreSQL, Redis, Nginx, Puma, Sidekiq).
Первый вход в GitLab
Шаг 1: Получите временный пароль администратора
GitLab создаёт учётную запись root со случайным паролем, который хранится в файле 24 часа:
sudo cat /etc/gitlab/initial_root_password
Пример вывода:
Password: QjYxMzI5Nz... (сохраните этот пароль)
Шаг 2: Войдите в веб-интерфейс
Откройте браузер и перейдите по адресу https://gitlab.example.com (или http://...).
Логин: root
Пароль: тот, что вы получили из файла.
Шаг 3: Смените пароль
При первом входе GitLab потребует сменить пароль администратора. Придумайте надёжный пароль.
Настройка GitLab
Изменение внешнего URL позже
Если вы ошиблись при установке или хотите сменить домен/протокол:
sudo nano /etc/gitlab/gitlab.rb
Найдите и измените строку:
external_url 'https://gitlab.example.com'
Примените изменения:
sudo gitlab-ctl reconfigure
Настройка SMTP (почтовые уведомления)
GitLab может отправлять уведомления на почту. Добавьте в /etc/gitlab/gitlab.rb (замените на свои данные):
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your-email@gmail.com"
gitlab_rails['smtp_password'] = "app-password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = "gitlab@example.com"
Примените настройки:
sudo gitlab-ctl reconfigure
Основные команды управления GitLab
| Команда | Что делает |
|---|---|
sudo gitlab-ctl status | Показать статус всех сервисов |
sudo gitlab-ctl restart | Перезапустить все сервисы |
sudo gitlab-ctl reconfigure | Применить изменения конфигурации |
sudo gitlab-ctl tail | Показать логи в реальном времени |
sudo gitlab-rake gitlab:check | Проверить работоспособность |
sudo gitlab-backup create | Создать резервную копию |
sudo gitlab-ctl backup-etc | Создать резервную копию конфигурации |
Обновление GitLab
sudo apt update
sudo apt install --only-upgrade gitlab-ce
sudo gitlab-ctl restart
⚠️ Перед обновлением между мажорными версиями обязательно прочитайте официальную документацию по обновлению.
Резервное копирование и восстановление
Создание резервной копии
sudo gitlab-backup create
sudo gitlab-ctl backup-etc
Что делает:
gitlab-backup create— создаёт архив данных (репозитории, база данных, артефакты) в/var/opt/gitlab/backups/gitlab-ctl backup-etc— создаёт архив конфигурации в/etc/gitlab/config_backup/
Настройка автоматического резервного копирования
Добавьте cron-задачу:
printf '%s\n' 'SHELL=/bin/sh' 'PATH=/opt/gitlab/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' '0 2 * * * root gitlab-backup create CRON=1' '30 2 * * * root gitlab-ctl backup-etc --delete-old-backups' | sudo tee /etc/cron.d/gitlab-backups > /dev/null
Удаление GitLab
Удаление с сохранением данных (только пакет)
sudo gitlab-ctl stop
sudo apt remove gitlab-ce
Полное удаление (все данные и конфигурация)
⚠️ Эта операция безвозвратно удалит все репозитории, пользователей и настройки!
sudo gitlab-ctl stop
sudo gitlab-ctl cleanse
sudo apt remove --purge gitlab-ce
sudo rm -rf /opt/gitlab /etc/gitlab /var/opt/gitlab /var/log/gitlab
Удаление репозитория GitLab из APT:
sudo rm -f /etc/apt/sources.list.d/gitlab_gitlab-ce.sources
sudo rm -f /usr/share/keyrings/gitlab_gitlab-ce-archive-keyring.gpg
sudo apt update
Решение типичных проблем
8.1 Ошибка: Unable to locate package gitlab-ce
Симптом: sudo apt install gitlab-ce не находит пакет.
Причина: Репозиторий GitLab не добавлен или не обновлён.
Пошаговое решение:
Шаг 1: Проверьте, что файл репозитория существует:
cat /etc/apt/sources.list.d/gitlab_gitlab-ce.sources
Шаг 2: Проверьте кодовое имя вашего Debian:
. /etc/os-release && printf '%s\n' "$VERSION_CODENAME"
Должно быть trixie, bookworm или bullseye.
Шаг 3: Обновите список пакетов:
sudo apt update
8.2 Ошибка: GitLab не запускается, 502 Bad Gateway
Симптом: После установки GitLab не открывается, Nginx возвращает 502.
Причина: Недостаточно памяти или Puma не может запуститься.
Пошаговое решение:
Шаг 1: Проверьте свободную память:
free -h
Если памяти меньше 4 ГБ — добавьте swap:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Шаг 2: Перезапустите GitLab:
sudo gitlab-ctl restart
Шаг 3: Посмотрите логи Puma:
sudo gitlab-ctl tail puma
8.3 Ошибка: Не удаётся войти как root
Симптом: Не помню пароль root, файл /etc/gitlab/initial_root_password уже удалён.
Пошаговое решение:
Сбросьте пароль root через консоль:
sudo gitlab-rake "gitlab:password:reset[root]"
Введите новый пароль и подтвердите.
8.4 Ошибка: Не отправляются письма (SMTP)
Симптом: GitLab не отправляет уведомления.
Пошаговое решение:
Шаг 1: Проверьте логи почты:
sudo grep -i mail /var/log/gitlab/gitlab-rails/production.log | tail -n 20
Шаг 2: Убедитесь, что SMTP-настройки в /etc/gitlab/gitlab.rb корректны.
Шаг 3: Отправьте тестовое письмо:
sudo gitlab-rails console -e production
Notify.test_email('you@example.com', 'Test', 'SMTP works').deliver_now
exit
8.5 Ошибка: Не хватает места на диске
Симптом: GitLab работает медленно, бэкапы не создаются, артефакты не сохраняются.
Причина: Закончилось место на диске.
Пошаговое решение:
Шаг 1: Проверьте свободное место:
df -h
Шаг 2: Очистите старые бэкапы (оставьте последние 7 дней):
В /etc/gitlab/gitlab.rb добавьте или измените:
gitlab_rails['backup_keep_time'] = 604800 # 7 дней в секундах
Шаг 3: Примените настройки и удалите старые бэкапы:
sudo gitlab-ctl reconfigure
sudo gitlab-backup create # создаст новый бэкап и удалит старые
Чек-лист: что проверить после установки
- [ ] GitLab установлен:
sudo gitlab-ctl statusпоказывает сервисы в статусеrun - [ ] Можно войти: открывается веб-интерфейс, логин
rootс временным паролем - [ ] Пароль root изменён (при первом входе)
- [ ] Файрвол настроен:
sudo ufw status→ порты 22, 80, 443 открыты - [ ] Почта настроена (опционально): тестовое письмо приходит
- [ ] Бэкап создаётся:
sudo gitlab-backup createзавершается без ошибок - [ ] Можно создать проект: нажмите «New project» → «Create blank project»
Часто задаваемые вопросы (FAQ)
Вопрос: Можно ли установить GitLab на сервер с 2 ГБ RAM?
Ответ: Технически да, но он будет очень медленным. Добавьте swap (2-4 ГБ) и будьте готовы к тормозам. Для продакшена нужно минимум 8 ГБ.
Вопрос: GitLab Community Edition бесплатен?
Ответ: Да, CE версия полностью бесплатна и имеет все основные функции. Есть платная Enterprise Edition (EE) с дополнительными возможностями.
Вопрос: Как обновить GitLab без потери данных?
Ответ: Просто выполните sudo apt update && sudo apt install --only-upgrade gitlab-ce. Бэкап перед обновлением рекомендуется, но не обязателен.
Вопрос: Нужен ли отдельный сервер для GitLab Runner?
Ответ: Runner для CI/CD можно установить на тот же сервер, но для продакшена лучше выделить отдельную машину.
Вопрос: Как отключить регистрацию новых пользователей?
Ответ: Admin Area → Settings → General → Sign-up restrictions → Отключить «Sign-up enabled».
Заключение
Теперь GitLab установлен на вашем Debian. Вы можете управлять Git-репозиториями, настраивать CI/CD и вести совместную разработку на собственной инфраструктуре.
Что дальше?
- Настройте регулярное резервное копирование
- Установите GitLab Runner для CI/CD
- Настройте мониторинг сервера GitLab
- Установите Fail2ban для защиты от брутфорса