EQVPS
Anza

Kuendesha Self-Hosted GitHub Actions Runner kwenye VPS

Jul 27, 2026 · 4 min read · EQVPS Team

GitHub-hosted runners ni chaguo-msingi zuri. Unaacha kuzihitaji mara build inapotaka kitu wasichonacho — private package registry yako, version mahususi ya toolchain uliyochoka kuisakinisha upya kila run, hifadhidata kwenye network yako, au udhibiti zaidi wa mashine. Hapo ndipo self-hosted runner kwenye VPS inakama nafasi yake.

Mwongozo huu unaipata moja ikiendesha vizuri: imesakinishwa, imeregisterwa, hai chini ya systemd, na — sehemu watu huikosea — salama. Tuanze na ile ya mwisho, kwa sababu ni sehemu inayouma.

Sheria moja ya usalama

GitHub Actions workflow huendesha code ya kiholela — chochote kilicho katika workflow file, na chochote code hiyo inavuta. Kwenye repo yako mwenyewe ni code yako, nayo ni sawa. Kwenye repo ya public, pull request kutoka mgeni inaweza kuendesha code yao kwenye runner yako. Hiyo si bug; ni jinsi CI inavyofanya kazi. Nyaraka za GitHub zenyewe zinasema waziwazi: usitumie self-hosted runners na public repositories.

Hivyo sheria ni rahisi na isiyo ya mazungumzo: self-hosted runners ni kwa private repos. Kama repo yako ni public, tumia GitHub-hosted runners na uendelee. Kila kitu hapa chini kinafikiri private repo.

Runner inahitaji nini kutoka sanduku

Inategemea build, nawe unapaswa kuweka saizi kwa yako badala ya namba kutoka ukurasa:

Disk inahusika pia: build caches, Docker layers, na repos zilizoclonewa zinajumuika. Weka jicho na prune.

1. Andaa sanduku

Unda non-root user kwa runner — installer ya GitHub inakataa kuendesha kama root ateuti hivyo, nawe unaitaka hivyo:

sudo adduser --disabled-password --gecos "" runner
sudo usermod -aG sudo runner   # tu kama builds zako dhati zinahitaji sudo

Sakinisha chochote builds zako zinahitaji — language toolchain, Docker, build tools. Kwa mfano, kama jobs zako zinabuild containers:

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

2. Pakua na uregister runner

Katika repo yako (au org) kwenye GitHub, nenda Settings → Actions → Runners → New self-hosted runner. GitHub inakupa amri halisi za download na registration token (ni ya muda mfupi — ichukue mpya). Kama runner user:

sudo -iu runner
mkdir actions-runner && cd actions-runner
# tumia URL halisi GitHub inayokuonyesha kwa OS/arch yako:
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 inauliza jina la runner, labels, na work folder — defaults ni sawa kuanza. Labels ni jinsi workflow yako inavyolenga runner hii (runs-on: self-hosted).

3. Iendeshe kama systemd service

Runner inakuja na helper inayosakinisha systemd service kwa ajili yako — itumie, ili runner ibaki kupitia reboots na restart kwenye ushindwe. Bado kama install ya runner user, lakini amri za service zinahitaji root:

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

Hiyo inaregister actions.runner.* kama systemd unit inayoendesha kama runner user, ikianza kwenye boot. Logs zinaenda journald:

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

Rudi kwenye ukurasa wa Runners wa GitHub, runner yako sasa inaonyesha Idle — nukta ya kijani. Elekeza workflow kwake:

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

Push, na job inaendesha kwenye sanduku lako.

4. Iweke safi

Self-hosted runner hutumia tena filesystem yake kati ya jobs — hiyo ni ushindi wa kasi (caches za joto) na footgun (hali iliyobaki). Tabia mbili huiweka na afya:

Kama unahitaji mazingira safi dhati kwa job, endesha kila job ndani ya container step — runner inabaki, gharabu ya job haibaki.

Lini kujihifadhi, kwa uaminifu

Jihifadhi wakati unahitaji toolchain yako imepikwa ndani, ufikiaji wa rasilimali za private network, au udhibiti wa mashine. Baki kwenye GitHub-hosted runners wakati mazingira safi, ya kutupa na minutes zao yanakufaa — hilo ni rahisi zaidi dhati, na rahisi kunastahili kitu. Na kamwe, kwenye public repo, usijihifadhi. Hiyo si upendeleo.

Kama private-repo runner ndiyo unayohitaji: chagua mpangoSmall ($8) kwa builds nyepesi, Medium ($12) zinapokuwa nzito zaidi — lipa kwa USDC au USDT (bila KYC, bila nyaraka), nawe utakuwa na root kwa takriban sekunde 60. Kisha fanya kazi chini ya ukurasa huu nawe utakuwa na runner ikichukua jobs dakika chache baadaye.

Angalia mpango na uagize VPS →

FAQ

Kwa nini kuendesha runner yangu badala ya GitHub-hosted?

Sababu tatu halisi: dependencies na toolchain yako imepikwa ndani (bila kuzisakinisha upya kila run), ufikiaji wa rasilimali za faragha kama internal registry au hifadhidata, na udhibiti wa mashine — saizi yake, caches zake, network yake. Kama GitHub-hosted minutes na mazingira safi yanakufaa, baki nazo. Jihifadhi wakati unahitaji mahususi mmoja wa hizo tatu.

Je ni salama kutumia self-hosted runner?

Kwenye private repo, ndiyo. Kwenye public repo, hapana — kamwe. Workflow huendesha code ya kiholela kutoka kwa yeyote anayeitrigger, na kwenye public repo pull request ya mgeni inaweza kuendesha code yao kwenye runner yako. Docs za GitHub zenyewe zinasema hivyo. Weka self-hosted runners kwa private repos, au ukubali unakabidhi sanduku lako kwa intaneti.

Runner inahitaji CPU na RAM kiasi gani?

Inategemea kabisa build yako. Compile-and-test job ya kawaida iko starehe na cores 2 na 4-8 GB — Small au Medium hapa. Builds nzito (native compiles kubwa, Docker images kubwa, test suites zenye njaa ya kumbukumbu) zinataka zaidi, nawe unapaswa kuweka saizi kwa job yako halisi, si kisio. Angalia run moja halisi nawe utajua.

Je runner moja inaweza kushughulikia repos nyingi?

Runner inaweza kuregister kwa organization na kuchukuliwa na repos kadhaa, job moja kwa wakati kwa chaguo-msingi. Kwa parallelism zaidi, endesha runners zaidi — kila moja ni systemd service yake. Ziweke tu zote kwenye private repos.

Je ninahitaji kukupa ID?

Hapana. Barua pepe kujisajili, USDC au USDT kulipa. Hakuna nyaraka, root kwa takriban dakika moja.

← Back to blogSee plans & pricing →

Maoni

Bado hakuna maoni. Kuwa wa kwanza.

Acha maoni

Maoni yanakaguliwa kabla ya kuonekana.