Как разместить Gitea в Homelab: полное руководство

Пошаговое руководство по установке и настройке Gitea в homelab: самохостинговый Git-сервис для контроля версий и совместной разработки.

Не указано
Алексей Кузнецов
Алексей Кузнецов
Системный администратор14 февраля 2026 г.

Введение и подготовка

Gitea — это легковесный сервис для самостоятельного размещения, который включает в себя хостинг Git, систему код-ревью, инструменты коллаборации, реестр пакетов и CI/CD. Написанный на Go, Gitea отличается минимальными системными требованиями и простотой установки.

Проверка системных требований

Минимальные требования: CPU: 1 ядро, RAM: 512 МБ, Диск: 1 ГБ (без учета данных репозиториев), ОС: Linux, macOS, Windows. Рекомендуемые конфигурации: CPU: 2+ ядра, RAM: 2 ГБ, Диск: 50+ ГБ SSD, ОС: Ubuntu 20.04+ / CentOS 8+ / Debian 10+.

# Проверьте системные требования
uname -a
free -h
df -h

Установка Gitea

Выберите один из трех способов установки: через бинарные файлы, Docker или как системная служба.

# Способ 1: Через бинарные файлы
wget -O gitea https://dl.gitea.io/gitea/1.19.0/gitea-1.19.0-linux-amd64
chmod +x gitea
sudo mv gitea /usr/local/bin/

# Способ 2: Через Docker
sudo mkdir -p /var/lib/gitea
sudo chown 1000:1000 /var/lib/gitea
docker run -d --name=gitea \
  -p 3000:3000 -p 222:22 \
  -v /var/lib/gitea:/data \
  --restart=always \
  gitea/gitea:latest

# Способ 3: Как системная служба (после установки бинарного файла)
sudo nano /etc/systemd/system/gitea.service
# Добавьте содержимое из статьи
sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea

Конфигурация Gitea

Настройте файл конфигурации Gitea для базовых параметров, подключения к базе данных и других настроек.

# Создайте файл конфигурации
sudo mkdir -p /etc/gitea
sudo touch /etc/gitea/app.ini
sudo chown git:git /etc/gitea/app.ini

# Базовая конфигурация
sudo nano /etc/gitea/app.ini

# Добавьте содержимое:
[server]
APP_DATA_PATH = /var/lib/gitea
DOMAIN = git.example.com
HTTP_PORT = 3000
ROOT_URL = https://git.example.com/

[database]
DB_TYPE = sqlite3
HOST = 
NAME = /var/lib/gitea/data/gitea.db
USER = 
PASSWD = 

[repository]
ROOT = /var/lib/gitea/repositories

[security]
INSTALL_LOCK = true

Настройка веб-сервера и SSL

Настройте веб-сервер (например, Nginx) для проксирования запросов к Gitea и настройте SSL-сертификат.

# Создайте конфигурационный файл Nginx
sudo nano /etc/nginx/sites-available/gitea

# Добавьте конфигурацию:
server {
    listen 80;
    server_name git.example.com;

    location / {
        proxy_pass http://localhost:3000;
        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;
    }

    location ~ ^/.*\.git/objects/([0-9a-f]+/[0-9a-f]+)$ {
        root /var/lib/gitea/repositories;
    }

    location ~ ^/.*\.git/(HEAD|info/refs|objects/info/alternates|objects/info/http-alternates|objects/info/packs|refs)$ {
        root /var/lib/gitea/repositories;
    }
}

# Активируйте конфигурацию
sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# Настройте SSL
sudo apt update
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d git.example.com

Первоначальная настройка и использование

Зарегистрируйте первого пользователя, создайте репозиторий и настройте базовые параметры.

# Зайдите в веб-интерфейс по адресу https://git.example.com
# Зарегистрируйте первого пользователя
# Создайте первый репозиторий через веб-интерфейс:
# 1. Перейдите в раздел "Repositories"
# 2. Нажмите "New Repository"
# 3. Укажите имя и описание
# 4. Выберите видимость (приватный/публичный)
# 5. Настройте опции (README, .gitignore, лицензия)
# 6. Нажмите "Create Repository"

# Или создайте через командную строку:
git clone https://git.example.com/username/repo.git

Расширенные функции

