Gitea на VPS: установка, настройка и обслуживание

calendar_month 9 июня 2026 schedule 23 мин. чтения visibility 2270 просмотров
person
Valebyte Team
Gitea на VPS: установка, настройка и обслуживание
summarize

TL;DR

  • • Gitea — легковесная self-hosted платформа Git на Go с низким потреблением ресурсов.
  • • Установка Gitea на VPS обеспечивает полный контроль над данными и проектами.
  • • Простая установка Gitea (особенно с Docker) и богатая функциональность.
  • • Идеально подходит для проектов с высокими требованиями к конфиденциальности и безопасности.
Gitea на VPS: установка, настройка и обслуживание
play_circle

Смотреть за 90 секунд

Те же шаги на реальном VPS: команды в терминале и веб-интерфейс без монтажных пропусков. Текст ниже — подробная версия с параметрами и вариантами.

YouTube ↗

Gitea на VPS — это легковесная, открытая и самодостаточная платформа для хостинга Git-репозиториев, которую можно эффективно установить, настроить и обслуживать на виртуальном частном сервере (VPS) для полного контроля над вашими проектами и данными.

Что такое Gitea и почему выбирают gitea self-hosted на VPS?

В мире разработки программного обеспечения системы контроля версий, такие как Git, стали неотъемлемой частью рабочего процесса. Они позволяют командам эффективно сотрудничать, отслеживать изменения в коде и управлять версиями проектов. Наиболее известные платформы для хостинга Git-репозиториев – GitHub, GitLab, Bitbucket – предоставляют мощные облачные решения. Однако не всегда эти сервисы отвечают всем требованиям к конфиденциальности, безопасности или гибкости настройки, особенно для корпоративных пользователей или проектов с особыми условиями лицензирования.

Именно здесь на сцену выходит Gitea – открытый, легковесный и самодостаточный сервис для хостинга Git-репозиториев, написанный на языке Go. Он разработан как форк Gogs с целью обеспечения более активной разработки и большей функциональности, при этом сохраняя минимальные системные требования. Выбор gitea self-hosted на собственном VPS предоставляет разработчикам и командам беспрецедентный уровень контроля над их данными, инфраструктурой и рабочими процессами.

Ключевые преимущества Gitea

  • Легковесность и производительность: Gitea написана на Go, что делает её очень быстрой и эффективной. Она потребляет значительно меньше системных ресурсов по сравнению с GitLab, что позволяет запускать её даже на скромных VPS.
  • Простота установки и настройки: Благодаря минимальным зависимостям и единому исполняемому файлу, установка Gitea удивительно проста, особенно с использованием Docker.
  • Полный контроль над данными: Размещая Gitea на своем VPS, вы полностью владеете всеми данными репозиториев, пользовательскими данными и конфигурациями. Это критически важно для проектов с высокими требованиями к безопасности и конфиденциальности.
  • Гибкость и кастомизация: Открытый исходный код позволяет настраивать Gitea под специфические нужды, интегрировать с другими инструментами и адаптировать под уникальные рабочие процессы.
  • Функциональность: Gitea предлагает все основные функции, необходимые для управления проектами: репозитории, отслеживание задач (issues), запросы на слияние (pull requests), вики, миграция репозиториев, интеграция с CI/CD, поддержка LDAP/OAuth и многое другое.
  • Сообщество: Активное и растущее сообщество разработчиков способствует быстрому развитию и поддержке проекта.

Сравнение с GitHub/GitLab и сценарии использования

В отличие от GitHub, который является полностью облачным решением, или GitLab, который предлагает как облачные, так и self-hosted версии (но последняя гораздо более требовательна к ресурсам), Gitea идеально подходит для следующих сценариев:

  • Малые и средние команды: Для стартапов, небольших отделов разработки или фрилансеров, которым нужен мощный, но экономичный инструмент.
  • Образовательные учреждения: Для студентов и преподавателей, которым нужен собственный Git-хостинг без ограничений и высоких затрат.
  • Внутренние корпоративные репозитории: Компании, которым требуется хранить исходный код внутри собственной инфраструктуры для обеспечения безопасности и соответствия регуляторным требованиям.
  • Разработка с ограниченными ресурсами: Проекты, работающие на VPS с небольшим объёмом оперативной памяти и процессора, где GitLab был бы слишком "тяжелым".
  • Эксперименты и личные проекты: Разработчики, желающие иметь свой собственный Git-сервер для личных проектов, экспериментов или обучения.

