Установка GitLab Runner на свой сервер: коротко и с данными
Конспект страницы: 6 разделов коротко, данные на 14 октября 2026 и ответы на 5 вопросов. Полный разбор с примерами: Установка GitLab Runner на свой сервер.
Коротко
Главная / Разработка / GitLab Runner Установка GitLab Runner на сервер делается одним контейнером Docker: он забирает задания из вашего GitLab и выполняет их у себя, каждое в чистом контейнере. Тот же приём работает для GitHub Actions: там раннер называется self-hosted runner, а ставится обычной программой с выдаваемым токеном. Раннеру на старте хватит 2 ядер и 4 ГБ памяти, а на сборки Docker-образов добавляйте память и диск.
Конспект по разделам
Что делает GitLab Runner и зачем ему отдельный сервер
Пайплайн GitLab состоит из заданий: собрать, проверить, выложить. Сам GitLab их не выполняет, это делает раннер, то есть отдельная программа. Раннер сам опрашивает GitLab по HTTPS и забирает задания, поэтому открывать входящие порты на его сервере не нужно.
Сколько ресурсов нужно раннеру GitLab на VPS
У самой программы раннера почти нет требований, она ждёт задания и запускает контейнеры. Ресурсы определяет то, что внутри этих контейнеров: компиляция, тесты с базой данных, сборка образов. Для старта разумно взять 2 ядра и 4 ГБ памяти, а потом смотреть на реальную загрузку.
Установка GitLab Runner в Docker и регистрация по токену
Установка без Docker тоже есть: пакет gitlab-runner из репозитория разработчиков для Ubuntu и Debian, затем та же команда gitlab-runner register. Контейнер удобнее тем, что удаляется и переносится целиком.
- Поставьте Docker с Compose на отдельный сервер, не на тот, где стоит GitLab.
- Запустите контейнер раннера по compose-файлу ниже.
- Создайте раннер в GitLab: в проекте это Settings, CI/CD, Runners, кнопка нового раннера.
- Зарегистрируйте раннер командой ниже.
Как собирать образы на раннере GitLab и не отдать сервер
Монтирование /var/run/docker.sock в контейнер раннера означает, что любое задание получает полный контроль над Docker-демоном сервера. Разработчики GitLab прямо предупреждают, что на таком сервере не стоит держать другие нагрузки. Собранные образы удобно складывать в свой реестр: варианты разобраны на странице self hosted Docker registry.
- Привязка сокета.
- Docker-in-Docker.
- Сборщики без демона, например Kaniko или Buildah: для чужого и смешанного кода это осторожнее.
Раннер GitHub Actions на своём сервере: ставим self-hosted runner
У GitHub Actions та же идея, другой набор команд. Раннер скачивают из репозитория или организации: Settings, Actions, Runners, кнопка нового self-hosted runner. Страница сама подставит ссылку на архив и одноразовый токен для вашей системы.
- Создайте обычного пользователя под раннер: config.sh откажется работать от root.
- Распакуйте архив в отдельный каталог и выполните./config.sh --url https://github.com/ORG/REPO --token ТОКЕН, ответив на вопросы про имя и метки.
- Поставьте службу: sudo./svc.sh install, затем sudo./svc.sh start, чтобы раннер переживал перезагрузку.
- Укажите в workflow runs-on: self-hosted или свою метку.
Установите приложение без консоли
Маркетплейс ставит готовый образ на новый сервер: Docker, GitLab, Nextcloud, n8n и другие.
- Docker, n8n, OpenClaw, GitLab, Nextcloud
- Ставится при создании сервера
- Почасовая оплата сервера
- Root-доступ остаётся у вас
Данные
| Executor | Как выполняет задание | Когда выбирать |
|---|---|---|
| shell | Команды прямо на хосте | Нужен доступ к железу или системным программам, изоляции нет |
| docker | Новый контейнер на каждое задание | Обычный выбор для тестов и сборок |
| docker с dind | Внутри контейнера свой Docker-демон | Сборка образов, нужен привилегированный режим |
| kubernetes | Под в кластере на каждое задание | Есть кластер, нужна масштабируемость: Kubernetes |
Данные на 14 октября 2026.
Вопросы и ответы
Нужно ли открывать порты на сервере для GitLab Runner?
Нет. Раннер сам обращается к GitLab по HTTPS и забирает задания, входящие порты не нужны. Достаточно, чтобы сервер раннера доходил до адреса GitLab.
Чем executor docker отличается от shell в GitLab Runner?
Shell выполняет команды прямо на хосте и оставляет мусор между сборками. Docker запускает каждое задание в новом контейнере из указанного образа, поэтому окружение чистое и воспроизводимое.
Как установить GitLab Runner на Ubuntu без Docker?
Подключить официальный репозиторий разработчиков, поставить пакет gitlab-runner через apt и выполнить gitlab-runner register с токеном из интерфейса GitLab. Служба запускается автоматически.
Можно ли запустить GitLab Runner на одном сервере с GitLab?
Технически можно, но сборки будут отнимать память и ядра у самого GitLab. Для небольшой команды допустимо, для постоянной нагрузки лучше отдельный сервер.
Как подключить свой сервер к GitHub Actions?
Создать self-hosted runner в настройках репозитория, выполнить на сервере config.sh с выданным токеном, поставить службу командой svc.sh и указать runs-on: self-hosted в workflow.