Installer en self-hosted GitHub Actions runner
Registrer en dedikert Ubuntu 26.04-VPS som GitHub Actions runner for et betrodd privat repository.
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_TOKENtil 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.