Kør din egen Forgejo Runner på Codeberg: En udviklers guide til selvhostet CI/CD

Kør din egen Forgejo Runner på Codeberg: En udviklers guide til selvhostet CI/CD

Maj 22, 2026 codeberg forgejo ci-cd docker self-hosting github-alternative devops automation

Hvorfor køre din egen CI/CD-runner?

Mange har fået øjnene op for Codeberg som et godt alternativ til GitHub. Platformen bygger på Forgejo og drives af en non-profit, så den er både privatlivsvenlig og fællesskabsbaseret. Men som med de fleste non-profit-løsninger er der begrænsninger på den delte runner-infrastruktur.

Løsningen er at hoste sin egen Forgejo-runner. Fordelen er, at runneren opretter en udgående forbindelse til Codeberg. Derfor kan den køre på en VPS, en hjemmeserver eller endda på din bærbare computer uden port forwarding.

Sådan fungerer arkitekturen

En Forgejo-runner er en arbejdsproces, der modtager jobs fra Codeberg og udfører dem. For at beskytte din vært bruger vi Docker-in-Docker (DinD). Det betyder, at runneren starter isolerede containere uden at røre din hosts Docker-daemon.

Opsætning med Docker Compose

Vi bruger en simpel to-container-løsning:

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 første container giver et isoleret Docker-miljø,而 den anden er din Forgejo-runner, der kommunikere med den.

Forbered dit system

Før du starter containers, skal du oprette den rigtige mappenstruktur med korrekte tilladelser. Gå til den mappe, hvor du vil lagre konfigurationen – anbefalingen er /opt/forgejo-runner – og kør:

cd /opt/forgejo-runner
mkdir -p data/.cache
chown -R 1001:1001 data
chmod 775 data/.cache
chmod g+s data/.cache

Next, generate the default configuration file:

sudo sh -c 'docker run --rm data.forgejo.org/forgejo/runner:12 forgejo-runner generate-config > data/runner-config.yml'

Denne konfiguration er godt dokumenteret og klar til at blive customizeret.

Tilslutning til Codeberg

Når du går til Codeberg og navigere til Actions → Runners, kan you click "Create new runner". Du får et navn og en beskrivelse, og Codeberg giver dig en UUID og Token, som du skal skrive down. Dette er de nøgler, der lader runneren logge ind mod Codeberg.

Codeberg viser også et YAML-uddrag, der passer præcist to din konfiguration.

Indstilling af labels og kapacitet

Åbne din runner-config.yml og gør disse to ting:

1. Serverkonfigurationen:

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE ZH-HANS EN