Cat

Docker 6. Собственный GIT-сервис - Гид по быстрому запуску Gitea на вашем сервере!

В этом посте мы запустим в Docker свой собственный GIT-сервер на основе Gitea.

Все статьи

Icon Link

Реклама

Icon Link
Применение Docker proDream 20 Ноябрь 2023 Просмотров: 1429

В процессе командной работы над "Неким проектом" (о начале этой работы можно прочитать в посте "Маленькая предыстория...") мы столкнулись со знакомой многим проблемой - последствиями санкций. Выяснилось, что пользователям из некоторых регионов РФ недоступен GitLab, а GitHub не позволяет работать в приватных репозиториях.

Мы перебрали несколько альтернативных вариантов (о чем вы узнаете в постах Некоего Вестника Сплетен) и в результате решили запустить свой собственный GIT-сервер.

Выбор пал на готовое решение Gitea, отличающееся от аналогов легковесностью, а также доступностью привычного функционала GitHub.

Установка будет производиться на VPS-сервере с Debian 12. Как установить Docker я рассказывал в посте "Docker 2.2 Установка Docker на Linux".

Официальная документация Gitea доступна по ссылке: https://docs.gitea.com/

 

Подготовка Docker-compose файла.

Подключитесь по SSH к вашему серверу и перейдите в рабочую директорию.
Затем выполните следующие команды для создания директорий и yaml-файла:

mkdir -p gitea/{data,config}  
cd gitea  
touch docker-compose.yml

 

Выполним команду nano docker-compose.yml для открытия файла и напишем следующую конфигурацию:
Обратите внимание на отступы и форматирование!

version: '3'

services:
  db:
    image: postgres
    restart: always
    environment:
      - POSTGRES_USER=db_username
      - POSTGRES_PASSWORD=db_password
      - POSTGRES_DB=db_name
      - PGDATA=/var/lib/postgresql/data/pgdata
    ports:
      - "5432:5432"
    volumes:
      - ./postgres-db:/var/lib/postgresql/data

  git:
    image: gitea/gitea:1.20.5-rootless
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=db_name
      - GITEA__database__USER=db_username
      - GITEA__database__PASSWD=db_password
    restart: always
    volumes:
      - ./data:/var/lib/gitea
      - ./config:/etc/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:2222"
    depends_on:
      - db

 

Разберём, что и зачем:

У нас будет два сервиса: db и git.

Первый сервис db - это контейнер с СУБД PostgreSQL.
Второй сервис git - это контейнер с Gitea.

Прописываемые параметры:

  • image: - указывает на то, какой образ из Docker Hub будет использоваться.
  • restart: - указывает на правила перезагрузки сервера в случае сбоя.
  • environment: - указывает на параметры переменной среды. В нашем случае это: имя пользователя, пароль, имя базы данных, указание на расположение файлов.
  • ports: - указывает какие порты открыты в контейнере, <внешний_порт>:<внутренний_порт>.
  • volumes: - указывает на подключённые внутри контейнера директории: <директория_вне_контейнера>:<директория_внутри_контейнера>.
  • depends_on - определяет порядок запуска контейнеров, т.е. контейнер с Gitea запустится после запуска контейнера с БД.

Обратите внимание на порты в сервисе git.
Порт 3000 - это порт веб-интерфейса, его можно изменить на удобный вам.
Порт 2222 - это порт SSH-подключения, его также можно изменить более на удобный.

 

Запуск и первая настройка.

Для запуска используем команду docker compose up -d.
После того, как запустятся контейнеры, открываем браузер и переходим по адресу: http://<ip_сервера>:3000/ или http://<ваш_домен>:3000/, если у вас к серверу прикреплено доменное имя.

Перед нами откроется окно первоначальной конфигурации, разбитое на три блока.

 

Настройки базы данных.

В этом блоке указываем данные для подключения к БД, но если вы прописали их в docker-compose-файле, пропускаем этот блок.
Иначе заполняем данными, выбирая удобную для вашего решения СУБД.

 