Размещение Gitea на сервере, особенно на VPS, даёт вам полный контроль над средой, позволяя оптимизировать производительность и безопасность в соответствии с вашими уникальными требованиями. Это делает Gitea привлекательным выбором для тех, кто ценит независимость и эффективность.

Системные требования для установки Gitea на сервере

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

Минимальные и рекомендуемые конфигурации

Для запуска Gitea требуется относительно мало ресурсов, но реальная конфигурация будет зависеть от количества пользователей, репозиториев и интенсивности их использования. Представим общие рекомендации:

Минимальные требования (для 1-5 пользователей, до 10 репозиториев):

  • Процессор (CPU): 1 vCPU (виртуальное ядро) с тактовой частотой от 1 ГГц.
  • Оперативная память (RAM): 512 МБ – 1 ГБ. Если используется СУБД SQLite, 512 МБ может быть достаточно. Для PostgreSQL или MySQL/MariaDB лучше иметь 1 ГБ.
  • Дисковое пространство: 5 ГБ свободного места. Этого хватит для операционной системы, Gitea и нескольких небольших репозиториев.
  • Тип диска: HDD или SSD.

Рекомендуемые требования (для 5-20 пользователей, до 50 репозиториев, активная разработка):

  • Процессор (CPU): 2 vCPU с тактовой частотой от 2 ГГц.
  • Оперативная память (RAM): 2 ГБ – 4 ГБ. Это обеспечит комфортную работу Gitea, базы данных и других системных процессов.
  • Дисковое пространство: 20 ГБ – 50 ГБ свободного места. Запас необходим для роста репозиториев, логов и бэкапов.
  • Тип диска: NVMe SSD. Скорость дисковой подсистемы критически важна для операций Git, особенно при больших репозиториях или частых операциях клонирования/пуша.

Расширенные требования (для более 20 пользователей, более 50 репозиториев, CI/CD):

  • Процессор (CPU): 4 vCPU и более.
  • Оперативная память (RAM): 8 ГБ и более.
  • Дисковое пространство: 100 ГБ и более.
  • Тип диска: NVMe SSD.

Важно помнить, что эти цифры являются ориентировочными. Нагрузка может сильно варьироваться в зависимости от размера репозиториев, частоты операций, использования Git LFS и интеграции с другими сервисами.

Выбор ОС и дисковой подсистемы

  • Операционная система (ОС): Gitea поддерживает широкий спектр операционных систем. Для развертывания на VPS наиболее популярны и рекомендованы дистрибутивы Linux, такие как Ubuntu (LTS версии), Debian, CentOS/Rocky Linux. Они хорошо документированы, имеют активное сообщество и обеспечивают стабильность. Для установки Gitea через Docker эти ОС подходят наилучшим образом.
  • База данных: Gitea может использовать несколько типов баз данных:
    • SQLite3: Идеально подходит для небольших инсталляций и личных проектов. Проста в настройке, не требует отдельного сервера БД, но менее производительна при высокой нагрузке.
    • PostgreSQL: Рекомендуется для средних и крупных инсталляций. Обладает высокой производительностью, надёжностью и широкими возможностями.
    • MySQL/MariaDB: Также хороший выбор для средних и крупных инсталляций, широко распространён и хорошо поддерживается.
    • MS SQL Server: Поддерживается, но реже используется на Linux VPS.
    Для большинства развертываний на VPS, особенно с использованием Docker, SQLite или PostgreSQL являются наиболее удобными вариантами.
  • Дисковая подсистема: Это часто недооценённый, но критически важный компонент для производительности Git-сервера.
    • HDD: Медленные, не рекомендуются для активной разработки.
    • SSD (SATA): Значительно быстрее HDD, подходят для небольших команд.
    • NVMe SSD: Самый быстрый вариант. Если ваш хостинг-провайдер предлагает VPS с NVMe дисками, это будет лучшим выбором для Gitea, обеспечивая максимальную скорость операций с репозиториями, особенно при работе с большим файлами или частыми коммитами.

