GitHub-hostade runners är bekväma tills räkningen eller väntetiden börjar göra ont. Bortom free tier betalar du per minut, cold-startar varje jobb, och laddar ner dependencies på nytt varje körning. En självhostad runner på din egen VPS vänder på alla tre: fast månadskostnad, en varm maskin med dina cachar redan på disk, och en byggmiljö du helt kontrollerar — specifika verktygsversioner, mer RAM, Docker layer cache som faktiskt består.
En runner behöver bara nå GitHub utgående, så den fungerar på våra billigaste planer, betalar i krypto, och behöver ingen KYC.
Vad en runner behöver
- CPU och RAM för dina builds. Small ($8/mån — 4 vCPU, 4 GB RAM, 35 GB NVMe) är det bekväma standardvalet för de flesta CI: Node/Go/Rust-builds, testsviter, Docker-image-builds. Tung kompilering eller parallella jobb? Kliv upp till Medium eller ett Pro-plan.
- NVMe-disk för cachar. Hela poängen med självhosting är persistens — dependency-cachar, Docker-lager, build-artefakter stannar på disk mellan körningar. NVMe håller återställningar snabba.
- Ingen dedikerad IP krävs. Runnern ringer ut till GitHub över HTTPS; inget behöver nå den inbound. Ett NAT-plan (från $3/mån) räcker. Ta en dedikerad IP bara om du också självhostar något som betjänar trafik.
Sätt upp en runner (Ubuntu 24.04)
Skapa runnern i din repo (eller org): Settings → Actions → Runners → New self-hosted runner → Linux. GitHub visar ett nedladdningskommando och en engångs-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
Håll den igång som en tjänst
Kör inte ./run.sh i en terminal — installera den som en systemd-tjänst så att den överlever omstarter:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
Runnern visas nu som Idle i GitHub-UI:t och plockar upp vilket jobb som helst som riktar sig till den.
Använd den från en workflow
Rikta ett jobb mot 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-baserade jobb
Installera Docker en gång och dina workflows kan bygga images eller köra service-containrar, med layer cache som består mellan körningar:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # let the runner use Docker without sudo
För engångs-per-jobb-isolering, kör runnern själv inuti en container och återskapa den varje körning — ett vanligt mönster för opålitliga eller matrix-builds.
Varför EQVPS för CI
- Fast kostnad, obegränsade minuter. Ingen mätning per minut — en upptagen pipeline kostar samma som en inaktiv.
- Varma cachar. Dependencies och Docker-lager stannar på NVMe mellan körningar; builds blir snabbare, inte långsammare.
- Root på ~60 sekunder, rena images. Ubuntu, Debian med flera via cloud-init; installera exakt den toolchain du behöver.
- Ingen KYC, kryptobetalning. E-post för att registrera dig, USDC/USDT för att betala. Starta upp extra runners för release-rusningar och avbryt dem efteråt — oanvänd betald tid återbetalas till ditt saldo.
Kommentarer
Inga kommentarer än. Bli först.