Главная/Разработка/GitLab Runner

Установка GitLab Runner на свой сервер

Установка GitLab Runner на сервер делается одним контейнером Docker: он забирает задания из вашего GitLab и выполняет их у себя, каждое в чистом контейнере. Тот же приём работает для GitHub Actions: там раннер называется self-hosted runner, а ставится обычной программой с выдаваемым токеном.

5 мин чтенияДанные проверены 16 октября 2026

Ответ за 30 секунд

Раннеру на старте хватит 2 ядер и 4 ГБ памяти, а на сборки Docker-образов добавляйте память и диск. Запускайте его в контейнере с executor docker, регистрируйте по токену из интерфейса GitLab и не давайте доступ к docker.sock чужим проектам: это полный контроль над сервером.

Маркетплейс создаёт сервер с установленным GitLab Runner, останется зарегистрировать его по токену.

Сколько ресурсов нужно раннеру GitLab на VPS

01 · 1 мин

Что делает GitLab Runner и зачем ему отдельный сервер#

Пайплайн GitLab состоит из заданий: собрать, проверить, выложить. Сам GitLab их не выполняет, это делает раннер, то есть отдельная программа. Раннер сам опрашивает GitLab по HTTPS и забирает задания, поэтому открывать входящие порты на его сервере не нужно.

Выносить раннер на другой сервер стоит по двум причинам. Сборки грузят процессор и диск и не должны тормозить сам GitLab. И выполняют они ваш код, поэтому им нужна граница безопасности: компрометация раннера не должна давать доступ к базе с задачами и репозиториями.

ExecutorКак выполняет заданиеКогда выбирать
shellКоманды прямо на хостеНужен доступ к железу или системным программам, изоляции нет
dockerНовый контейнер на каждое заданиеОбычный выбор для тестов и сборок
docker с dindВнутри контейнера свой Docker-демонСборка образов, нужен привилегированный режим
kubernetesПод в кластере на каждое заданиеЕсть кластер, нужна масштабируемость: Kubernetes

Инструмент · 1 мин

Сколько ресурсов нужно раннеру GitLab на VPS#

У самой программы раннера почти нет требований, она ждёт задания и запускает контейнеры. Ресурсы определяет то, что внутри этих контейнеров: компиляция, тесты с базой данных, сборка образов. Для старта разумно взять 2 ядра и 4 ГБ памяти, а потом смотреть на реальную загрузку.

Две ловушки по ресурсам. В настройке concurrent файла config.toml по умолчанию стоит 1, то есть сборки идут по очереди, и чтобы использовать ядра, число поднимают. А диск со временем забивают образы и кэш: раз в неделю чистите их командой docker system prune по расписанию.

Какой сервер взять под раннер

Три ответа о сборках, и калькулятор подберёт готовую конфигурацию

Сколько сборок идёт одновременно
Что собираете
Кэш зависимостей и образы

03 · 1 мин

Установка GitLab Runner в Docker и регистрация по токену#

  1. Поставьте Docker с Compose на отдельный сервер, не на тот, где стоит GitLab.
  2. Запустите контейнер раннера по compose-файлу ниже. Каталог config хранит файл config.toml с токеном, не теряйте его.
  3. Создайте раннер в GitLab: в проекте это Settings, CI/CD, Runners, кнопка нового раннера. Метки (tags) и режим запуска задаются там же, в интерфейсе. GitLab выдаст токен с префиксом glrt-.
  4. Зарегистрируйте раннер командой ниже. Флаг с метками здесь не нужен: при регистрации по токену метки берутся из настроек раннера в интерфейсе.
  5. Проверьте: раннер появится в списке со статусом online, а в .gitlab-ci.yml его выбирают через tags.
services:
  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    container_name: gitlab-runner
    restart: always
    volumes:
      - ./config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
docker compose up -d
docker compose exec gitlab-runner gitlab-runner register \
  --non-interactive \
  --url https://gitlab.example.com \
  --token glrt-ТОКЕН \
  --executor docker \
  --docker-image alpine:latest

Установка без Docker тоже есть: пакет gitlab-runner из репозитория разработчиков для Ubuntu и Debian, затем та же команда gitlab-runner register. Контейнер удобнее тем, что удаляется и переносится целиком.

04 · 1 мин

Как собирать образы на раннере GitLab и не отдать сервер#

Монтирование /var/run/docker.sock в контейнер раннера означает, что любое задание получает полный контроль над Docker-демоном сервера. Разработчики GitLab прямо предупреждают, что на таком сервере не стоит держать другие нагрузки.

  • Привязка сокета. Быстро, кэш слоёв общий, но граница изоляции размыта. Подходит для своих закрытых проектов.
  • Docker-in-Docker. Задание поднимает свой демон в привилегированном контейнере: чище по состоянию, но медленнее и тоже требует доверия к коду.
  • Сборщики без демона, например Kaniko или Buildah: для чужого и смешанного кода это осторожнее.

Собранные образы удобно складывать в свой реестр: варианты разобраны на странице self hosted Docker registry. Минимальное задание для проверки раннера:

test:
  tags: [vps]
  image: node:lts
  script:
    - npm ci
    - npm test

05 · 1 мин

Раннер GitHub Actions на своём сервере: ставим self-hosted runner#

У GitHub Actions та же идея, другой набор команд. Раннер скачивают из репозитория или организации: Settings, Actions, Runners, кнопка нового self-hosted runner. Страница сама подставит ссылку на архив и одноразовый токен для вашей системы.

  1. Создайте обычного пользователя под раннер: config.sh откажется работать от root.
  2. Распакуйте архив в отдельный каталог и выполните ./config.sh --url https://github.com/ORG/REPO --token ТОКЕН, ответив на вопросы про имя и метки.
  3. Поставьте службу: sudo ./svc.sh install, затем sudo ./svc.sh start, чтобы раннер переживал перезагрузку.
  4. Укажите в workflow runs-on: self-hosted или свою метку.

Раннер GitHub выполняет в публичном репозитории код из чужих запросов на слияние, поэтому его подключают к закрытым проектам. Требования к серверу те же, что и для GitLab Runner: процессор, память и диск зависят от ваших сборок, а не от самого раннера. Если рядом нужен ещё и свой Git-сервер, посмотрите Gitea с собственным раннером act_runner.

06 · 1 мин

Вопросы об установке GitLab Runner#

Нужно ли открывать порты на сервере для 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.

Почему этому можно верить

Как мы проверяли

Требования из документацииРесурсы, порты и команды сверены с официальной документацией, дата проверки указана.
Всё можно повторитьКоманды и расчёты описаны так, что их повторит любой читатель.
Независимый справочникНе связан с разработчиками приложений и провайдерами и пишет о минусах тоже.

Источники цифр на этой странице: VPS и VDS серверы Таймвеб Клауд, timeweb.cloud/services/vds-vps, проверено 14 октября 2026; Маркетплейс приложений Таймвеб Клауд, timeweb.cloud/marketplace, проверено 14 октября 2026; Документация GitLab Runner: установка в Docker, docs.gitlab.com/runner/install/docker, проверено 15 октября 2026.

SBРедакция SelfBase · обновлено 16 октября 2026

Установите приложение без консоли

Маркетплейс ставит готовый образ на новый сервер: Docker, GitLab, Nextcloud, n8n и другие.

  • Docker, n8n, OpenClaw, GitLab, Nextcloud
  • Ставится при создании сервера
  • Почасовая оплата сервера
  • Root-доступ остаётся у вас
Ресурсы