Выбор правильной конфигурации VPS для gitea vps является залогом её стабильной и эффективной работы. Не экономьте на дисковой подсистеме и оперативной памяти, если ожидаете активного использования.

Подготовка VPS для установки Gitea Docker

Прежде чем приступить к установке Gitea, необходимо подготовить ваш VPS. Это включает выбор подходящего тарифа хостинга, обновление операционной системы и установку Docker и Docker Compose. Использование Docker значительно упрощает развертывание Gitea, изолируя её окружение и упрощая управление зависимостями.

Выбор подходящего VPS-тарифа

Для gitea vps важно выбрать тариф, который соответствует вашим потребностям. Различные тарифы VPS могут быть оптимальны для Gitea.

Тариф VPS vCPU RAM NVMe SSD Примерная стоимость/мес. Рекомендуемое использование Gitea
VPS Start 1 2 GB 20 GB от $5 Личные проекты, малые команды (до 5 чел.)
VPS Pro 2 4 GB 50 GB от $10 Средние команды (5-20 чел.), активная разработка
VPS Business 4 8 GB 100 GB Крупные команды (20+ чел.), с CI/CD, большие репозитории

Для самодостаточного хостинга Gitea на VPS, мы рекомендуем выбирать тарифы с NVMe SSD, так как скорость дисковой подсистемы значительно влияет на производительность операций с Git-репозиториями. Также рассмотрите возможность выбора self-managed VPS, если вы хотите иметь полный контроль над своим сервером и его конфигурацией.

Установка Docker и Docker Compose

После выбора и настройки вашего VPS (например, с Ubuntu 22.04 LTS), первым шагом является обновление системы и установка необходимых инструментов.

1. Обновление системы:

Подключитесь к вашему VPS по SSH и выполните команды для обновления пакетов:

sudo apt update
sudo apt upgrade -y

2. Установка Docker Engine:

Установите Docker, следуя официальной документации. Это гарантирует получение самой свежей и стабильной версии.

# Удаляем старые версии Docker (если есть)
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt remove $pkg; done

# Добавляем репозиторий Docker
sudo apt update
sudo apt install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Устанавливаем Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Добавьте вашего пользователя в группу docker, чтобы выполнять команды Docker без sudo (после этого нужно будет переподключиться к SSH):

sudo usermod -aG docker $USER
newgrp docker

Проверьте, что Docker установлен корректно:

docker run hello-world

Вы должны увидеть приветственное сообщение от Docker.

3. Установка Docker Compose (если не установлен как плагин):

Если вы устанавливали Docker Engine с помощью docker-compose-plugin, то docker compose уже доступен. Если нет, или вы предпочитаете старую версию, установите её вручную:

# Проверяем наличие Docker Compose Plugin
docker compose version

# Если плагин не установлен, устанавливаем Docker Compose standalone
sudo apt update
sudo apt install docker-compose -y

Убедитесь, что Docker Compose установлен:

docker-compose --version

Теперь ваш VPS готов к развертыванию gitea docker.

Пошаговая установка Gitea на VPS с Docker Compose

Использование Docker Compose – это наиболее удобный и рекомендуемый способ установки Gitea на VPS. Он позволяет определить все сервисы (Gitea, база данных) и их конфигурации в одном файле, упрощая управление и масштабирование.

Создание файла docker-compose.yml

Создайте директорию для Gitea и внутри неё файл docker-compose.yml. Например:

mkdir -p /opt/gitea
cd /opt/gitea
nano docker-compose.yml

Вставьте следующее содержимое. Этот пример использует PostgreSQL в качестве базы данных, но вы можете легко заменить его на SQLite или MySQL/MariaDB, изменив соответствующий раздел.

version: "3"