Используйте систему запросов на слияние (Pull Requests), систему отслеживания задач (Issues), встроенную систему CI/CD и регистрацию пакетов.

# Настройка CI/CD
# Создайте файл .gitea/workflows/main.yml:
name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up Go
      uses: actions/setup-go@v2
      with:
        go-version: 1.19
    - name: Build
      run: go build -v
    - name: Test
      run: go test -v

# Регистрация Docker пакета
docker login git.example.com
docker tag my-image git.example.com/username/my-image:latest
docker push git.example.com/username/my-image:latest

Интеграция с другими инструментами

Настройте интеграцию с Git-клиентами, IDE и веб-крючками для автоматизации процессов.

# Интеграция с Git-клиентами
git clone https://git.example.com/username/repo.git
git remote add origin https://git.example.com/username/repo.git

# Настройка веб-крючков
# В веб-интерфейсе перейдите в репозиторий → Settings → Webhooks
# Нажмите "Add Webhook"
# Укажите URL для отправки уведомлений
# Выберите события (push, pull_request, issues)
# Настройте секретный ключ для безопасности

Обновление и резервное копирование

Регулярно обновляйте Gitea и создавайте резервные копии данных для обеспечения безопасности.

# Обновление Gitea
sudo systemctl stop gitea
wget -O /tmp/gitea https://dl.gitea.io/gitea/1.20.0/gitea-1.20.0-linux-amd64
sudo mv /tmp/gitea /usr/local/bin/gitea
sudo chmod +x /usr/local/bin/gitea
sudo systemctl start gitea

# Создание резервной копии
sudo tar -czf gitea-backup.tar.gz /var/lib/gitea /etc/gitea

# Восстановление
sudo tar -xzf gitea-backup.tar.gz -C /
sudo systemctl restart gitea

Настройка безопасности

Усиление безопасности с помощью сложных паролей, двухфакторной аутентификации, настройки брандмауэра и регулярного обновления.

# Настройка требований к паролям
sudo nano /etc/gitea/app.ini
# Добавьте или измените:
[security]
PASSWORD_COMPLEXITY = true
PASSWORD_LENGTH_MIN = 12

# Настройка брандмауэра
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

# Ограничение доступа к Git-порту
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3000 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3000 -j DROP

# Регулярное обновление системы
sudo apt update && sudo apt upgrade -y

Как самостоятельно разместить Gitea: Git-сервис с чашкой чая!

1. Введение

Что такое Gitea

Gitea — это легковесный сервис для самостоятельного размещения, который включает в себя хостинг Git, систему код-ревью, инструменты коллаборации, реестр пакетов и CI/CD. Написанный на Go, Gitea отличается минимальными системными требованиями и простотой установки.

Преимущества самостоятельного размещения Gitea

  • Полный контроль над данными
  • Отсутствие зависимости от внешних сервисов
  • Возможность интеграции с корпоративными системами
  • Низкие требования к ресурсам
  • Открытый исходный код с активным сообществом

Сравнение с альтернативами

ХарактеристикаGiteaGitLabGitHubGogs
Требования к ресурсамОчень низкиеВысокиеОчень высокиеНизкие
УстановкаПростойСреднийСложныйПростой
CI/CDВстроенныйВстроенныйВстроенныйНет
Пакетный реестрВстроенныйВстроенныйВстроенныйНет
Поддержка DockerДаДаНетДа

2. Требования системы

Минимальные требования

  • CPU: 1 ядро
  • RAM: 512 МБ
  • Диск: 1 ГБ (без учета данных репозиториев)
  • ОС: Linux, macOS, Windows

Рекомендуемые конфигурации

  • CPU: 2+ ядра
  • RAM: 2 ГБ
  • Диск: 50+ ГБ SSD
  • ОС: Ubuntu 20.04+ / CentOS 8+ / Debian 10+

Поддерживаемые операционные системы

  • Linux (x86, ARM, PowerPC)
  • macOS (x86, ARM)
  • Windows
  • FreeBSD
  • OpenBSD

3. Установка Gitea

Способ 1: Установка через бинарные файлы

  1. Скачайте бинарный файл с официального сайта:
wget -O gitea https://dl.gitea.io/gitea/1.19.0/gitea-1.19.0-linux-amd64
  1. Сделайте файл исполняемым:
chmod +x gitea
  1. Переместите бинарный файл в системный путь:
