Docker 6. Собственный GIT-сервис - Гид по быстрому запуску Gitea на вашем сервере!
В этом посте мы запустим в Docker свой собственный GIT-сервер на основе Gitea.
Все статьи
- 04 Июль 2024 Docker 8. Разворачивание Django-проекта в Docker compose Комментарии к посту
- 30 Май 2024 Docker ушёл из РФ! Как это исправить? Комментарии к посту
- 23 Май 2024 Docker. Запуск бота-автоответчика по готовому образу Комментарии к посту
- 29 Февраль 2024 Docker 7. Разворачивание Telegram-бота в Docker на VPS Комментарии к посту
- 20 Ноябрь 2023 Docker 6. Собственный GIT-сервис - Гид по быстрому запуску Gitea на вашем сервере! Комментарии к посту
- 26 Сентябрь 2023 Docker 5.2 Почтовый сервер на Docker Mailserver - настройка и запуск Комментарии к посту
- 25 Сентябрь 2023 Docker 5.1 Почтовый сервер на Docker Mailserver - настройка домена Комментарии к посту
- 30 Июль 2023 Docker 4. Взаимодействие с контейнером PostgreSQL Комментарии к посту
- 29 Июль 2023 Docker 3. Контейнер с PostgreSQL Комментарии к посту
- 29 Июль 2023 Docker 2.2 Установка Docker на Linux Комментарии к посту
- 29 Июль 2023 Docker 2.1 Установка Docker Desktop на Windows Комментарии к посту
- 29 Июль 2023 Docker 1. Подготовка Windows Комментарии к посту
Реклама
В процессе командной работы над "Неким проектом" (о начале этой работы можно прочитать в посте "Маленькая предыстория...") мы столкнулись со знакомой многим проблемой - последствиями санкций. Выяснилось, что пользователям из некоторых регионов РФ недоступен 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 на собственном сервере. Если команда небольшая, то и ресурсов он будет потреблять не много, что отлично подойдёт начинающим разработчикам.
Arduinum628
17 мая 2024 г. 13:46
Спасибо большое автору статьи. Очень хорошая статья для новичка в разворачивании подобного сервиса у себя. Я развернул gitea по данному гайду + почитывал документацию самой gitea. Хочу пару моментов добавить лично от себя. 1) Сертификаты ssl помните что они действуют 3 месяца и потом их нужно обновлять. Либо руками либо писать скрипт автоматический. 2) Если будете использовать в связке с github или другим сервисом чтоб как-бы на gitea держать бекап, то есть два варианта зеркало и обычный репозиторий. Из-за того что я люблю контролировать многие вещи руками я просто добавил git remote add gitea_name ssh://git@name_git_url (вставите свои данные) и пушу отдельно в гитхаб и в гитеа двумя командами. Если что-то случиться с гитхаб я просто снесу связь с ним на локальной машине и продолжу работать только с репо gitea. А зеркало умеет автоматически подтягивать изменения, но нужна соответствующая настройка.
Войдите чтобы добавить комментарий.