services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    restart: always
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__database__DB_TYPE=postgres
      - GITEA__database__HOST=db:5432
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=your_gitea_db_password # Замените на надёжный пароль
      - GITEA__server__ROOT_URL=https://git.yourdomain.com/ # Замените на ваш домен
      - GITEA__server__SSH_DOMAIN=git.yourdomain.com # Замените на ваш домен
      - GITEA__server__HTTP_PORT=3000
      - GITEA__webhook__ALLOWED_HOSTS=localhost,127.0.0.1
    volumes:
      - ./gitea_data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000" # Порт для HTTP/HTTPS через reverse proxy
      - "2222:22"   # Порт для SSH Git (может быть изменен)
    depends_on:
      - db

  db:
    image: postgres:15
    container_name: gitea_db
    restart: always
    environment:
      - POSTGRES_USER=gitea
      - POSTGRES_PASSWORD=your_gitea_db_password # Замените на тот же надёжный пароль
      - POSTGRES_DB=gitea
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    networks:
      - default

volumes:
  gitea_data:
  postgres_data:

networks:
  default:
    external: false

Важные моменты для настройки docker-compose.yml:

  • USER_UID и USER_GID: Рекомендуется установить их на UID/GID вашего пользователя на хост-системе (обычно 1000), чтобы избежать проблем с правами доступа к файлам в томах.
  • GITEA__database__PASSWD и POSTGRES_PASSWORD: ОБЯЗАТЕЛЬНО замените your_gitea_db_password на сложный, уникальный пароль.
  • GITEA__server__ROOT_URL и GITEA__server__SSH_DOMAIN: Замените git.yourdomain.com на доменное имя или IP-адрес вашего VPS, по которому будет доступен Gitea. Если вы планируете использовать Nginx/Caddy в качестве обратного прокси, то это должен быть домен.
  • Порты: 3000:3000 открывает порт Gitea внутри контейнера на порт 3000 хоста. 2222:22 открывает SSH-порт Gitea на порт 2222 хоста. Вы можете изменить 2222 на любой другой свободный порт, чтобы избежать конфликтов с системным SSH-сервером на порту 22.
  • volumes:
    • ./gitea_data:/data: Сохраняет все данные Gitea (репозитории, конфигурации, аватары) в директории gitea_data на вашем хосте. Это критически важно для сохранения данных при обновлении контейнера.
    • ./postgres_data:/var/lib/postgresql/data: Аналогично, сохраняет данные PostgreSQL.

Запуск и первичная настройка Gitea

После сохранения файла docker-compose.yml, запустите контейнеры:

docker compose up -d

Команда -d запускает контейнеры в фоновом режиме. Вы можете проверить статус запущенных контейнеров:

docker compose ps

Если всё прошло успешно, вы должны увидеть оба контейнера (gitea и gitea_db) в статусе running.

Теперь Gitea должна быть доступна по адресу http://ВАШ_IP_VPS:3000. Откройте этот адрес в браузере.

Веб-интерфейс первичной настройки:

При первом доступе к Gitea вы увидите страницу установки. Большинство полей будут уже заполнены на основе ваших переменных окружения в docker-compose.yml. Проверьте и при необходимости скорректируйте:

  • Настройки базы данных: Должны быть заполнены из переменных окружения (PostgreSQL, хост db:5432, пользователь gitea, имя БД gitea, пароль).
  • Основные настройки Gitea:
    • Путь к репозиториям: /data/git/repositories (внутри контейнера, соответствует ./gitea_data/git/repositories на хосте).
    • Путь к корню Gitea: /data.
    • URL Gitea: https://git.yourdomain.com/ (или http://ВАШ_IP_VPS:3000/, если пока без домена и HTTPS).
    • Домен SSH-сервера: git.yourdomain.com (или IP вашего VPS).
    • Порт SSH-сервера: 2222 (или тот, который вы указали в ports).
  • Настройки администратора: Создайте первого администратора. Это будет ваш основной аккаунт для управления Gitea. Заполните имя пользователя, пароль и адрес электронной почты.

Нажмите "Установить Gitea". После завершения установки вы будете автоматически перенаправлены на страницу входа. Войдите с учётными данными администратора.

Поздравляем! Установка Gitea завершена. Теперь у вас есть работающий Git-сервер на вашем VPS. Следующим шагом будет настройка обратного прокси и HTTPS для безопасного доступа.

