Kjør din egen Forgejo-runner på Codeberg – en utviklers guide til selvstyrt CI/CD
Hvorfor kjøre din egen CI/CD-runner?
Codeberg er et solid alternativ til GitHub. Plattformen er bygd på Forgejo og drives av en ideell organisasjon som prioriterer personvern og fellesskap. Men som med de fleste non-profit-prosjekter, har de begrenset kapasitet på delte runners.
Løsningen er enkel: sett opp din egen Forgejo-runner. Fordelen er at runneren oppretter utgående forbindelse til Codeberg, så den fungerer like fint på en VPS, hjemmeserver eller laptop. Ingen port forwarding kreves.
Hvordan arkitekturen fungerer
En Forgejo-runner er en arbeidsprosess som tar imot jobber fra Codeberg og kjører dem. For å holde ting sikkert, isolerer vi runneren fra vertsmaskinen ved å bruke Docker-in-Docker (DinD). Dette betyr at runneren starter containere uten å røre vertens Docker-daemon.
Docker Compose-oppsett
Kjernen i løsningen er to containere:
version: '3.8'
services:
docker-in-docker:
image: docker:dind
container_name: 'docker_dind'
privileged: 'true'
command: ['dockerd', '-H', 'tcp://0.0.0.0:2375', '--tls=false']
restart: 'unless-stopped'
runner:
image: 'data.forgejo.org/forgejo/runner:12'
links:
- docker-in-docker
depends_on:
docker-in-docker:
condition: service_started
container_name: 'runner'
environment:
DOCKER_HOST: tcp://docker-in-docker:2375
user: 1001:1001
volumes:
- ./data:/data
restart: 'unless-stopped'
command: 'forgejo-runner daemon --config runner-config.yml'
Den ene containeren gir et isolert Docker-miljø,而另一 containeren er selve Forgejo-runneren.
Forbered systemet
Før du starter containere, må du lage mappestrukturen og sette riktige rettigheter. Gå til katalogen der det skal lagres (jeg anbefaler /opt/forgejo-runner) og kjør:
cd /opt/forgejo-runner
mkdir -p data/.cache
chown -R 1001:1001 data
chmod 775 data/.cache
chmod g+s data/.cache
Next, lagre en standard konfigurasjonsfil:
sudo sh -c 'docker run --rm data.forgejo.org/forgejo/runner:12 forgejo-runner generate-config > data/runner-config.yml'
Denne filen er godt dokumentert og kan justeres etter behov.
Registrer runneren din på Codeberg
Nå skal runneren kobles til Codeberg. Gå til konto- eller organisasjonsinnstillinger og velg Actions → Runners. Klikk på "Create new runner", og give den et navn og eventuell beskrivelse.
Codeberg vil generere en UUID og en token — ta vare på disse med en gang. Disse verdiene gir runneren tilgang til Codeberg. De vil ikke vises igjen med mindre du gjør en reset.
Codeberg viser også den exacte YAML-koden du trenger for å konfigurer runneren.
Konfigurer labels og kapasitet
Åpne runner-config.yml og gjør de to viktigste endringene:
1. Server-konfigurasjon
Add de autentiseringsverdiene Codeberg ga deg.
2. Labels
Labels er hvordan workflows finner din runner. De er i en tredeltsyntax: [Workflow Label]:[Execution Method]://[Environment]
For eksempel:
labels:
- 'ubuntu-latest:docker://node:20-bookworm'
- 'ubuntu-22.04:docker://node:20-bookworm'
- 'ubuntu-24.04:docker://node:22-bookworm'
When a workflow specifies runs-on: ubuntu-latest, Codeberg will match it to a runner with that label.
Optional: Adjust Capacity
By default, runners handle one job at a time. If you have resources, increase the capacity setting to run multiple jobs simultaneously.
Når alt er klart
Start runneren med:
docker-compose up -d
Monitorer loggene:
docker-compose logs -f runner
Du vil se at runneren registrerer seg på Codeberg. En gang til registered, vil workflows som tar imot dine labels sendes til din selvhostede runner.
Hva du får ut av det
Med en selvhostet runner får du:
- Raskere kjøring med no queue delays
- Full kontroll over CI/CD-miljøet og avhengigheter
- Kostnadsbesparelser og støtte til Codebergs ideelle arbeid
- Personvern – loggene dine holdes på din infrastruktur
- Fleksibilitet – skalere etter behov
Avslutning
Å sette opp en selvhostet Forgejo-runner er en infrastruktur-beslutning som gir umiddelbar verdi. Det er enkelt nok til å gjøre på en fredag afternoon, og det er tilstrekkelig for en utviklings-team. Plus, ved oppbringing av load på Codebergs delte runners, støtter du den open-source-økonomien.
Om du allerede er på Codeberg, er dette en naturlig neste step. Om du er stil på GitHub og er thinking om å gå til en alternativ, gir denne løsningen en reliable CI/CD.