Основные настройки.

В этом блоке указываем:

  • Название сайта.
  • Настройки путей внутри контейнера.
  • Домен или ip-адрес сервера.
  • Порты.
  • URL-адрес для доступа к веб-интерфейсу.
  • Если необходимо, включаем оповещение об обновлениях Gitea.

 

Расширенные настройки.

Этот блок состоит из трёх подблоков:

  • Настройки электронной почты - в этом блоке указываем настройки почтового сервера. Как запускать свой почтовый сервер я писал в постах "Docker 5.1 Почтовый сервер на Docker Mailserver" и "Docker 5.2 Почтовый сервер на Docker Mailserver"
  • Сервер и настройки внешних служб - в этом блоке настраиваются различные службы, такие как регистрация пользователей, OpenID и др.
  • Настройки учётной записи администратора - в этом блоке указываются данные администратора.

 

Environment Configuration.

В этом блоке есть две кнопки установить. Честно, не совсем очевидно зачем их две. Я использовал первую кнопку, после нажатия на которую будет выполнена установка.

 

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

После установки откроется главная страница. Кликаем по кнопке "Вход" в правой части экрана.
Вводим учётные данные администратора и авторизуемся.

 

Попадаем на страницу, где будут отображаться ваши активности, как на GitHub.

 

Для создания нового репозитория, в правом верхнем углу нажимаем на + и выбираем "Новый репозиторий".

Откроется страница, знакомая всем пользователям GitHub. 
Заполняем необходимые поля и нажимаем "Создать репозиторий".

После чего, если вы решили не создавать README-файл, откроется страница с инструкцией по подключению локального репозитория, а если создали, откроется страница репозитория. Всё как на GitHub.

 

Дополнительно: Поддержка HTTPS.

По умолчанию веб-интерфейс и всё взаимодействие происходит по HTTP-протоколу.
Для включения поддержки HTTPS-протокола необходимо выполнить дополнительные действия.

Переходим в директорию config и открываем файл app.ini командой nano app.ini.

В блоке server добавляем следующие строки:

PROTOCOL = https
CERT_FILE = cert.pem
KEY_FILE = key.pem

Где CERT_FILE и KEY_FILE, указываем названия ваших файлов SSL-сертификата.
Также в параметре ROOT_URL заменяем http на https.

Сохраняем.
После чего возвращаемся на уровень выше и переходим в директорию data, а затем в custom. В эту директорию помещаем ваши файлы SSL-сертификата.

Перезагружаем контейнер с Gitea, выполнив команду docker restart <имя_контейнера>.

Готово. Теперь веб-интерфейс и всё взаимодействие будет использовать защищённый HTTPS-протокол.

 

Заключение.

Вот так достаточно просто можно развернуть свой аналог GitHub на собственном сервере. Если команда небольшая, то и ресурсов он будет потреблять не много, что отлично подойдёт начинающим разработчикам.

Автор

  • 17 мая 2024 г. 13:46

    Спасибо большое автору статьи. Очень хорошая статья для новичка в разворачивании подобного сервиса у себя. Я развернул gitea по данному гайду + почитывал документацию самой gitea. Хочу пару моментов добавить лично от себя. 1) Сертификаты ssl помните что они действуют 3 месяца и потом их нужно обновлять. Либо руками либо писать скрипт автоматический. 2) Если будете использовать в связке с github или другим сервисом чтоб как-бы на gitea держать бекап, то есть два варианта зеркало и обычный репозиторий. Из-за того что я люблю контролировать многие вещи руками я просто добавил git remote add gitea_name ssh://git@name_git_url (вставите свои данные) и пушу отдельно в гитхаб и в гитеа двумя командами. Если что-то случиться с гитхаб я просто снесу связь с ним на локальной машине и продолжу работать только с репо gitea. А зеркало умеет автоматически подтягивать изменения, но нужна соответствующая настройка.

  • Реклама