Настройка Reverse Proxy и HTTPS для Gitea

Прямой доступ к Gitea по порту 3000 через HTTP не является безопасным и профессиональным решением. Для обеспечения безопасности, использования доменного имени и шифрования трафика необходимо настроить обратный прокси (Reverse Proxy) и HTTPS. В качестве обратного прокси мы рассмотрим Nginx и Caddy, а для HTTPS будем использовать Certbot с Let's Encrypt.

Конфигурация Nginx в качестве обратного прокси

Nginx – это мощный и популярный веб-сервер, который отлично справляется с ролью обратного прокси. Он будет принимать запросы на стандартные порты (80 для HTTP, 443 для HTTPS) и перенаправлять их на Gitea, работающую на порту 3000 внутри Docker-контейнера.

1. Установка Nginx:

sudo apt update
sudo apt install nginx -y

2. Настройка DNS:

Убедитесь, что ваш домен (например, git.yourdomain.com) указывает на IP-адрес вашего VPS с помощью A-записи в настройках вашего DNS-провайдера.

3. Создание конфигурационного файла Nginx для Gitea:

Создайте новый файл конфигурации для вашего домена:

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

Вставьте следующую конфигурацию (пока без HTTPS):

server {
    listen 80;
    server_name git.yourdomain.com; # Замените на ваш домен

    client_max_body_size 50m; # Для загрузки больших файлов

    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 ~ /_next/static/ {
        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;
        expires 1y;
        add_header Cache-Control "public";
    }

    # Для SSH через HTTP/HTTPS (если не используете прямой SSH на 2222)
    location /ssh/ {
        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;
        proxy_buffering off;
        proxy_read_timeout 3600s; # Увеличьте таймаут для SSH-операций
        proxy_send_timeout 3600s;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

Сохраните и закройте файл (Ctrl+X, Y, Enter).

4. Активация конфигурации и перезапуск Nginx:

Создайте символическую ссылку на файл в sites-enabled и проверьте синтаксис Nginx:

sudo ln -s /etc/nginx/sites-available/gitea.conf /etc/nginx/sites-enabled/
sudo nginx -t

Если синтаксис в порядке, перезагрузите Nginx:

sudo systemctl reload nginx

Теперь Gitea должна быть доступна по адресу http://git.yourdomain.com.

Обеспечение HTTPS с помощью Certbot (Let's Encrypt)

Для обеспечения безопасного соединения (HTTPS) мы будем использовать бесплатные SSL/TLS сертификаты от Let's Encrypt через утилиту Certbot.

1. Установка Certbot:

sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

2. Получение и установка SSL-сертификата:

Certbot может автоматически настроить Nginx для использования HTTPS:

sudo certbot --nginx -d git.yourdomain.com # Замените на ваш домен

Следуйте инструкциям Certbot: введите ваш email, согласитесь с условиями и выберите, перенаправлять ли HTTP-трафик на HTTPS (рекомендуется "2: Redirect").

Certbot автоматически обновит ваш файл /etc/nginx/sites-available/gitea.conf, добавив секцию для HTTPS и настройки SSL. После этого Nginx будет перезагружен.

Теперь ваш Gitea доступен по адресу https://git.yourdomain.com с защищённым соединением.

Проверка автоматического продления сертификата:

sudo certbot renew --dry-run

Если команда прошла без ошибок, автоматическое продление работает.

Настройка Caddy как альтернатива

Caddy – это современный веб-сервер с автоматической поддержкой HTTPS (через Let's Encrypt). Он значительно проще в настройке, чем Nginx, так как сам управляет сертификатами.

1. Установка Caddy:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y

2. Конфигурация Caddyfile:

Создайте или отредактируйте файл /etc/caddy/Caddyfile:

sudo nano /etc/caddy/Caddyfile

Удалите стандартное содержимое и добавьте:

git.yourdomain.com { # Замените на ваш домен
    reverse_proxy localhost:3000 {
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    # Для SSH через HTTP/HTTPS (если не используете прямой SSH на 2222)
    # Это упрощенная конфигурация, может потребоваться доработка
    # @ssh {
    #     path /ssh/*
    # }
    # reverse_proxy @ssh localhost:3000 {
    #     header_up Host {host}
    #     header_up X-Real-IP {remote_ip}
    #     header_up X-Forwarded-For {remote_ip}
    #     header_up X-Forwarded-Proto {scheme}
    #     websocket
    # }
}

Сохраните и закройте файл.

3. Проверка и запуск Caddy:

sudo caddy validate
sudo systemctl reload caddy

Caddy автоматически получит SSL-сертификат для вашего домена и начнёт проксировать трафик на Gitea. Это очень удобный способ для обеспечения безопасного доступа к вашим сервисам на VPS.

Обслуживание Gitea: бэкапы, обновления и мониторинг

Установка Gitea на VPS – это только начало. Для обеспечения надёжной и бесперебойной работы необходимо регулярно выполнять обслуживание, включающее резервное копирование, обновления и мониторинг. Эти шаги критически важны для защиты ваших данных и поддержания актуальности системы.

Стратегии резервного копирования данных Gitea

Резервное копирование – это самый важный аспект обслуживания любого сервера. Потеря данных Git-репозиториев может быть катастрофической. Для Gitea необходимо бэкапить три основных компонента:

  1. База данных Gitea: Содержит информацию о пользователях, репозиториях, задачах, комментариях и т.д.
  2. Данные Gitea: Включают Git-репозитории, SSH-ключи, аватары, вложения и другие файлы, хранящиеся в директории /data (которая монтируется как ./gitea_data на хосте).
  3. Конфигурационный файл Gitea: app.ini (находится в ./gitea_data/gitea/conf/app.ini).

Методы резервного копирования:

  • Встроенная утилита Gitea: Gitea поставляется с удобной командой gitea dump, которая создаёт архив со всеми необходимыми данными.
    # Выполните внутри контейнера Gitea
    docker exec -it gitea gitea dump

    Эта команда создаст файл gitea-dump-YYYYMMDDHHMMSS.zip в рабочей директории Gitea (/tmp внутри контейнера, но при использовании Docker Compose с томами, он может быть доступен через монтированный том). Рекомендуется переместить этот файл на хост-систему и затем в безопасное внешнее хранилище.

    Для автоматизации можно создать скрипт на хосте:

    #!/bin/bash
    DATE=$(date +%Y%m%d%H%M%S)
    BACKUP_DIR="/opt/gitea/backups"
    GITEA_DATA_DIR="/opt/gitea/gitea_data"
    DB_DATA_DIR="/opt/gitea/postgres_data" # Или где у вас данные БД
    
    mkdir -p $BACKUP_DIR
    
    echo "Stopping Gitea for consistent backup..."
    docker compose stop gitea
    
    echo "Dumping Gitea data..."
    docker exec gitea gitea dump -c /data/gitea/conf/app.ini -f /tmp/gitea-dump-$DATE.zip
    docker cp gitea:/tmp/gitea-dump-$DATE.zip $BACKUP_DIR/
    
    echo "Dumping PostgreSQL database..."
    docker exec gitea_db pg_dumpall -U gitea > $BACKUP_DIR/gitea_db_dump_$DATE.sql
    
    echo "Copying Gitea data directory..."
    # Можно просто скопировать gitea_data и postgres_data, так как они уже на хосте
    cp -r $GITEA_DATA_DIR $BACKUP_DIR/gitea_data_$DATE
    cp -r $DB_DATA_DIR $BACKUP_DIR/postgres_data_$DATE
    
    echo "Starting Gitea..."
    docker compose start gitea
    
    echo "Cleaning up old backups (e.g., keep last 7 days)..."
    find $BACKUP_DIR -type f -name 'gitea-dump-*.zip' -mtime +7 -delete
    find $BACKUP_DIR -type f -name 'gitea_db_dump_*.sql' -mtime +7 -delete
    find $BACKUP_DIR -type d -name 'gitea_data_*' -mtime +7 -exec rm -rf {} +
    find $BACKUP_DIR -type d -name 'postgres_data_*' -mtime +7 -exec rm -rf {} +
    
    echo "Backup finished: $BACKUP_DIR/gitea-dump-$DATE.zip"

    Этот скрипт стоит добавить в cron для автоматического выполнения. Не забудьте изменить пути и пароли. Важно также бэкапировать базу данных отдельно, так как gitea dump не всегда включает полный дамп БД, особенно для внешних СУБД.

  • Снимки файловой системы/томов VPS: Многие хостинг-провайдеры предлагают возможность создания снимков (snapshots) всего VPS или отдельных дисковых томов. Это быстрый способ сделать полную копию состояния сервера, но он может быть ресурсоёмким и не всегда подходит для частых бэкапов.
  • Rsync: Для более гранулярного контроля можно использовать rsync для синхронизации папок gitea_data и postgres_data на удалённый сервер или внешнее хранилище.

Важно: Всегда храните бэкапы вне вашего VPS (например, на S3, Google Drive, другом сервере), чтобы избежать потери данных при выходе из строя основного сервера.

Процесс обновления Gitea и Docker-контейнеров

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

Обновление Gitea:

Поскольку Gitea запущена в Docker, обновление очень простое:

  1. Создайте бэкап: Всегда делайте полный бэкап перед обновлением.
  2. Остановите контейнер Gitea:
    docker compose stop gitea
  3. Скачайте новый образ Gitea:
    docker compose pull gitea

    Это загрузит самую свежую версию образа gitea/gitea:latest.

  4. Запустите контейнер Gitea:
    docker compose up -d gitea

    Docker Compose автоматически создаст новый контейнер с новым образом, используя существующие тома данных.

  5. Проверьте версию: Зайдите в веб-интерфейс Gitea и проверьте версию внизу страницы.

Обновление Docker-образа PostgreSQL (или другой СУБД):

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

  1. Бэкап: Обязательно сделайте полный бэкап Gitea и базы данных.
  2. Остановите все контейнеры:
    docker compose down
  3. Измените docker-compose.yml: Обновите тег образа PostgreSQL (например, с postgres:15 на postgres:16).
  4. Скачайте новый образ:
    docker compose pull db
  5. Запустите контейнеры:
    docker compose up -d
  6. Проверьте: Убедитесь, что Gitea и база данных работают корректно.

Важно: При обновлении мажорных версий базы данных (например, PostgreSQL 15 до 16), часто требуется миграция данных, а не просто запуск нового контейнера с существующими томами. В таких случаях рекомендуется использовать официальные методы миграции или создавать новый контейнер БД и импортировать в него дамп старой БД.

Мониторинг производительности и логирование

Для стабильной работы gitea на сервере необходим мониторинг.

  • Мониторинг ресурсов VPS: Используйте утилиты htop, glances или top для наблюдения за использованием CPU, RAM и диска на вашем VPS. Если ресурсы постоянно близки к 100%, возможно, потребуется увеличение тарифа.
  • Логи Gitea: Логи Gitea по умолчанию выводятся в стандартный вывод контейнера. Вы можете просмотреть их командой:
    docker compose logs gitea

    Для более удобного просмотра и фильтрации можно использовать опцию -f (follow) или перенаправить логи в файл.

  • Логи Nginx/Caddy: Проверяйте логи вашего обратного прокси (обычно в /var/log/nginx/access.log и error.log для Nginx, или /var/log/caddy/access.log и error.log для Caddy) для выявления проблем с доступом или ошибками.
  • Мониторинг Docker: Команда docker stats показывает текущее потребление ресурсов всеми запущенными контейнерами.

Регулярный мониторинг поможет выявить потенциальные проблемы до того, как они станут критическими.

Какой VPS-конфиг выбрать для gitea vps под реальную нагрузку?

Выбор правильной конфигурации VPS для gitea vps под реальную нагрузку – это баланс между производительностью, стоимостью и масштабируемостью. Недооценка потребностей может привести к медленной работе и недовольству команды, переоценка – к излишним расходам. Ключевые факторы, влияющие на выбор, включают количество пользователей, объем репозиториев, частоту операций Git и использование дополнительных функций (например, CI/CD).

Оценка потребностей команды и проектов

Перед тем как выбрать тариф, ответьте на следующие вопросы:

  1. Количество активных пользователей: Сколько разработчиков будут одновременно использовать Gitea?
  2. Количество и размер репозиториев: Сколько репозиториев планируется хостить? Будут ли среди них очень большие репозитории (например, с графикой, видео или бинарными файлами, требующими Git LFS)?
  3. Частота операций Git: Насколько часто будут происходить пуши, пулы, клонирования?
  4. Использование CI/CD: Планируете ли вы интегрировать Gitea с системами непрерывной интеграции/доставки (например, Jenkins, Drone CI), которые будут запускаться на том же VPS или на отдельных серверах?
  5. Ожидаемый рост: Насколько быстро ваша команда или количество проектов будет расти?

Исходя из этих вопросов, можно рекомендовать следующие конфигурации VPS для установки Gitea:

Сценарий использования Gitea vCPU RAM NVMe SSD Примерная стоимость/мес. Примечания
Личный/Тестовый (1-3 пользователя, до 10 репо, нечастые операции) 1 1-2 GB 20 GB от $5 SQLite БД, без CI/CD. Достаточно для обучения и небольших проектов.
Малая команда (3-10 пользователей, до 30 репо, умеренная активность) 2 2-4 GB 50 GB от $10 PostgreSQL/MariaDB, возможно легкое CI/CD. Хороший баланс цена/производительность.
Средняя команда (10-25 пользователей, до 100 репо, высокая активность, CI/CD) 4 8-16 GB 100-200 GB от $20 PostgreSQL, активное CI/CD. Рекомендуется для профессиональной разработки.
Крупная команда/Enterprise (25+ пользователей, сотни репо, интенсивное CI/CD, Git LFS) 8+ 16-32 GB+ 200 GB+ от $40 (возможно, выделенный сервер) Высокопроизводительная БД, выделенные ресурсы. Рассмотрите выделенные серверы для максимальной производительности и изоляции.

Рекомендации по масштабированию и оптимизации

Даже с правильно выбранным VPS, можно предпринять шаги для оптимизации и подготовки к масштабированию:

  • Используйте NVMe SSD: Для Gitea это, пожалуй, самый важ фактор производительности, особенно при работе с большими репозиториями или частыми операциями Git.
  • Выбирайте KVM VPS: KVM-виртуализация обеспечивает лучшую изоляцию ресурсов и производительность по сравнению с OpenVZ.
  • Оптимизируйте базу данных: Если используете PostgreSQL или MySQL, убедитесь, что они настроены для оптимальной производительности. Проверьте параметры кэширования и буферизации.
  • Разделение сервисов: Для очень больших инсталляций рассмотрите возможность размещения базы данных Gitea на отдельном VPS или управляемом сервисе БД. Это снизит нагрузку на основной сервер Gitea и упростит масштабирование.
  • Мониторинг: Непрерывный мониторинг ресурсов (CPU, RAM, I/O диска) поможет вам заранее обнаружить узкие места и принять решение о необходимости апгрейда.
  • Кэширование: Gitea поддерживает кэширование различных компонентов. Убедитесь, что оно включено и настроено в app.ini.
  • Git LFS: Если вы работаете с большими бинарными файлами, используйте Git LFS (Large File Storage). Gitea имеет встроенную поддержку LFS.

Помните, что gitea на сервере, даже на мощном, требует внимания к конфигурации. Правильный выбор VPS и последующая оптимизация обеспечат бесперебойную работу вашего Git-хостинга. Для тех, кто хочет глубже понять основы серверной инфраструктуры, рекомендуем ознакомиться со статьёй "Что такое сервер и дедик: Полное руководство для начинающих".

Выводы

Gitea на VPS предоставляет мощное, гибкое и экономичное решение для самодостаточного хостинга Git-репозиториев, давая полный контроль над вашими проектами и данными. Следуя пошаговым инструкциям по установке через Docker Compose, настройке безопасного доступа с Nginx/Caddy и HTTPS, а также регулярному обслуживанию, вы сможете создать надёжную платформу для своей команды. Выбор подходящего тарифа VPS с NVMe SSD обеспечит высокую производительность, а правильное планирование конфигурации под реальную нагрузку гарантирует стабильную работу Gitea в долгосрочной перспективе.

Поделиться записью: