Forgejo – установка и настройка форка проекта Gitea

Git стал де-факто стандартом систем контроля версий – и ведение проекта без него кажется невозможным. Поверх него было создано множество фронтендов, дополняющих git инструментами для коллаборации, ревью кода, создания релизов и запуска пайплайнов. Не всем командам при совместной разработке проектов нужен весь функционал таких гигантов, как Gitlab, однако зачастую появляется требование к хранению кода на своем сервере вместо облачных сервисов. В такой ситуации хорошо подойдет форк проекта Gitea – Forgejo. Форк проекта – это ответвление или копия существующего кода, которую начинают развивать независимо от оригинала. Forgejo – легковесная альтернатива Gitlab и Github, позволяющая управлять проектами на своем сервере, запускать конвейеры сборки и деплоя и проводить код-ревью.

Установка

В данной статье мы рассмотрим процесс установки Forgejo с помощью Docker, а также настройку доступа к репозиториям по SSH в такой конфигурации. 

Установка будет производиться на готовом решении Docker.

Подключитесь к серверу по SSH, после чего создайте директории под файлы конфигурации:

mkdir -p /opt/forgejo/{forgejo,postgres}

Создайте файл compose.yaml со следующим содержимым:

networks:
  forgejo:
    external: false

services:
  server:
    image: codeberg.org/forgejo/forgejo:12
    container_name: forgejo
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - FORGEJO__database__DB_TYPE=postgres
      - FORGEJO__database__HOST=db:5432
      - FORGEJO__database__NAME=forgejo
      - FORGEJO__database__USER=forgejo
      - FORGEJO__database__PASSWD=forgejo
    restart: always
    networks:
      - forgejo
    volumes:
      - ./forgejo:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"
    depends_on:
      - db

  db:
    image: postgres:14
    restart: always
    environment:
      - POSTGRES_USER=forgejo
      - POSTGRES_PASSWORD=forgejo
      - POSTGRES_DB=forgejo
    networks:
      - forgejo
    volumes:
      - ./postgres:/var/lib/postgresql/data

В данной конфигурации веб-интерфейс будет доступен на порту 3000, доступ к репозиториям по SSH будет доступен на порту 222.

(Опционально) Добавление реверс-прокси

При желании вы можете настроить работу Forgejo на собственном домене с сертификатом TLS. В качестве реверс-прокси будет использоваться Caddy, в рамках данной статьи предполагается, что другие сервисы не используют порты 80/443.

В файл compose.yml добавьте следующий блок:

caddy:
    image: caddy
    restart: unless-stopped
    ports:
        - "80:80"
        - "443:443"
    depends_on:
        - forgejo
    volumes:
        - ./caddy:/etc/caddy:ro
    networks:
        - forgejo

В директории /opt/forgejo создайте директорию caddy, в ней создайте файл Caddyfile с содержимым следующего вида:

git.betutorial.ru {
  reverse_proxy forgejo:3000
}

Вместо git.betutorial.ru укажите домен, который будет использоваться для вашего git-сервера. Сертификат TLS будет выпускаться автоматически.

Обратите внимание!
В А-записи домена должен быть указан IP-адрес VPS-сервера.

Завершение установки

Загрузите образы контейнеров командой:

docker compose pull

После чего запустите их, используя команду:

docker compose up -d

Сервис будет доступен по адресу http://ip_сервера:3000 либо по указанному в конфигурации Caddy домену на стандартном порту 443.

Первичная настройка

При первом переходе по адресу откроется страница первичной настройки:

Настройка Forgejo

По умолчанию для сервиса отключается самостоятельная регистрация пользователя, для создания пользователя-администратора раскройте вкладку “Administrator account settings” и укажите данные нового пользователя:

Добавление пользователя Forgejo

Для завершения первичной настройки нажмите “Install Forgejo”. Для смены языка сервиса нажмите на название текущего языка в правом нижнем углу экрана и выберите подходящий вам:

Выбор языка в Forgejo

Создание репозитория

Чтобы создать новый репозиторий в Forgejo, нажмите на кнопку создания и выберите “New repository”:

Новый репозиторий Forgejo

На появившейся странице введите название репозитория, при необходимости – его описание. Если нужно, чтобы репозиторий был приватным, поставьте соответствующую галочку в пункте “Make repository private”.

Настройка репозитория Forgejo

Здесь же можно сразу инициализировать репозиторий, в том числе выбрав шаблон для файла .gitignore и лицензию:

Инициализация репозитория

В продвинутых настройках есть возможность задать набор лейблов для Issue, формат объектов и название главной ветки:

Продвинутые настройки

Для завершения создания нажмите “Create repository”.

Как создать зеркало репозитория с GitHub

Создание зеркала позволяет дублировать репозиторий с/на внешний источник, что может быть полезно в следующих сценариях:

  • Вы мигрировали на Forgejo, но вам всё еще нужно использовать проект в другой системе контроля версий. В таком случае можно просто настроить зеркало с подтягиванием данных в Forgejo – тогда вся история коммитов, тегов и веток будет также доступна в Forgejo.
  • У вас есть старые проекты на источнике, который вы больше не используете, но не хотите удалять – например, используя его в качестве резервной копии. В таком случае можно пушить данные из Forgejo на удаленный сервер, автоматически дублируя изменения, созданные в Forgejo.

Pull-зеркало удаленного репозитория

Обратите внимание!
Pull-зеркало можно создать только для нового репозитория в Forgejo. Сконвертировать уже существующий репозиторий в зеркало такого рода нельзя.

Для создания зеркала выберите “New Migration” в меню “Create” в правом верхнем углу. Выберите подходящий источник:

Pull-зеркало Forgejo

В поле URL введите адрес удаленного репозитория, если репозиторий приватный, укажите в поле “Access token” токен с доступом к репозиторию. Подробнее о создании токена вы можете прочитать в документации GitHub.

В migration options установите галочку напротив “This repository will be a mirror”:

Настройка миграции Forgejo

После чего нажмите “Migrate repository” для запуска миграции.

Создание push-репозитория

Для добавления функционала push-репозитория в существующий репозиторий перейдите в его настройки, в разделе “Mirror settings” укажите URL удаленного репозитория:

push-репозиторий Forgejo

В поле “Authorization” укажите данные для авторизации в репозитории. Для авторизации может использоваться:

  • имя пользователя и пароль
  • токен
  • SSH-ключ

При выборе SSH-авторизации будет сгенерирована пара ключей, публичную часть ключа нужно будет добавить в доверенные в настройках репозитория.

Также можно включить синхронизацию при пуше коммитов и настроить интервал синхронизации либо отключить его. После добавления репозиторий будет добавлен в список, здесь же можно будет скопировать сгенерированный публичный ключ и вручную синхронизировать репозитории:

push-репозиторий синхронизация

Заключение

В данной статье мы рассмотрели процесс установки и первичной настройки форка проекта Gitea – Forgejo.

Также в нашей базе знаний есть отдельная статья о Gitea Actions – встроенном в Gitea инструменте автоматизации CI/CD.

Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками облака Beget – ждем вас в нашем сообществе в Telegram.

0
273