Собствен Forgejo Runner на Codeberg: Практическо ръководство за CI/CD

Собствен Forgejo Runner на Codeberg: Практическо ръководство за CI/CD

Май 22, 2026 codeberg forgejo ci-cd docker self-hosting github-alternative devops automation

Защо да си хостваш собствен CI/CD runner?

Ако търсиш алтернатива на GitHub, вероятно вече си попадал на Codeberg. Платформата е изградена върху Forgejo и се поддържа от неправителствена организация, която държи на поверителността и общността. Въпреки това, както всяко малко звено без търговска цел, Codeberg разчита на ограничени ресурси за своите споделени runners.

Решението е просто — пусни свой собствен Forgejo runner. Има една голяма практическа преднина: runner-ът прави връзка навън, към Codeberg. Затова работи без проблем на VPS, домашен сървър или дори на лаптоп. Не се налага да отваряш портове.

Как работи всичко

Преди да започнем техническата част, е добре да разберем структурата. Forgejo runner е работник, който чака задачи от Codeberg и ги изпълнява. За да защитим хоста, ще използваме Docker-in-Docker (DinD). Това означава, че runner-ът създава изолирани контейнери, кова без да пипа Docker на основната машина.

Docker Compose конфигурация

Създаваме два контейнера:

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'

Единият контейнер предоставя изолиран Docker среда,而另一个是你的Forgejo runner.

Подготовка на системата

Създайте директория за конфигурацията (препоръчително /opt/forgejo-runner) и настройте правата:

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

Засега не се пуска container-ът, а се генерира само конфигурацията:

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

Регистриране на runner-а в Codeberg

Сега трябва да свържем runner-а с Codeberg. Влизате в настройките на акаунта или организацията, намирате Actions → Runners и създавате нов runner. Тук ще получите UUID и Token, които трябва да записвате веднага — те

Read in other languages:

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