← Tilbake til dokumentasjon
Middels

Installer en self-hosted GitHub Actions runner

Registrer en dedikert Ubuntu 26.04-VPS som GitHub Actions runner for et betrodd privat repository.

github-actionscirunnerbuild-serversecurity

Denne guiden registrerer én fast runner for ett betrodd privat repository. Workflow-kode kjører kommandoer på VPS-en, så serveren bør ikke samtidig kjøre produksjonsapper eller databaser.

Før du starter

  • En Ubuntu 26.04-VPS med sikkerhetsoppsettet
  • Admin-tilgang til det private GitHub-repoet
  • En avklaring av hvem som kan endre workflow-filer og hvilke branches som er tillatt

GitHub anbefaler self-hosted runnere bare for private repositories. Pull requests fra offentlige forks kan eksponere en fast runner for ukjent kode.

Opprett en bruker uten ekstra rettigheter

sudo adduser --disabled-password --gecos '' github-runner
sudo install -d -o github-runner -g github-runner -m 0750 /opt/actions-runner
sudo apt update
sudo apt install curl ca-certificates tar

Ikke legg brukeren i sudo- eller docker-gruppen med mindre en gjennomgått workflow faktisk trenger det. Medlemskap i docker-gruppen gir i praksis root-tilgang til hosten.

Last ned og registrer runneren

Åpne det private repoet i GitHub og gå til Settings → Actions → Runners → New self-hosted runner. Velg Linux og x64. GitHub viser kommandoer med gjeldende runner-versjon, checksum, repository URL og registration token.

Kjør kommandoene for download, checksum og utpakking som github-runner i /opt/actions-runner. Bruk verdiene GitHub viser i stedet for å kopiere versjon eller token fra denne guiden. Registration token utløper etter én time.

Kjør config-kommandoen og legg til en unik label, for eksempel shrp-build-01:

sudo -u github-runner ./config.sh --url REPOSITORY_URL --token REGISTRATION_TOKEN --labels shrp-build-01 --unattended

Bytt begge plassholderne med verdiene fra GitHub. Kommandoen lagrer runner-credentials på disk. Beskytt /opt/actions-runner, og ikke legg innholdet i generelle backups eller support-arkiver.

Installer servicen

Kjør runnerens service-script fra /opt/actions-runner:

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

Sjekk at runneren vises som Idle i GitHub. Den oppretter utgående HTTPS-forbindelser på port 443 og trenger ingen offentlig inngående port.

Kjør en kontrollert testjobb

Opprett .github/workflows/verify-self-hosted-runner.yml i det private repoet:

name: Verify self-hosted runner

on:
  workflow_dispatch:

permissions:
  contents: read

jobs:
  verify:
    runs-on: [self-hosted, linux, x64, shrp-build-01]
    steps:
      - uses: actions/checkout@v4
      - name: Show runner details
        run: |
          uname -a
          test -n "$RUNNER_NAME"

Start workflowen manuelt. Sjekk at GitHub viser riktig runnernavn, at jobben fullføres og at runneren går tilbake til Idle.

Begrens credentials og tilgang

  • Sett standardrettighetene for GITHUB_TOKEN til read-only, og gi write-tilgang bare til jobbene som trenger det.
  • Bruk environments og required reviewers for production deployments.
  • Foretrekk OIDC eller kortlivede credentials med få rettigheter fremfor personlige tokens.
  • Ikke installer personlige SSH-nøkler på runneren.
  • Begrens hvem som kan merge eller endre workflow-filer.
  • Pin tredjeparts-actions til en gjennomgått commit SHA når du trenger sterkere supply-chain-kontroll.

En fast runner kan beholde workspaces, caches og filer fra tidligere jobber. Rydd sensitive filer etter hver jobb, eller bruk ephemeral runners når du trenger bedre isolasjon.

Oppdater, feilsøk og fjern

Runneren oppdaterer vanligvis seg selv, men GitHub kan slutte å sende jobber hvis en påkrevd sikkerhetsoppdatering mangler. Sjekk servicen med:

sudo ./svc.sh status
sudo journalctl -u 'actions.runner.*' -n 100 --no-pager

Når runneren skal fjernes, bruker du først Remove i GitHub for å få gjeldende kommando. Stopp og avinstaller servicen, kjør removal-kommandoen og slett katalogen først etter at runneren er borte fra GitHub.

Se CI-runnere og byggeservere på VPS for valg av størrelse og isolering.

Kilder: legg til self-hosted runner, secure use og runner reference.