Самостійно розміщені runner GitHub Actions у ЄС

Ті самі workflow, на машині в Празі чи Ковільяні, яка ваша на місяць, а не на хвилину - з іще теплим кешем збірки й однією адресою, яку фаєрвол справді може дозволити.

Сертифіковано за Tier III ISO 9001 ISO/IEC 27001 ISO 14001 Відповідає GDPR

Для кого це

Команда, що стежить за лічильником хвилин

Хвилина Linux на 2 ядрах коштує 0,006 USD, а на 16 ядрах - 0,042 USD, тож матрична збірка, яка зробила набір тестів швидким, - це те саме, що зробило рахунок цікавим.

Workflow, якому треба дістатися до чогось приватного

Крок розгортання має говорити з базою даних, реєстром чи пристроєм, який приймає лише відомі адреси, а розміщені runner GitHub приходять із діапазону, надто великого, щоб його дозволити.

Збірка, якій треба більше, ніж несе образ

Ліцензований компілятор, емулятор, 30 ГБ тестових даних або просто більше диска, ніж має розміщений runner - а перевстановлювати це щоразу і є більшою частиною конвеєра.

Що змінюється, коли runner ваш

  • Робочий каталог і кеші зберігаються між завданнями, тож відновлення залежностей перестає бути найдовшим кроком workflow.
  • Статична IPv4 з AS204057, яку ваша база даних, реєстр чи VPN можуть дозволити за адресою.
  • Те, що ви встановили, лишається встановленим - набори інструментів, ліцензовані SDK, емулятори, великі набори тестових даних, усе, чого немає в розміщеному образі.
  • Runner, зареєстровані на рівні репозиторію, організації або підприємства, з мітками на ваш вибір і workflow, який обирає їх через runs-on.
  • Диск і пам'ять на ваш вибір, а не фіксована форма, у якій приходить розміщений runner.
  • Машина в Празі чи Ковільяні за кіпрським договором - це відповідь про резидентність даних, а не налаштування регіону.

Розмір за тим, що конвеєр робить насправді

Одна служба runner - це одне завдання за раз, тож паралельність тут є кількістю процесів runner, а не щаблем тарифу: кілька на одному хості, кожна у власному каталозі, - звичайна форма. Підбирайте за найважчим завданням, а не за середнім, і лишіть запас диска: робочий каталог, кеш інструментів і шари контейнерів живуть саме там, і саме ця сталість є причиною розміщувати в себе. Чесна половина угоди: фіксований місячний хост коштує так само у тиждень без пушів, коли хвилини у провайдера не коштують нічого. Воно окупається, щойно конвеєр працює майже щодня.

Перший раннер
16.49
на місяць

Замовити
одна-дві служби runner
2 vCPU
8 GB RAM
80 GB NVMe
1 статична IPv4
1 щотижнева резервна копія включена
Раннер для команди
32.99
на місяць

Замовити
від чотирьох до шести служб runner
4 vCPU
16 GB RAM
160 GB NVMe
1 статична IPv4
1 щотижнева резервна копія включена
Навантажений пул
62.94
на місяць

Замовити
матрична збірка або кілька репозиторіїв
8 vCPU
32 GB RAM
240 GB NVMe
1 статична IPv4
1 щотижнева резервна копія включена

Як встановити runner GitHub Actions на новому хості