sudo mv gitea /usr/local/bin/
  1. Создайте пользователя для Gitea:
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --home /var/lib/gitea git

Способ 2: Установка через Docker

  1. Установите Docker:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
  1. Создайте директорию для данных:
sudo mkdir -p /var/lib/gitea
sudo chown 1000:1000 /var/lib/gitea
  1. Запустите контейнер:
docker run -d --name=gitea \
  -p 3000:3000 -p 222:22 \
  -v /var/lib/gitea:/data \
  --restart=always \
  gitea/gitea:latest

Способ 3: Установка как системная служба

  1. Создайте файл сервиса:
sudo nano /etc/systemd/system/gitea.service
  1. Добавьте содержимое:
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target

[Service]
# Run as user git
User=git
Group=git

# Start the service
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini

# Setup working directory
WorkingDirectory=/var/lib/gitea
Restart=always

# Security settings
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
NoNewPrivileges=true

# Setup environment
Environment=USER=git
Environment=HOME=/var/lib/gitea

[Install]
WantedBy=multi-user.target
  1. Запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable gitea
sudo systemctl start gitea

4. Конфигурация Gitea

Файл конфигурации

  1. Создайте файл конфигурации:
sudo mkdir -p /etc/gitea
sudo touch /etc/gitea/app.ini
sudo chown git:git /etc/gitea/app.ini
  1. Базовая конфигурация:
[server]
APP_DATA_PATH = /var/lib/gitea
DOMAIN = git.example.com
HTTP_PORT = 3000
ROOT_URL = https://git.example.com/

[database]
DB_TYPE = sqlite3
HOST = 
NAME = /var/lib/gitea/data/gitea.db
USER = 
PASSWD = 

[repository]
ROOT = /var/lib/gitea/repositories

[security]
INSTALL_LOCK = true

Настройка базы данных

Для PostgreSQL:

[database]
DB_TYPE = postgres
HOST = localhost:5432
NAME = gitea
USER = gitea
PASSWD = your_password

Для MySQL:

[database]
DB_TYPE = mysql
HOST = localhost:3306
NAME = gitea
USER = gitea
PASSWD = your_password

Настройка веб-сервера (Nginx)

  1. Создайте конфигурационный файл Nginx:
sudo nano /etc/nginx/sites-available/gitea
  1. Добавьте конфигурацию:
server {
    listen 80;
    server_name git.example.com;

    location / {
        proxy_pass http://localhost:3000;
        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;
    }

    location ~ ^/.*\.git/objects/([0-9a-f]+/[0-9a-f]+)$ {
        root /var/lib/gitea/repositories;
    }

    location ~ ^/.*\.git/(HEAD|info/refs|objects/info/alternates|objects/info/http-alternates|objects/info/packs|refs)$ {
        root /var/lib/gitea/repositories;
    }
}
  1. Активируйте конфигурацию:
sudo ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Настройка SSL

  1. Установите Certbot:
sudo apt update
sudo apt install certbot python3-certbot-nginx
  1. Получите SSL-сертификат:
sudo certbot --nginx -d git.example.com

5. Использование Gitea

Создание первого репозитория

  1. Зарегистрируйтесь или войдите в систему через веб-интерфейс
  2. Перейдите в раздел "Repositories"
  3. Нажмите "New Repository"
  4. Укажите имя и описание
  5. Выберите видимость (приватный/публичный)
  6. Настройте опции (README, .gitignore, лицензия)
  7. Нажмите "Create Repository"

Настройка пользователей и организаций

  1. Для создания организации:

    • Перейдите в "Your Organizations"
    • Нажмите "New Organization"
    • Укажите имя и описание
    • Настройте видимость и доступ
  2. Для управления пользователями:

    • Зайдите в "Administration" → "Users"
    • Для добавления пользователя нажмите "New Account"
    • Заполните форму и назначьте права

Настройка прав доступа

  1. Для репозитория:

    • Перейдите в настройки репозитория
    • Выберите "Collaborators and teams"
    • Добавьте пользователей или команды
    • Назначьте права (Read, Write, Admin)
  2. Для организации:

    • Зайдите в настройки организации
    • Перейдите в "Teams"
    • Создайте команду и назначьте права
    • Добавьте пользователей в команды

