
В последнее время всё больше организаций, со своими командами разработки просят развернуть различные инструменты для работы на собственных мощностях. Причин на это множество, от желания держать код поближе к себе, до внутренних разработок, вовсе не имеющих выхода в интернет.
Чаще всего, просят развернуть именно Gitlab.
Gitlab — изначально система контроля версии, а в настоящее время полноценный инструмент CI\CD включающий в себя множество инструментов.
В этой статье расскажу как развернуть Self-hosted Gitlab, включая Gitlab Container Registry используя Docker.
И начнем мы с минимальных системных требований. Как заявляет производитель, минимальные системные требования покрывают нужды до 500 пользователей, далее уже требуется увеличивать мощности.
И так, что бы развернуть Gitlab вам понадобится машинка:
- 4 ЦПУ
- 4 Гб ОЗУ
- ~ 20 Гб на диске.
Однако, опыт подсказывает, что минимальна конфигурация это 2 ЦПУ, 6 ОЗУ и ~50Гб.
Далее, первым делом готовим машину для установки GitLab, разворачиваем Docker. О том как это сделать я рассказывал в этой статье: Установка Docker в Linux
Поскольку для работы с гитом так же используется ssh на 22 порту, следующим шагом — мы меняем стандартный порт машины, на не стандартный. Номер порта конечно выбирать вам, я обычно ставлю 222.
Предварительно не забудьте добавить новый порт в разрешенные в вашем Firewall
Если вы используете UFW в качестве Firewall:
sudo ufw allow 222/tcp
Если вы используете IPTables в качестве Firewall:
sudo iptables -A INPUT -p tcp --dport 222 -j ACCEPT
Для этого открываем на редактирование /etc/ssh/sshd_conf
, раскоменчиваем строку с портом, и указываем нужный.
sudo nano /etc/ssh/sshd_config

Сохраняем и перезапускаем службу SSH. В этот момент, вы конечно не вылетите, но все новые сессии будут приниматься на 222 порте. Для проверки — рекомендую сразу перезайти. Что бы потом развернув всё не столкнутся с этой проблемой.
Далее готовим нужные каталоги для проброса в контейнер. На случай если произойдет какая-то авария, данные останутся ( Но это не исключает необходимость резервного копирования)
# Каталог для конфигов гита
mkdir -p /srv/gitlab/config
# Каталог для данных
mkdir -p /srv/gitlab/data
# Каталог для хранения логов
mkdir -p /srv/gitlab/logs
# Каталог для конфига gitlab registry (если будете в последствии добавлять)
mkdir -p /srv/gitlab/registry
Теперь остается запустить сам GitLab и дождаться его развертывания:
sudo docker run --detach \
--log-opt max-size=1g \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--volume /srv/gitlab/registry:/var/opt/gitlab/registry \
--env GITLAB_OMNIBUS_CONFIG="external_url 'https://gitlab.example.com/';" \
gitlab/gitlab-ee:latest
- detach — запускает контейнер в бек граунде
- log-opt max-size=1g — ограничиваем размер файла лога для контейнера 1 гигом.
- hostname gitlab.example.com — надо заменить на доменное имя, которое вы любезно пропишите в днс, для удобства работы.
- publish 443:443 —publish 80:80 —publish 22:22 — порты которые мы пробрасываем наружу (именно для этого мы меняли порт ssh у машины).
- name gitlab — удобное имя для контейнера, что бы проще было им оперировать в дальнейшем.
- restart always — перезапуск при любых обстоятельствах.
- volume *** — точки монтирования томов.
- env GITLAB_OMNIBUS_CONFIG=»external_url ‘https://gitlab.example.com/’;» -параметры запуска гита, externar_url — нужно заменить на доменное имя, которое вы пропишите\прописали в днс для ресурса. Если имени не предвидится и обращения будут только по IP, то заменить на http://ip_addr
- gitlab/gitlab-ee:latest — имя и версия запускаемого образа. Latest — самая свежая.
После выполнения, можете для удобства открыть логи контейнера на просмотр, и наслаждаться бегущими строчками пока гит разворачивается. Для этого введите:
docker logs -f gitlab
На минимальных конфигурациях установка занимает в среднем от 5 до 10 минут. Как только установка завершится — можете переходить в браузере по указанному ранее адресу. Если видите приглашение для ввода логина и пароля — можно логиниться, если ошибку 404 или 502 — скорей всего требуется еще немного подождать и установка еще не завершилась.
Для первого логина учетная запись по умолчанию root, а вот пароль надо будет выдернуть из лога:
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

Полезные материалы по теме:
- Установка shell gitlab runner
- Обновление Gitlab развернутого в Docker
- Переменные Gitlab-Ci
- Настройка работы Gitlab с registry без ssl
- Установка и регистрация gitlab-runner в docker контейнере
- Настройка E-mail уведомлений Gitlab
- Запуск Ansible Playbooks с помощью Gitlab-CI
Отправить ответ