Установка GitLab CE с Nginx и Let's Encrypt на Debian 11
Важно: перед началом убедитесь, что у сервера настроен A-запись домена и выделено минимум 8 ГБ оперативной памяти.

Предусловия
- Сервер с Debian 11 (bullseye), минимум 8 ГБ оперативной памяти. 8 ГБ — минимальная рекомендация для сред с небольшим количеством репозиториев; для CI-пайплайнов может потребоваться больше.
- Действующий домен, указывающий на IP сервера (A-запись).
- Настроен пароль root или доступ через sudo у пользователя с правами root.
Что делает эта инструкция
Данный материал показывает проверенный путь установки GitLab CE (Omnibus) на Debian 11, обходную правку репозиториев (если официальный пакет для bullseye отсутствует), настройку внешнего URL, включение Let’s Encrypt и планирование резервного копирования.
Обновление пакетов и установка зависимостей
Перед установкой обновите кэш пакетов и установите необходимые инструменты:
apt-get update -yapt-get install curl ca-certificates apt-transport-https gnupg2 -yПримечание: команды выполняйте от root или через sudo.
Добавление репозитория GitLab
По умолчанию пакет GitLab может быть отсутствовать в стандартных репозиториях Debian. Добавьте репозиторий GitLab командой:
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bashЕсли на момент установки пакет для Debian 11 недоступен, можно поправить источник, указав репозиторий для Debian 10 (buster). Откройте файл:
nano /etc/apt/sources.list.d/gitlab_gitlab-ce.listНайдите строчки с bullseye и замените их на buster:
deb https://packages.gitlab.com/gitlab/gitlab-ce/debian/ bullseye main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/debian/ bullseye mainЗамените на:
deb https://packages.gitlab.com/gitlab/gitlab-ce/debian/ buster main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/debian/ buster mainСохраните файл и затем обновите список пакетов:
apt-get update -yУстановка GitLab CE
Установите пакет GitLab Community Edition:
apt-get install gitlab-ce -yПосле установки вы увидите вывод с рекомендацией задать external_url и выполнить повторную конфигурацию:
It looks like GitLab has not been configured yet; skipping the upgrade script.
...
Please configure a URL for your GitLab instance by setting `external_url` configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigureНастройка GitLab
Откройте основной конфигурационный файл:
nano /etc/gitlab/gitlab.rbНайдите и укажите ваш домен, заменив пример:
external_url 'https://gitlab.linuxbuz.com'Далее включите автоматическое получение сертификатов Let’s Encrypt — в файле можно найти и отредактировать соответствующие параметры. Пример настройки (в конфигурации строки сохраняйте в том формате, в котором ожидает GitLab):
# Enable the Let's encrypt SSL
letsencrypt['enable'] = true
# This is optional to get SSL related alerts
letsencrypt['contact_emails'] = ['[email protected]']
# This example renews every 7th day at 02:00 AM
letsencrypt['auto_renew_hour'] = "2"
letsencrypt['auto_renew_minute'] = "0"
letsencrypt['auto_renew_day_of_month'] = "*/7"Сохраните изменения и примените конфигурацию:
gitlab-ctl reconfigureПосле успешной конфигурации в выводе будет информация о начальном пароле root и пути к файлу с ним:
Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.
gitlab Reconfigured!Получите пароль так:
cat /etc/gitlab/initial_root_passwordВажно: файл с паролем автоматически удаляется при следующей конфигурации в течение 24 часов. Сразу смените пароль администратора через интерфейс.
Доступ к GitLab
Откройте браузер и перейдите по указанному ранее external_url, например:
Вы будете перенаправлены на страницу входа:

Введите имя пользователя, пароль и нажмите Sign in. После первого входа рекомендуется сразу задать новый пароль и включить двухфакторную аутентификацию для аккаунта root.