Интерфейс Gitea: обзор

  • Dashboard: Главная страница с активностью
  • Repositories: Список репозиториев
  • Organizations: Управление организациями
  • Explore: Публичные репозитории и пользователей
  • Create: Создание репозиториев, организаций, проблем
  • Help: Документация и поддержка

6. Расширенные функции

Система запросов на слияние (Pull Requests)

  1. В репозитории перейдите в "Pull Requests"
  2. Нажмите "New Pull Request"
  3. Выберите исходную и целевую ветки
  4. Добавьте заголовок и описание
  5. Укажите проверочные задания
  6. Нажмите "Create Pull Request"

Система отслеживания задач (Issues)

  1. В репозитории перейдите в "Issues"
  2. Нажмите "New Issue"
  3. Укажите заголовок и описание
  4. Добавьте метки, назначьте ответственного
  5. Создайте задачу или запрос функции

Встроенная система CI/CD

  1. Создайте файл .gitea/workflows/main.yml:
name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up Go
      uses: actions/setup-go@v2
      with:
        go-version: 1.19
    - name: Build
      run: go build -v
    - name: Test
      run: go test -v

Регистрация пакетов

  1. Для Docker:
docker login git.example.com
docker tag my-image git.example.com/username/my-image:latest
docker push git.example.com/username/my-image:latest
  1. Для npm:
npm login --registry=https://git.example.com/api/packages/username/npm/
npm publish --registry=https://git.example.com/api/packages/username/npm/

7. Интеграция с другими инструментами

Интеграция с Git-клиентами

git clone https://git.example.com/username/repo.git
git remote add origin https://git.example.com/username/repo.git

Интеграция с IDE

  1. VS Code:

    • Установите расширение "Git Graph"
    • Настройте Git: git config --global user.name "Your Name"
    • Клонируйте репозиторий через VS Code
  2. IntelliJ IDEA:

    • Установите плагин "Git Integration"
    • Настройте учетные данные в настройках
    • Импортируйте репозиторий через VCS → Get from Version Control

Веб-крючки (Webhooks)

  1. В настройках репозитория перейдите в "Webhooks"
  2. Нажмите "Add Webhook"
  3. Укажите URL для отправки уведомлений
  4. Выберите события (push, pull_request, issues)
  5. Настройте секретный ключ для безопасности

8. Обновление Gitea

Процесс обновления

  1. Сделайте резервную копию данных
  2. Остановите сервис:
sudo systemctl stop gitea
  1. Скачайте новую версию:
wget -O /tmp/gitea https://dl.gitea.io/gitea/1.20.0/gitea-1.20.0-linux-amd64
  1. Замените бинарный файл:
sudo mv /tmp/gitea /usr/local/bin/gitea
sudo chmod +x /usr/local/bin/gitea
  1. Запустите сервис:
sudo systemctl start gitea

Резервное копирование и восстановление

  1. Создайте резервную копию:
sudo tar -czf gitea-backup.tar.gz /var/lib/gitea /etc/gitea
  1. Восстановление:
sudo tar -xzf gitea-backup.tar.gz -C /
sudo systemctl restart gitea

9. Безопасность

Настройка пользователей и паролей

  1. Используйте сложные пароли (минимум 12 символов)
  2. Включите требования к сложности в конфигурации:
[security]
PASSWORD_COMPLEXITY = true
PASSWORD_LENGTH_MIN = 12

Настройка двухфакторной аутентификации

  1. В профилю пользователя перейдите в "Account Settings"
  2. Выберите "Security"
  3. Нажмите "Enable Two-Factor Authentication"
  4. Отсканируйте QR-код в приложении аутентификации
  5. Введите код подтверждения

Защита от атак

  1. Настройте брандмауэр:
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
  1. Ограничите доступ к Git-порту:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3000 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3000 -j DROP
  1. Регулярно обновляйте систему:
sudo apt update && sudo apt upgrade -y

10. Заключение

Итоги

Gitea предоставляет полнофункциональную платформу для разработки с минимальными требованиями к ресурсам. Простота установки и настройки делает ее отличным выбором для небольших и средних команд.

Полезные ресурсы

Сообщество Gitea


Эта инструкция предоставляется как есть. Всегда создавайте резервные копии перед внесением изменений в систему.

Поделиться:TelegramX / TwitterVK