GitHub-hosted раннеры удобны, пока не начинает бить по кошельку счёт или по нервам — время ожидания. Сверх бесплатного лимита вы платите поминутно, каждая задача стартует «с холода» и заново скачивает зависимости. Self-hosted раннер на вашем VPS переворачивает все три пункта: фиксированная ежемесячная стоимость, «тёплая» машина с вашими кэшами уже на диске и окружение сборки под полным вашим контролем — конкретные версии инструментов, больше RAM, кэш слоёв Docker, который реально сохраняется.
Раннеру нужно только исходящее подключение к GitHub, поэтому он работает на самых дешёвых планах, оплачивается криптой и не требует KYC.
Что нужно раннеру
- CPU и RAM под ваши сборки. Small ($8/мес — 4 vCPU, 4 ГБ RAM, 35 ГБ NVMe) — комфортный выбор для большинства CI: сборки Node/Go/Rust, наборы тестов, сборка Docker-образов. Тяжёлая компиляция или параллельные задачи? Возьмите Medium или план Pro.
- NVMe-диск под кэши. Весь смысл self-hosting — в сохранности: кэши зависимостей, слои Docker, артефакты сборки остаются на диске между запусками. NVMe делает восстановление быстрым.
- Выделенный IP не нужен. Раннер сам дозванивается до GitHub по HTTPS; входящий доступ к нему не требуется. Достаточно NAT-плана (от $3/мес). Берите выделенный IP, только если параллельно хостите что-то, что отдаёт трафик.
Настройка раннера (Ubuntu 24.04)
Создайте раннер в репозитории (или организации): Settings → Actions → Runners → New self-hosted runner → Linux. GitHub покажет команду загрузки и одноразовый токен регистрации. На VPS:
# от имени обычного пользователя (раннер отказывается работать от root)
adduser --disabled-password --gecos "" runner
su - runner
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64.tar.gz -L \
https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64.tar.gz
tar xzf actions-runner-linux-x64.tar.gz
# регистрация по URL + токену из интерфейса GitHub
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN
Держим раннер как сервис
Не запускайте ./run.sh в терминале — установите раннер как systemd-сервис, чтобы он переживал перезагрузки:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
Теперь раннер отображается как Idle в интерфейсе GitHub и подхватывает любую задачу, нацеленную на него.
Использование из workflow
Направьте задачу на ваш раннер через runs-on:
jobs:
build:
runs-on: self-hosted # или своя метка, заданная при регистрации
steps:
- uses: actions/checkout@v4
- run: make build && make test
Задачи на Docker
Установите Docker один раз — и ваши workflow смогут собирать образы или запускать сервис-контейнеры, а кэш слоёв будет сохраняться между запусками:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # разрешаем раннеру использовать Docker без sudo
Для одноразовой изоляции под каждую задачу запускайте сам раннер внутри контейнера и пересоздавайте его каждый запуск — частый паттерн для недоверенных или матричных сборок.
Почему EQVPS для CI
- Фиксированная цена, неограниченные минуты. Никакой поминутной тарификации — загруженный пайплайн стоит столько же, сколько простаивающий.
- «Тёплые» кэши. Зависимости и слои Docker остаются на NVMe между запусками; сборки становятся быстрее, а не медленнее.
- Root за ~60 секунд, чистые образы. Ubuntu, Debian и другие через cloud-init; ставьте именно нужный вам тулчейн.
- Без KYC, оплата криптой. Email для регистрации, USDC/USDT для оплаты. Поднимайте дополнительные раннеры под релизные авралы и отключайте после — неиспользованное оплаченное время возвращается на баланс.
Комментарии
Пока нет комментариев. Будьте первым.