Linux x64, у порядку, який документує GitHub. Реєстраційний токен генерується для кожного runner і спливає через годину після відкриття сторінки, тож беріть його останнім.

  1. Створіть для нього непривілейованого користувача

    sudo adduser --disabled-password --gecos "" runner
    sudo -iu runner

    Runner виконує те, що каже йому workflow, тож він не має бути root і не має ділити домашній каталог ні з чим іншим. Усе нижче виконується від цього користувача.

  2. Завантажте й розпакуйте runner

    mkdir actions-runner && cd actions-runner
    curl -O -L https://github.com/actions/runner/releases/download/v2.336.0/actions-runner-linux-x64-2.336.0.tar.gz
    echo "04cf0be1aff4c3ec3554466c39124ca250e3effd8873bb7e8d68535aa9505d5d  actions-runner-linux-x64-2.336.0.tar.gz" | shasum -a 256 -c
    tar xzf ./actions-runner-linux-x64-2.336.0.tar.gz

    Ця версія і ця контрольна сума - ті, що опубліковані з випуском v2.336.0. Перевірте, чи немає новішої, на сторінці випусків, перш ніж це копіювати: далі runner оновлює себе сам, але перше завантаження перевіряєте ви.

  3. Налаштуйте його на репозиторій або організацію

    ./config.sh --url https://github.com/YOUR-ORG/YOUR-REPO --token AXXXXXXXXXXXXXXXXXXXXXXXXX --labels self-hosted,linux,x64,eu

    Токен візьміть у Settings, потім Actions, потім Runners, потім New self-hosted runner - він обмежений у часі й спливає через годину після видачі. Спрямуйте URL на організацію замість репозиторію, щоб ділити один runner між репозиторіями.

  4. Запустіть як службу

    sudo ./svc.sh install runner
    sudo ./svc.sh start
    sudo ./svc.sh status

    svc.sh приймає користувача, від якого має працювати служба, - саме тому користувача runner створено першим. Скористайтеся натомість ./run.sh, якщо хочете лише побачити, як приходить одне завдання, перш ніж зважитися на службу.

  5. Не дайте needrestart убивати завдання посеред роботи

    echo '$nrconf{override_rc}{qr(^actions\.runner\..+\.service$)} = 0;' | sudo tee /etc/needrestart/conf.d/actions_runner_services.conf

    У Debian та Ubuntu needrestart перезапускає служби, чиї бібліотеки оновлено, - зокрема й runner посеред завдання. GitHub документує саме цей файл як спосіб його виключити.

  6. Спрямуйте на нього workflow

    name: smoke
    on: [push]
    jobs:
      build:
        runs-on: [self-hosted, linux, x64, eu]
        steps:
          - uses: actions/checkout@v6
          - run: cat /etc/os-release

    runs-on збігається з кожною міткою у списку, тож завдання, яке просить чотири мітки, потрапляє лише на runner, що несе всі чотири. Якщо воно лишається в черзі, бракує однієї мітки - а завдання, що чекає понад 24 години, зазнає невдачі.

Звірено з офіційною документацією 2026-08-15 — читати першоджерело

Чим ми не є

  • Ми не GitHub. GitHub, GitHub Actions і runner належать їм, і ніщо на цій сторінці ними не схвалене. Ми продаємо машину, на якій працює runner.
  • Це не замінює вашого тарифу GitHub. Самостійно розміщені runner не витрачають хвилин Actions, у цьому й суть, але ліцензії, сховище й усе інше лишаються в їхньому рахунку.
  • Ми не обслуговуємо runner, якщо ви цього не попросите. Ви встановлюєте його самі або додаєте нашу послугу адміністрування, і ми тримаємо його оновленим, зареєстрованим і під наглядом.
  • Самостійно розміщені runner задокументовано як погано придатні для публічних репозиторіїв: форк може запропонувати зміну у файлі workflow, і цей змінений workflow виконався б на вашій машині. Тримайте їх на приватних репозиторіях, якщо ви цього як слід не обміркували.
  • Тут немає площини керування з автомасштабуванням. Якщо ви хочете runner, які створюються й знищуються на кожне завдання, це Actions Runner Controller на кластері Kubernetes - який ми залюбки розмістимо, на іншій сторінці.

Частини, які команди виявляють запізно

  • Одна служба runner виконує одне завдання за раз. Паралельність з'являється зі встановлення кількох, кожна у власному каталозі й з власною службою, а не з налаштування.
  • Реєстраційний токен спливає через годину після видачі, тож генеруйте його тоді, коли ви готові запустити config.sh, а не на початку дня.
  • Мітки - це весь механізм маршрутизації. runs-on збігається з кожною міткою у списку, тож помилка в написанні не дає помилки виконання: завдання просто чекає і зазнає невдачі після 24 годин у черзі.
  • Runner потребує наявних lttng-ust, OpenSSL, Kerberos, zlib і libicu. Debian та Ubuntu їх несуть; мінімальний образ контейнера часто ні.
  • x64 і ARM64 підтримуються на Linux, а ARM32 - лише на Linux. Debian 10 і новіші та Ubuntu 20.04 і новіші - задокументовані базові версії.
  • Усе, що workflow лишає по собі, лишається на диску - у цьому й перевага, і саме тому самостійно розміщеному runner потрібні заплановане прибирання й знімок.

Хвилини CI у провайдера проти власного runner

Хвилини CI на боці провайдераРаннер на DCXV
За що ви платитеЗа кожну хвилину кожного завдання, доки існує проєктЗа фіксований місячний хост, хоч би що конвеєр робив того місяця
Збірка, що сповільнюєтьсяКоштує більше кожного місяця, поки лишається повільноюНе коштує нічого більше - машина вже оплачена
Кеш шарів DockerХолодний на кожному завданні, якщо ви самі його не вивантажите й не завантажитеТеплий на локальному NVMe, між завданнями і між днями
ПаралельністьЩабель тарифу, який підвищуютьЧисло, яке ви задаєте у власному файлі конфігурації
Куди потрапляє checkoutНа спільний парк машин, часто в регіоні, який неможливо зафіксуватиНа одну машину в Празі чи Ковільяні, за кіпрським договором
Вихідна адресаВеличезний спільний діапазон, який нічим не дозволитиОдна статична IPv4 з AS204057, ваша, щоб її дозволяти
Що може вмістити машинаТе, що випадково несе образ runnerБудь-який набір інструментів, ліцензію чи набір тестових даних, встановлений один раз

