Gitea: Установка и настройка на Ubuntu
Добрый день, друзья! В этой статье описан процесс установки 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 — вы увидите изменения, сделанные на втором компьютере. Схема работает.

Автор:






