Как запустить собственный git-сервер?
Git (произносится «гит») — распределённая система управления версиями. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года; координатор — Дзюн Хамано. Среди проектов, использующих Git, — ядро Linux, Swift, Android, Drupal, Cairo, GNU Core Utilities, Mesa, Wine, Chromium, Compiz Fusion, FlightGear, jQuery, PHP, NASM, MediaWiki, DokuWiki, Qt, ряд дистрибутивов Linux. Программа является свободной и выпущена под лицензией GNU GPL версии 2. По умолчанию используется TCP-порт 9418.
Свой git-севрер я использую для 2 целей:
Зеркалирование на собственный сервер своих проектов с github. Это важный пункт для меня, так как есть не маленькая вероятность того, что в 1 прекрасный момент мне могут отказать в доступе к моим проектам, так как я русский.
Хранение версий моих паролей, но об этом я расскажу в следующей статье и она будет про устройство моего менеджера паролей.
docker-compose
Создаем папки для хранения данных:
# Создаем папки для хранения данных
mkdir {gitea,gitea/postgres-db,gitea/data,gitea/config}
# Переходим в gitea и создаем пустой файл docker-compose.yml
cd gitea && touch docker-compose.yml
Редактируем
docker-compose.yml
черезnano docker-compose.yml
и вставляем данные:
services:
db:
image: postgres:16
container_name: gitea_database
restart: always
env_file: ".env"
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=$GITEA_DATABASE
- POSTGRES_DB=gitea
- PGDATA=/var/lib/postgresql/data/pgdata
ports:
- "5432:5432"
volumes:
- ./postgres-db:/var/lib/postgresql/data
git:
image: gitea/gitea:1.20.5-rootless
container_name: gitea
env_file: ".env"
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_DATABASE
- GITEA__server__START_SSH_SERVER=true
- GITEA__server__SSH_PORT=2222
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
Создаем файл для хранения переменных через
touch .env
:
GITEA_DATABASE=password
Запускаем docker:
docker-compose up -d
Переходим по пути
http://<ip>:3000
. Внутренний IP можно посмотреть через:hostname -I
. При желании можно сделать сервис доступным из интернета.
Установка
После перехода на http://<ip>:3000
будет экран с заполненными параметрами для базы данных и сервиса.
Со всем соглашаемся и устанавливаем сервис. Через несколько секунд перед нами будет страница для входа, регистрируем нового пользователя и входим под ним.
Миграция
Для создания миграции с github нам необходим токен для акторизации и его получении описано тут. Добавление миграции выглядит следующим образом:
На этом этапе нам понадобиться github токен, который мы получили выше.
Есть возможность установить периодичность зеркалирования.
В результате видим копию нашего проекта на github:
2FA
Двухфакторную аутентификацию включаем, чтобы наш «надежный» пароль не подобрали и был 2-й фактор для проверки.
Сканируем QRCode Вашим приложением и вводим код в соответствующее поле. Я использую свой менеджер паролей и там существует такая возможность (работы с 2FA).
До этого долгое время использовал GitLab, но там не было функции зеркалирования репозиториев c github.
Ссылки: