Простая установка собственного 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"