Как запустить свой 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?

Codeberg — это отличная альтернатива GitHub. Платформа построена на Forgejo и развивается некоммерческой организацией, которая заботится о приватности и сообществе. Однако у Codeberg, как и у любой некоммерческой платформы, есть ограничения по ресурсам. Общие runner'ы работают, но иногда приходится ждать очереди.

Решение — поднять свой Forgejo runner. При этом runner сам инициирует исходящее соединение к Codeberg, поэтому его можно запустить где угодно: на VPS, домашнем сервере или даже на ноутбуке. Пробрасывать порты не нужно.

Как это работает

Forgejo runner — это процесс, который получает задачи от Codeberg и выполняет их. Чтобы не давать runner'у полный доступ к хосту, мы используем 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, а второй запускает сам runner.

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

Создайте директорию для 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

Далее нужно сгенерировать конфигурацию:

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

Как зарегистрировать runner на Codeberg

Перейдите в настройки аккаунта или организации на Codeberg, затем в раздел Actions → Runners. Нажмите «Create new runner», укажите название и описание.

После этого система выдаст UUID и токен — сохраните их сразу. Без них runner не сможет подключиться. Codeberg также покажет готовый кусок YAML для вставки в конфигурацию.

Настройка labels и capacity

Откройте runner-config.yml и добавьте полученные credentials в раздел server.

Для labels используйте формат: [Workflow Label]:[Execution Method]://[Environment]

Пример:

labels: 
  - 'ubuntu-latest:docker://node:20-bookworm'
  - 'ubuntu-22.04:docker://node:20-bookworm'
  - 'ubuntu-24.04:docker://node:22-bookworm'

Когда workflow использует runs-on: ubuntu-latest, Codeberg найет runner с этим label.

Вы можете увеличить capacity в конфигурации — тогда runner одновременно сможет обрабатывать несколько задач. Начните с 4.

Запуск

После настройки запустите контейнеры:

docker-compose up -d

Проверьте логи:

docker-compose logs -f runner

Если всё прошло успешно, вы увидите, что runner зарегистрирован на Codeberg.

Read in other languages:

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