Як це запускається на вашому хості

1

Скажіть, що робить конвеєр

Найважче завдання, яке ви виконуєте сьогодні, скільки їх має йти одночасно і чи збирає воно образи контейнерів. Цього досить, щоб підібрати хост без здогадок.

2

Ми передаємо машину

Прага чи Ковільян, доступ root і статична IPv4, менш ніж за десять хвилин. Принесіть власний образ, якщо runner уже всередині нього.

3

Виконайте покрокову інструкцію з цієї сторінки

Це послідовність від виробника, взята з його чинної документації, а не з допису в блозі, і на чистому хості вона займає кілька хвилин.

4

Зробіть знімок, а тоді додайте другий

Зробіть знімок, щойно перший конвеєр стане зеленим, щоб наступна машина була відновленням, а не побудовою з нуля. Пул росте додаванням хостів, а не роздуванням одного.

Чому обирають нас

  • Сертифіковані об'єкти Tier III, SLA об'єкта 99.982%
  • Власна мережа, AS204057, IPv4 та IPv6
  • Підтримка 24/7/365 із середнім часом відповіді близько 10 хвилин
  • Компанія на Кіпрі, юрисдикція ЄС, відповідність GDPR з 2007 року

FAQ

- Скільки коштують розміщені runner GitHub порівняно з власними?

GitHub тарифікує розміщені runner Linux похвилинно: 0,006 USD за 2 ядра, 0,012 за 4, 0,022 за 8 і 0,042 за 16, Windows - 0,010 за 2 ядра, а macOS - 0,062 за машину з 3 чи 4 ядрами. Самостійно розміщені runner не витрачають хвилин Actions. Хост у нас починається від 16,49 EUR на місяць, що приблизно дорівнює вартості 2700 хвилин на розміщеному runner з 2 ядрами - тож точка перетину лежить близько 45 годин збірок на місяць

- Як налаштувати самостійно розміщений runner GitHub Actions?

Створіть непривілейованого користувача, завантажте архів runner для linux-x64 з випусків actions/runner і перевірте контрольну суму, запустіть ./config.sh з URL вашого репозиторію чи організації та реєстраційним токеном із Settings, Actions, Runners, а тоді встановіть його як службу командою sudo ./svc.sh install і запустіть. Точні команди є на цій сторінці. Реєстраційний токен спливає через годину після видачі

- Скільки завдань один runner виконує одночасно?

Одне. Служба runner бере одне завдання за раз, тож паралельність означає встановлення кількох служб runner на хості, кожної у власному каталозі. Саме тому підбір розміру на цій сторінці рахує служби runner, а не завдання, і саме тому машина з 8 vCPU з запасом тягне невелику матричну збірку

- Які операційні системи й архітектури підтримуються?

На Linux - Debian 10 і новіші, Ubuntu 20.04 і новіші, RHEL 8 і новіші, CentOS 8 і новіші, Fedora 29 і новіші, openSUSE 15.2 і новіші та їхні родичі, на x64, ARM64 і ARM32. Runner також потребує lttng-ust, OpenSSL, Kerberos, zlib і libicu, які Debian та Ubuntu несуть штатно

- Чи безпечно використовувати самостійно розміщений runner у публічному репозиторії?

GitHub цього не радить, і причина конкретна: будь-хто може відкрити pull request, що змінює файл workflow, і цей змінений workflow виконався б на вашій машині. Тримайте самостійно розміщені runner на приватних репозиторіях, якщо ви цього уважно не прочитали й не налаштували справжньої ізоляції. До того ж усе, що завдання лишає по собі, зберігається на диску - перевага для кешу і ризик для секретів

- Чи може один runner обслуговувати кілька репозиторіїв?

Так. Зареєструйте його на рівні організації, а не репозиторію, і будь-який репозиторій організації зможе його обрати, маршрутизуючи роботу мітками в runs-on. Завдання, що просить мітку, якої не має жоден runner, просто чекає і зазнає невдачі після 24 годин у черзі - саме так виглядає помилка в написанні runs-on

Якщо вам потрібна допомога або у вас виникли додаткові питання, будь ласка, звертайтеся до менеджерів або напишіть у службу підтримки за адресою support@dcxv.com

Готові розпочати?

Оплата щомісяця, без плати за підключення, без прив'язки

Хмарні сервери від 15 €/міс