GitHub-hosted runners zijn handig tot de rekening of de wachttijd begint te pijn doen. Voorbij de free tier betaal je per minuut, cold-start je elke job, en download je dependencies elke run opnieuw. Een self-hosted runner op je eigen VPS keert alle drie om: vaste maandkosten, een warme machine met je caches al op schijf, en een build-omgeving die je volledig beheert — specifieke tool-versies, meer RAM, Docker layer cache die daadwerkelijk persistent blijft.
Een runner hoeft GitHub alleen uitgaand te bereiken, dus hij werkt op onze goedkoopste plannen, betaalt in crypto, en heeft geen KYC nodig.
Wat een runner nodig heeft
- CPU en RAM voor je builds. Small ($8/mnd — 4 vCPU, 4 GB RAM, 35 GB NVMe) is de comfortabele standaard voor de meeste CI: Node/Go/Rust-builds, test suites, Docker-image-builds. Zware compilatie of parallelle jobs? Stap op naar Medium of een Pro-plan.
- NVMe-schijf voor caches. Het hele punt van zelf hosten is persistentie — dependency-caches, Docker-layers, build-artifacts blijven op schijf tussen runs. NVMe houdt restores snel.
- Geen dedicated IP vereist. De runner belt uitgaand naar GitHub via HTTPS; niets hoeft hem inbound te bereiken. Een NAT-plan (vanaf $3/mnd) is genoeg. Neem alleen een dedicated IP als je ook iets zelf host dat verkeer bedient.
Zet een runner op (Ubuntu 24.04)
Maak de runner aan in je repo (of org): Settings → Actions → Runners → New self-hosted runner → Linux. GitHub toont een download-commando en een eenmalige registratie-token. Op de VPS:
# 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
Houd het draaiend als een service
Draai ./run.sh niet in een terminal — installeer het als een systemd-service zodat het herstarts overleeft:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
De runner verschijnt nu als Idle in de GitHub-UI en pakt elke job op die op hem gericht is.
Gebruik het vanuit een workflow
Richt een job op je runner met 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-gebaseerde jobs
Installeer Docker één keer en je workflows kunnen images bouwen of service-containers draaien, met layer cache die tussen runs persistent blijft:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # let the runner use Docker without sudo
Voor wegwerp-per-job-isolatie, draai de runner zelf in een container en maak hem elke run opnieuw aan — een gangbaar patroon voor untrusted of matrix-builds.
Waarom EQVPS voor CI
- Vaste kosten, onbeperkte minuten. Geen metering per minuut — een drukke pipeline kost hetzelfde als een inactieve.
- Warme caches. Dependencies en Docker-layers blijven op NVMe tussen runs; builds worden sneller, niet langzamer.
- Root in ~60 seconden, schone images. Ubuntu, Debian en meer via cloud-init; installeer precies de toolchain die je nodig hebt.
- Geen KYC, cryptobetaling. E-mail om je aan te melden, USDC/USDT om te betalen. Zet extra runners op voor release-drukte en annuleer ze daarna — ongebruikte betaalde tijd wordt terugbetaald naar je saldo.
Reacties
Nog geen reacties. Wees de eerste.