Главная/Разработка/GitLab Runner
Установка GitLab Runner на свой сервер
Установка GitLab Runner на сервер делается одним контейнером Docker: он забирает задания из вашего GitLab и выполняет их у себя, каждое в чистом контейнере. Тот же приём работает для GitHub Actions: там раннер называется self-hosted runner, а ставится обычной программой с выдаваемым токеном.
Ответ за 30 секунд
Раннеру на старте хватит 2 ядер и 4 ГБ памяти, а на сборки Docker-образов добавляйте память и диск. Запускайте его в контейнере с executor docker, регистрируйте по токену из интерфейса GitLab и не давайте доступ к docker.sock чужим проектам: это полный контроль над сервером.
Маркетплейс создаёт сервер с установленным GitLab Runner, останется зарегистрировать его по токену.
Сколько ресурсов нужно раннеру GitLab на VPSglrt-префикс токена нового раннера
0входящих портов нужно раннеру
60установок из маркетплейса на 14.10
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 и регистрация по токену#
- Поставьте Docker с Compose на отдельный сервер, не на тот, где стоит GitLab.
- Запустите контейнер раннера по compose-файлу ниже. Каталог
configхранит файлconfig.tomlс токеном, не теряйте его. - Создайте раннер в GitLab: в проекте это Settings, CI/CD, Runners, кнопка нового раннера. Метки (tags) и режим запуска задаются там же, в интерфейсе. GitLab выдаст токен с префиксом
glrt-. - Зарегистрируйте раннер командой ниже. Флаг с метками здесь не нужен: при регистрации по токену метки берутся из настроек раннера в интерфейсе.
- Проверьте: раннер появится в списке со статусом 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. Страница сама подставит ссылку на архив и одноразовый токен для вашей системы.
- Создайте обычного пользователя под раннер:
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или свою метку.
Раннер 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.
Установите приложение без консоли
Маркетплейс ставит готовый образ на новый сервер: Docker, GitLab, Nextcloud, n8n и другие.
- Docker, n8n, OpenClaw, GitLab, Nextcloud
- Ставится при создании сервера
- Почасовая оплата сервера
- Root-доступ остаётся у вас