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 для оплати. Піднімайте додаткові раннери під релізні аврали й вимикайте після — невикористаний оплачений час повертається на баланс.
Коментарі
Поки немає коментарів. Будьте першим.