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

Author Автор: Роман Чернышов   

Gitea на Ubuntu + Nginx Добрый день, друзья! В этой статье описан процесс установки Gitea на сервер Ubuntu, настройка обратного прокси через Nginx, перенос рабочей директории и подключение двух клиентов на Windows 11 для совместной работы над PHP-проектом. Данное решение я применяю в рамках своей рабочей экосистемы. Статья собрана из заметок и ответов ИИ, публикую ее в рамках заметки – вдруг пригодится.

Часть 1: Установка Gitea на Ubuntu

Мы будем использовать SQLite в качестве базы данных для простоты, а также стандартную структуру директорий с последующим переносом в /home/git/data/.

1.1. Установка зависимостей и создание пользователя

Сначала обновим систему и установим необходимые пакеты, затем создадим системного пользователя git, от имени которого будет работать Gitea.

sudo apt update && sudo apt upgrade -y
sudo apt install -y git wget
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

1.2. Загрузка бинарного файла Gitea

Скачаем актуальную версию Gitea. Проверить последнюю версию можно на странице релизов.

GITEA_VERSION="1.24.7"
wget -O gitea "https://dl.gitea.com/gitea/${GITEA_VERSION}/gitea-${GITEA_VERSION}-linux-amd64"
chmod +x gitea
sudo mv gitea /usr/local/bin/gitea

Если ваш сервер работает на ARM-архитектуре (например, Raspberry Pi), используйте файл linux-arm64 вместо linux-amd64.

1.3. Создание директорий и перенос рабочей директории в /home/git/data/

По умолчанию Gitea использует /var/lib/gitea. Перенесем рабочие данные в /home/git/data, чтобы все файлы, включая базу данных и репозитории, находились в домашней директории пользователя git.

# Создаем необходимые директории
sudo mkdir -p /home/git/data
sudo mkdir -p /home/git/custom
sudo mkdir -p /home/git/log
 
# Устанавливаем права
sudo chown -R git:git /home/git
sudo chmod -R 750 /home/git
 
# Создаем директорию для конфигурации
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea

При первом запуске Gitea мы укажем путь к данным через переменную окружения GITEA_WORK_DIR в systemd-сервисе, либо изменим пути в app.ini после установки. Ниже приведен вариант с явным указанием рабочей директории в сервисе.

1.4. Настройка systemd сервиса

Создадим файл сервиса, который будет запускать Gitea с указанием рабочей директории /home/git (данные будут храниться в /home/git/data).

sudo nano /etc/systemd/system/gitea.service

Вставьте следующее содержимое:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
 
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/home/git
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/home/git
 
[Install]
WantedBy=multi-user.target

Сохраните файл и запустите сервис:

sudo systemctl daemon-reload
sudo systemctl enable --now gitea

1.5. Первоначальная настройка через веб-интерфейс

Откройте в браузере http://IP_вашего_сервера:3000.

  • База данных: Выберите SQLite3. Путь к файлу БД по умолчанию будет /home/git/data/gitea.db (так как рабочая директория — /home/git).
  • Настройки приложения: Убедитесь, что SSH Server Port равен 22 (или вашему порту).
  • Аккаунт администратора: Создайте логин и пароль администратора.
  • Нажмите «Install Gitea».

После установки закройте конфигурационный файл от записи:

sudo chmod 750 /etc/gitea
sudo chmod 640 /etc/gitea/app.ini

Часть 2: Настройка Nginx как обратного прокси (порт 80)

Чтобы получить доступ к Gitea по стандартному порту 80 без указания :3000, настроим Nginx.

2.1. Создание конфигурации сайта

Создайте файл /etc/nginx/sites-available/gitea:

sudo nano /etc/nginx/sites-available/gitea

Вставьте следующую конфигурацию (замените git.example.com на ваш IP-адрес или домен):

server {
    listen 80;
    server_name git.example.com; # Или IP-адрес сервера
 
    location / {
        # Увеличиваем лимит загружаемых файлов, чтобы избежать ошибки 413
        client_max_body_size 512M;
 
        proxy_pass http://localhost:3000;
 
        # Передаем заголовки для корректной работы Gitea
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

2.2. Активация и перезагрузка Nginx

sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
# Удалите дефолтный сайт, если он мешает
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

2.3. Обновление ROOT_URL в Gitea

Отредактируйте файл /etc/gitea/app.ini, найдите секцию [server] и измените ROOT_URL на адрес без порта 3000:

sudo nano /etc/gitea/app.ini

Пример:

[server]
ROOT_URL = http://git.example.com/

Затем перезапустите Gitea:

sudo systemctl restart gitea

Если после настройки прокси пропадут стили или ссылки для клонирования будут неверными, проверьте, что в ROOT_URL указан правильный адрес (с портом 80 по умолчанию или без него).

Часть 3: Подключение двух ПК на Windows 11

Действия выполняются на обоих компьютерах с Windows 11. Убедитесь, что установлен Git for Windows.

3.1. Генерация SSH-ключа

Откройте Git Bash и выполните (для второго ПК используйте другую метку, например windows-pc-2):

ssh-keygen -t ed25519 -C "windows-pc-1"

Нажмите Enter, чтобы сохранить ключ в путь по умолчанию и не устанавливать пароль (или установите по желанию).

3.2. Копирование публичного ключа

cat ~/.ssh/id_ed25519.pub

Скопируйте выведенную строку.

3.3. Добавление ключа в Gitea

В браузере на Windows зайдите в Gitea (http://git.example.com), нажмите на иконку профиля → Settings → SSH / GPG Keys → Add Key. Вставьте скопированный ключ и сохраните.

3.4. Проверка SSH-соединения

В Git Bash выполните (замените IP/домен на ваш):

ssh -T git@git.example.com

Если появится сообщение Hi there, … You’ve successfully authenticated, значит всё настроено верно. При первом подключении введите yes, если появится запрос о fingerprint.

3.5. Создание репозитория и первый коммит (ПК 1)

В веб-интерфейсе Gitea нажмите + → New Repository. Назовите его, например, my-php-project. Не ставьте галочку «Initialize Repository», чтобы избежать конфликтов.

На первом ПК откройте Git Bash, перейдите в папку проекта (или создайте тестовую) и выполните:

cd /c/Users/ВашеИмя/Projects/my-php-project
git init
git config user.name "Ваше Имя"
git config user.email "your@email.com"
 
# Создаем тестовый файл
echo "<?php echo 'Hello Gitea'; ?>" > index.php
 
git add .
git commit -m "Первый коммит с ПК 1"
git branch -M main
git remote add origin git@git.example.com:ваш_логин/my-php-project.git
git push -u origin main

Если вы настраивали SSH на нестандартном порту (например, 2222), используйте адрес вида ssh://git@git.example.com:2222/ваш_логин/my-php-project.git.

3.6. Клонирование и работа на ПК 2

На втором ПК выполните:

cd /c/Users/ВашеИмя/Projects/
git clone git@git.example.com:ваш_логин/my-php-project.git
cd my-php-project
 
# Внесем изменение
echo "// Изменение с ПК 2" >> index.php
git add .
git commit -m "Изменение с ПК 2"
git push

Теперь вернитесь на ПК 1 и выполните git pull — вы увидите изменения, сделанные на втором компьютере. Схема работает.

Итог: Вы настроили Gitea на Ubuntu с хранением данных в /home/git/data/, настроили Nginx для доступа по порту 80 и подключили два ПК на Windows 11 через SSH. Теперь можно комфортно работать над PHP-проектом с разных машин, используя Git.

 

Оставить комментарий

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 359₽
Популярные записи
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка