May 20, 2022

Простая установка собственного Github на базе Gitea

Создание пользователя Git

Gitea, как и многие репозитории исходного кода, использует SSH для доступа к удаленным репозиториям. Это позволяет пользователям контролировать доступ к своему коду, управляя своими ключами SSH внутри самого Gitea. Однако, чтобы пользователи могли получить доступ к хосту через SSH, вам необходимо создать пользователя git на хост-компьютере. Этот шаг выполняется первым, чтобы вы могли получить доступ к идентификатору пользователя и группы.

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

sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

В этой команде вы создаете системного пользователя, который использует bash в качестве своей оболочки, но не имеет пароля для входа. Это позволяет вам sudoзапускать команды от имени этого пользователя, но не позволяет войти в систему под ним. Вы также устанавливаете домашний каталог пользователя в /home/git.

Эта команда выведет некоторую информацию о только что созданном пользователе:

Adding system user `git' (UID 109) ... Adding new group `git' (GID 115) ... Adding new user `git' (UID 109) with group `git' ...
Creating home directory `/home/git' ...

В данных строках мы можем увидеть UID и GID новосозданного аккаунта, запомним их.

Установка и настройка Gitea Docker

Gitea имеет образ, доступный в глобальном репозитории Docker, а это означает, что с помощью Docker Compose вы можете установить и запустить этот образ как службу с небольшими дополнительными усилиями. Сам образ запускает веб-службы Gitea и службы SSH, что позволяет Git получать доступ как из браузера, так и из командной строки.

Чтобы развернуть контейнер Gitea, вы будете использовать Docker Compose, декларативный инструмент для настройки среды.

Для начала создайте каталог для размещения вашего сервиса и войдите в него:

mkdir ~/gitea
cd ~/gitea

После, создадим файл с именем docker-compose.yml, а затем откроем его для редактирования в редакторе nano:

nano docker-compose.yml

Затем вставим содержимое ниже в файл:

version: "3"

networks:
gitea:
external: false

services:
server:
image: gitea/gitea
container_name: gitea
environment:
- USER_UID=UID_С_ШАГА_1
- USER_GID=GID_С_ШАГА_1
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /home/git/.ssh/:/data/git/.ssh
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "127.0.0.1:80:3000"
- "127.0.0.1:2222:22"