Выбор бесплатного локального сервера Git — Gitea — победитель!

Попытаться выбрать хороший сервер Git с открытым исходным кодом

Содержимое страницы

Хотите перенести свои проекты с открытых облачных провайдеров git и рассмотреть возможность локального размещения внутреннего сервера git?

gitea-site

Выбор серверов

Запуск собственного сервера git не должен быть слишком сложным, правда?

Теперь выбираем бесплатный сервер git из очень короткого списка вариантов. Bonobo Gogs vs Gitea vs Gitlab.

Bonobo бесплатен, но работает только под Windows, и у него нет версии для Linux.

Gitlab богат на функции и требует значительных ресурсов, это опыт на руках. Это коммерческий продукт, но имеет бесплатную версию также.

Gogs очень легковесный, я пробовал его, и он работал хорошо, но у него нет реестра контейнеров.

Сравнение в моем мнении выгодно для Gitea.

Оба Gitea и Postgresql в контейнерах Docker

https://docs.gitea.com/next/installation/install-with-docker

cd ~
mkdir gitea
cd gitea

docker-compose.yml:

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/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=gitea
      - POSTGRES_PASSWORD=gitea
      - POSTGRES_DB=gitea
    networks:
      - gitea
    volumes:
      - ./postgres:/var/lib/postgresql/data

затем

docker-compose up -d

перейдите по адресу http://localhost:3000/

для остановки

docker-compose down

объемы останутся

Использование ресурсов

Статистика контейнеров ресурсов

Показывает, что контейнеры используют 260 МБ оперативной памяти и немного процессора.

Статистика изображений Docker

Общий размер образов Docker составляет 583 МБ. 422 МБ из них занимает образ postgres:14. Образ postgres:14-alpine занимает 239 МБ, может также подойти, если ресурсы ограничены.

PS. После миграции 10+ репозиториев в gitea, некоторые ветвления и клонирование контейнера gitea используют сейчас 420 МБ оперативной памяти. Нужно следить за этим.

Синхронизация двух репозиториев

https://docs.gitea.com/next/usage/repo-mirror

Можно выполнять push и pull.

pull

  • Выберите Новая миграция в меню Создать… в правом верхнем углу.
  • Выберите удаленную службу репозитория.
  • Введите URL репозитория.
  • Если репозиторий требует аутентификации, заполните свои данные аутентификации.
  • Поставьте галочку Это репозиторий будет зеркалом.
  • Выберите Мигрировать репозиторий, чтобы сохранить настройки.

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

Можно настроить только pull-зеркалирование для репозиториев, которые еще не существуют на вашем экземпляре. Как только репозиторий создан, вы не сможете больше преобразовать его в pull-зеркало.

Настройка HTTPS

Есть больше в настройках SSL: https://docs.gitea.com/next/administration/https-setup

но мы попробуем это сейчас (взято с сайта gitea):

Использование встроенного сервера

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

gitea cert --host [HOST]

чтобы сгенерировать самоподписанный сертификат.

Если вы используете Apache или nginx на сервере, рекомендуется проверить руководство по обратному прокси.

Чтобы использовать встроенную поддержку HTTPS в Gitea, вы должны изменить файл app.ini:

[server]
PROTOCOL  = https
ROOT_URL  = https://git.example.com:3000/
HTTP_PORT = 3000
CERT_FILE = cert.pem
KEY_FILE  = key.pem

Обратите внимание, что если ваш сертификат подписан третьей стороной (то есть не самоподписанный), то cert.pem должен содержать цепочку сертификатов. Сертификат сервера должен быть первым элементом в cert.pem, за ним следуют промежуточные сертификаты (если есть). Корневой сертификат не требуется, потому что клиент должен уже иметь его, чтобы установить доверительные отношения. Чтобы узнать больше о значениях конфигурации, пожалуйста, посетите Листок подсказок по конфигурации.

Для поля CERT_FILE или KEY_FILE путь к файлу относится к переменной окружения GITEA_CUSTOM, если это относительный путь. Он также может быть абсолютным путем.

Настройка перенаправления HTTP Сервер Gitea может слушать только один порт; чтобы перенаправить HTTP-запросы на порт HTTPS, вам нужно включить службу перенаправления HTTP:

[server]
REDIRECT_OTHER_PORT = true
; Порт, на котором должна слушать служба перенаправления
PORT_TO_REDIRECT = 3080

Если вы используете Docker, убедитесь, что этот порт настроен в вашем файле docker-compose.yml.

Использование обратного прокси

В этой статье: Gitea-ssl я настраиваю Apache как обратный прокси с завершением TLS.

Список дел

Настройка ssh: https://docs.gitea.com/next/installation/install-with-docker

тестирование резервного копирования и восстановления.

Полезные ссылки