GitHub-hostede runnere er bekvemme, indtil regningen eller ventetiden begynder at gøre ondt. Ud over gratis-tieren betaler du pr. minut, cold-starter hvert job og gen-downloader afhængigheder hver kørsel. En selv-hostet runner på din egen VPS vender alle tre: fast månedlig omkostning, en varm maskine med dine caches allerede på disk, og et build-miljø, du fuldt ud kontrollerer — specifikke værktøjsversioner, mere RAM, Docker layer cache, der faktisk består.
En runner behøver kun at nå GitHub udgående, så den virker på vores billigste planer, betaler i krypto og behøver ingen KYC.
Hvad en runner har brug for
- CPU og RAM til dine builds. Small ($8/md — 4 vCPU, 4 GB RAM, 35 GB NVMe) er den komfortable standard til de fleste CI: Node/Go/Rust-builds, testsuiter, Docker-image-builds. Tung kompilering eller parallelle jobs? Ryk op til Medium eller en Pro-plan.
- NVMe-disk til caches. Hele pointen med selv-hosting er persistens — afhængighedscaches, Docker-layers, build-artefakter bliver på disk mellem kørsler. NVMe holder gendannelser hurtige.
- Ingen dedikeret IP påkrævet. Runneren ringer ud til GitHub over HTTPS; intet skal nå den indgående. En NAT-plan (fra $3/md) er nok. Tag kun en dedikeret IP, hvis du også selv-hoster noget, der betjener trafik.
Sæt en runner op (Ubuntu 24.04)
Opret runneren i dit repo (eller org): Settings → Actions → Runners → New self-hosted runner → Linux. GitHub viser en download-kommando og et engangs-registreringstoken. På VPS'en:
# as a non-root user (the runner refuses to run as 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
# register with the URL + token from the GitHub UI
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN
Hold den kørende som en tjeneste
Kør ikke ./run.sh i en terminal — installer den som en systemd-tjeneste, så den overlever genstarter:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
Runneren vises nu som Idle i GitHub-UI'et og samler ethvert job op, der målretter den.
Brug den fra et workflow
Peg et job mod din runner med runs-on:
jobs:
build:
runs-on: self-hosted # or a custom label you set at registration
steps:
- uses: actions/checkout@v4
- run: make build && make test
Docker-baserede jobs
Installer Docker én gang, og dine workflows kan bygge images eller køre service-containere, med layer cache, der består mellem kørsler:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # let the runner use Docker without sudo
Til engangs-per-job-isolation, kør selve runneren inde i en container og genskab den hver kørsel — et almindeligt mønster til untrusted eller matrix-builds.
Hvorfor EQVPS til CI
- Fast omkostning, ubegrænsede minutter. Ingen per-minut-måling — en travl pipeline koster det samme som en inaktiv.
- Varme caches. Afhængigheder og Docker-layers bliver på NVMe mellem kørsler; builds bliver hurtigere, ikke langsommere.
- Root på ~60 sekunder, rene images. Ubuntu, Debian og flere via cloud-init; installer præcis den toolchain, du har brug for.
- Ingen KYC, kryptobetaling. E-mail for at tilmelde dig, USDC/USDT for at betale. Start ekstra runnere op til release-spidsbelastninger og annuller dem bagefter — ubrugt betalt tid refunderes til din saldo.
Kommentarer
Ingen kommentarer endnu. Vær den første.