Создание пользователя 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 в качестве своей оболочки, но не имеет пароля для входа. Это позволяет вам запускать команды от имени этого пользователя, но не позволяет войти в систему под ним. Вы также устанавливаете домашний каталог пользователя в /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, декларативный инструмент для настройки среды.
Установим docker и docker-compose для дальнейшей установки:
sudo apt install docker 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:latest
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:3000:3000"
- "127.0.0.1:2222:22"
В строках
environment:
- USER_UID=UID_С_ШАГА_1
- USER_GID=GID_С_ШАГА_1
Заменяем UID и GID с шага 1.
Рассмотрим главную строку данного файла:
ports:
- "127.0.0.1:3000:3000"
- "127.0.0.1:2222:22"
2ая строка: порт для реверса трафика к интерфейсу Gitea
3ья строка: порт для SSH, в данном случае используется порт 2222, так как стандартный порт 22 уже задействован.
Сохраняем файл комбинацией Ctrl-X, а затем подтверждаем сохранение, введя Y
Настройка Nginx в качестве reverse-proxy
Запуск веб-службы, такой как Gitea, за обратным прокси-сервером является обычной практикой, поскольку современное серверное программное обеспечение, такое как Apache или Nginx, может легче обрабатывать несколько служб на одном компьютере, распределять нагрузку между несколькими серверами и обрабатывать SSL. Кроме того, это позволит вам настроить доменное имя, указывающее на ваш экземпляр Gitea, работающий на стандартных портах HTTP(S).
Поэтому установим nginx:
sudo apt install nginx
А затем, создадим и откроем файл для редактирования по пути /etc/nginx/sites-available/gitea с помощью nano:
sudo nano /etc/nginx/sites-available/gitea
Вставим в файл содержимое ниже:
server {
# Listen for requests on your domain/IP address.
server_name your_domain;
root /var/www/html;
location / {
# Proxy all requests to Gitea running on port 3000
proxy_pass http://localhost:3000;
# Pass on information about the requests to the proxied service using headers
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Важно! Замените your_domain на ip адрес вашего сервера.
После редактирования файла сохраните файл
А затем, "активируем наш сайт":
sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/gitea
А после, перезапустим службу NGINX:
sudo systemctl restart nginx
Настройка брандмауэра
Это действие достаточно простое, поэтому его можно выполнить в несколько команд (в случае если используется брандмауэр ufw):
ufw allow "Nginx Full"
Данная команда автоматически открывает все необходимые порты.
Запуск Gitea
Для удобной работы сервера установим tmux (терминальный менеджер окон):
sudo apt install tmux
Место для шпаргалки по tmux, можно взять с прошлых статей
Создадим новую сессию командой:
tmux new-session
А затем, запустим сам сервер Gitea:
docker-compose up
Дожидаемся строки:
gitea | 2022/05/20 21:12:23 ...s/graceful/server.go:61:NewServer() [I] Starting new Web server: tcp:0.0.0.0:3000 on PID: 17
Эта строка означает, что мы успешно запустили сервер Gitea и успешно можем перейти к
Первоначальная настройка
Откроем страницу: http://IPСервера/
И увидим примерное содержимое:
Для начала, установим главные параметры: Домен сервера, Базовый URL адрес и HTTP порт
В поле домен сервера достаточно вести IP адрес сервера
А в базовом URL ввести ссылку формата: http://IPАдрес/
По желанию можно также настроить учетную запись администратора в соответствующей вкладке.
Пример правильно настроенного Gitea:
После настройки достаточно нажать кнопку "Установить Gitea".
Готово, вы полностью завершили установку Gitea на ваш сервер. Теперь вы можете создавать репозитории и организации, управлять исходным кодом и проектами.