Letni upał — wszystko się topi, nawet nasze ceny.−25%−25% na każdy plan roczny, do 31 sierpniaZobacz plany
EQVPS
Zacznij

Uruchamianie samodzielnego runnera GitHub Actions na VPS

27 lip 2026 · 4 min czytania · Zespół EQVPS

Runnery hostowane przez GitHub to dobry domyślny wybór. Przestajesz ich potrzebować w chwili, gdy build chce czegoś, czego nie mają — Twojego prywatnego rejestru pakietów, konkretnej wersji toolchainu, której masz dość reinstalowania przy każdym przebiegu, bazy danych w Twojej własnej sieci lub po prostu większej kontroli nad maszyną. Wtedy samodzielny runner na VPS zarabia na siebie.

Ten przewodnik uruchamia jeden porządnie: zainstalowany, zarejestrowany, żywy pod systemd i — część, którą ludzie mylą — bezpieczny. Zacznijmy od tej ostatniej, bo to część, która gryzie.

Jedna zasada bezpieczeństwa

Przepływ pracy GitHub Actions uruchamia dowolny kod — to, co jest w pliku przepływu, i to, co ten kod wciąga. Na Twoim własnym repozytorium to Twój kod, i jest w porządku. Na publicznym repozytorium pull request od obcego może uruchomić jego kod na Twoim runnerze. To nie błąd; tak działa CI. Własna dokumentacja GitHuba mówi wprost: nie używaj samodzielnych runnerów z publicznymi repozytoriami.

Więc zasada jest prosta i nienegocjowalna: samodzielne runnery są dla prywatnych repozytoriów. Jeśli Twoje repozytorium jest publiczne, użyj runnerów hostowanych przez GitHub i idź dalej. Wszystko poniżej zakłada prywatne repozytorium.

Czego runner potrzebuje od maszyny

Zależy od builda, i powinieneś dobrać rozmiar pod swój, a nie liczbę ze strony:

Dysk też ma znaczenie: cache buildów, warstwy Docker i sklonowane repozytoria się sumują. Miej na to oko i usuwaj.

1. Przygotuj maszynę

Utwórz użytkownika innego niż root dla runnera — instalator GitHuba i tak odmawia uruchomienia jako root, i chcesz tego:

sudo adduser --disabled-password --gecos "" runner
sudo usermod -aG sudo runner   # tylko jeśli Twoje buildy naprawdę potrzebują sudo

Zainstaluj, czego potrzebują Twoje buildy — toolchain języka, Docker, narzędzia builda. Na przykład, jeśli Twoje zadania budują kontenery:

sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner

2. Pobierz i zarejestruj runner

W swoim repozytorium (lub org) na GitHubie idź do Settings → Actions → Runners → New self-hosted runner. GitHub daje Ci dokładne polecenia pobierania i token rejestracji (jest krótkotrwały — chwyć świeży). Jako użytkownik runner:

sudo -iu runner
mkdir actions-runner && cd actions-runner
# użyj dokładnego URL, który GitHub pokazuje dla Twojego OS/arch:
curl -o actions-runner-linux-x64.tar.gz -L "URL_FROM_GITHUB"
tar xzf actions-runner-linux-x64.tar.gz
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN

config.sh pyta o nazwę runnera, etykiety i folder roboczy — domyślne są w porządku na start. Etykiety to sposób, w jaki Twój przepływ celuje w tego runnera (runs-on: self-hosted).

3. Uruchom go jako usługę systemd

Runner dostarcza pomocnika, który instaluje usługę systemd za Ciebie — użyj go, by runner przetrwał restarty i restartował się przy awarii. Wciąż jako instalacja użytkownika runner, ale polecenia usługi potrzebują root:

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

To rejestruje actions.runner.* jako jednostkę systemd działającą jako użytkownik runner, startującą przy rozruchu. Logi idą do journald:

sudo journalctl -u 'actions.runner.*' -f

Z powrotem na stronie Runners GitHuba Twój runner pokazuje teraz Idle — zielona kropka. Skieruj na niego przepływ pracy:

jobs:
  build:
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v4
      - run: make test

Wypchnij, a zadanie działa na Twojej maszynie.

4. Utrzymuj go w czystości

Samodzielny runner ponownie używa swojego systemu plików między zadaniami — to wygrana szybkości (ciepłe cache) i footgun (pozostały stan). Dwa nawyki utrzymują go zdrowym:

Jeśli potrzebujesz naprawdę czystego środowiska na zadanie, uruchamiaj każde zadanie wewnątrz kroku kontenerowego — runner zostaje, bałagan zadania nie.

Kiedy hostować samodzielnie, uczciwie

Hostuj samodzielnie, gdy potrzebujesz własnego toolchainu wbudowanego, dostępu do prywatnych zasobów sieciowych lub kontroli nad maszyną. Zostań na runnerach hostowanych przez GitHub, gdy czyste, jednorazowe środowisko i ich minuty Ci pasują — to naprawdę prostsze, a prostsze jest coś warte. I nigdy, na publicznym repozytorium, nie hostuj samodzielnie. Ta jedna nie jest preferencją.

Jeśli runner na prywatnym repozytorium to, czego potrzebujesz: wybierz planSmall (8 $) dla lżejszych buildów, Medium (12 $), gdy stają się cięższe — płać w USDC lub USDT (bez KYC, bez dokumentów), a będziesz miał root w około 60 sekund. Potem przejdź po tej stronie, a będziesz miał runnera podchwytującego zadania kilka minut później.

FAQ

Dlaczego uruchamiać własny runner zamiast hostowanego przez GitHub?

Trzy prawdziwe powody: własne zależności i toolchain wbudowane (bez ich reinstalowania przy każdym przebiegu), dostęp do prywatnych zasobów jak wewnętrzny rejestr lub baza danych oraz kontrola nad maszyną — jej rozmiarem, cache'ami, siecią. Jeśli minuty hostowane przez GitHub i czyste środowisko Ci pasują, zostań na nich. Hostuj samodzielnie, gdy konkretnie potrzebujesz jednego z tych trzech.

Czy używanie samodzielnego runnera jest bezpieczne?

Na prywatnym repozytorium — tak. Na publicznym — nie, nigdy. Przepływ pracy uruchamia dowolny kod od tego, kto go wyzwoli, a na publicznym repozytorium pull request obcego może uruchomić jego kod na Twoim runnerze. Własna dokumentacja GitHuba mówi to samo. Trzymaj samodzielne runnery na prywatnych repozytoriach albo zaakceptuj, że wręczasz maszynę internetowi.

Ile CPU i RAM potrzebuje runner?

Zależy całkowicie od Twojego builda. Typowe zadanie kompiluj-i-testuj jest wygodne z 2 rdzeniami i 4–8 GB — Small lub Medium tutaj. Ciężkie buildy (duże natywne kompilacje, duże obrazy Docker, pamięciożerne zestawy testów) chcą więcej, i powinieneś dobrać rozmiar pod faktyczne zadanie, nie zgadywanie. Obserwuj jeden prawdziwy przebieg, a będziesz wiedział.

Czy jeden runner obsłuży wiele repozytoriów?

Runner może być zarejestrowany do organizacji i podchwytywany przez kilka repozytoriów, domyślnie jedno zadanie naraz. Dla większej równoległości uruchom więcej runnerów — każdy to własna usługa systemd. Po prostu trzymaj je wszystkie na prywatnych repozytoriach.

Czy muszę podać wam dokument tożsamości?

Nie. E-mail do rejestracji, USDC lub USDT do zapłaty. Bez dokumentów, root w około minutę.

← Powrót do blogaZobacz plany i ceny →

Komentarze

Brak komentarzy. Bądź pierwszy.

Zostaw komentarz

Komentarze są moderowane przed pojawieniem się.