Резервное копирование GitLab
Создайте полную резервную копию командой:
gitlab-rake gitlab:backup:createЧтобы автоматизировать резервное копирование, добавьте задание в /etc/crontab:
nano /etc/crontabДобавьте строку для ежедневного создания резервной копии в 22:00:
0 22 * * * root gitlab-rake gitlab:backup:createСохраните файл. Убедитесь, что на диске достаточно места для бэкап-файлов и реализуйте ротацию/удаление старых резервных копий.
Диагностика и общие проблемы
Проблема: сертификат Let’s Encrypt не выписывается.
- Возможные причины: домен не указывает на сервер, порт 80 занят/блокируется, файерволл (ufw/iptables) блокирует входящие соединения, Nginx уже слушает порт 80 другим конфигом.
- Что делать: проверить A-запись, открыть порты 80/443, временно остановить сервисы, которые занимают порт 80, и повторить reconfigure.
Проблема: установка пакета невозможна из-за несовместимости с bullseye.
- Решение: временно указать репозиторий buster (как описано выше) или использовать Docker/Kubernetes-образ GitLab.
Альтернативные подходы
- Развернуть GitLab в Docker (официальные образы) для изоляции и простоты миграции.
- Использовать Helm-чарт и GitLab Runner в Kubernetes для CI в облаке.
- Установить GitLab из исходников (рекомендуется только для продвинутых сценариев).
Рекомендации по безопасности
- Сразу смените начальный пароль root и создайте отдельный аккаунт администратора с ограниченными правами.
- Включите двухфакторную аутентификацию (2FA) для всех администраторов.
- Настройте брандмауэр: откройте только порты 80/443 и SSH (если необходим внешний доступ).
- Регулярно обновляйте пакеты GitLab и систему.
- Шифруйте резервные копии и храните их вне основного сервера.
Конфиденциальность и соответствие требованиям
- GitLab хранит репозитории, комментарии и метаданные пользователей. При работе с персональными данными учитывайте требования локального законодательства о защите данных (например, GDPR в ЕС). Минимизируйте хранение лишней личной информации и контролируйте доступ к проектам.
- Документы и конфиденциальные файлы в репозиториях должны подлежать политике retention и шифрованию.
Полезные чек-листы по ролям
Администратор:
- Проверить A-запись домена
- Обновить систему и зависимости
- Установить и настроить external_url
- Включить Let’s Encrypt и проверить порты
- Настроить резервное копирование и ротацию
- Включить 2FA и задать политику паролей
DevOps-инженер:
- Интегрировать GitLab Runner
- Настроить CI/CD и кэширование
- Настроить мониторинг доступности и метрик
- Планировать масштабирование и бэкапы
Разработчик:
- Создать личный аккаунт и SSH-ключи
- Настроить remote origin и пулл/пуш
- Проверить доступы к проектам
Ментальные модели и эвристики
- «Минимально рабочая инсталляция»: установить, назначить external_url, активировать SSL, проверить вход и создать резервную копию.
- «Минимальное производство»: добавить мониторинг, автоматизированные бэкапы, политику ротации и 2FA.
Мини‑методология развертывания (шаги)
- Подготовить сервер (обновление, порты, DNS).
- Добавить репозиторий GitLab и установить пакет.
- Настроить external_url и SSL.
- Выполнить gitlab-ctl reconfigure и проверить доступ.
- Сменить пароль root, включить 2FA.
- Настроить резервное копирование и мониторинг.
Фактическая сводка (ключевые рекомендации)
- Минимум RAM: 8 ГБ.
- Открытые порты: 80 и 443 (для Let’s Encrypt и HTTPS).
- Резервное копирование: ежедневно или в соответствии с политикой хранения данных.
- Безопасность: включить 2FA и немедленно сменить начальный пароль.
Критерии приёмки
- GitLab доступен по HTTPS на заданном external_url.
- SSL-сертификат валиден и автоматически обновляется.
- Администратор сменил пароль и включил 2FA.
- Регулярные резервные копии созданы и проверены.
Заключение
Поздравляем — вы установили и настроили GitLab CE на Debian 11 с Nginx и Let’s Encrypt. Теперь можно создавать проекты, подключать GitLab Runner и внедрять CI/CD. Если нужно — помогу с настройкой Runner, миграцией репозиториев или бэкапом.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента