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.
- Дисковая подсистема: Это часто недооценённый, но критически важный компонент для производительности Git-сервера.
- HDD: Медленные, не рекомендуются для активной разработки.
- SSD (SATA): Значительно быстрее HDD, подходят для небольших команд.
- NVMe SSD: Самый быстрый вариант. Если ваш хостинг-провайдер, такой как Valebyte.com, предлагает VPS с NVMe дисками, это будет лучшим выбором для Gitea, обеспечивая максимальную скорость операций с репозиториями, особенно при работе с большими файлами или частыми коммитами.
Выбор правильной конфигурации VPS для gitea vps является залогом её стабильной и эффективной работы. Не экономьте на дисковой подсистеме и оперативной памяти, если ожидаете активного использования.
Ищете надёжный сервер для ваших проектов?
VPS от $10/мес и выделенные серверы от $9/мес с NVMe, DDoS-защитой и поддержкой 24/7.
Смотреть предложения →Подготовка VPS для установки Gitea Docker
Прежде чем приступить к установке Gitea, необходимо подготовить ваш VPS. Это включает выбор подходящего тарифа хостинга, обновление операционной системы и установку Docker и Docker Compose. Использование Docker значительно упрощает развертывание Gitea, изолируя её окружение и упрощая управление зависимостями.
Выбор подходящего VPS-тарифа Valebyte.com
Для gitea vps важно выбрать тариф, который соответствует вашим потребностям. Valebyte.com предлагает различные тарифы VPS, которые могут быть оптимальны для Gitea.
| Тариф Valebyte.com | 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.
Ищете сервер, который просто работает?
Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.
Пошаговая установка 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 необходимо бэкапить три основных компонента:
- База данных Gitea: Содержит информацию о пользователях, репозиториях, задачах, комментариях и т.д.
- Данные Gitea: Включают Git-репозитории, SSH-ключи, аватары, вложения и другие файлы, хранящиеся в директории
/data(которая монтируется как./gitea_dataна хосте). - Конфигурационный файл 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: Многие хостинг-провайдеры, включая Valebyte.com, предлагают возможность создания снимков (snapshots) всего VPS или отдельных дисковых томов. Это быстрый способ сделать полную копию состояния сервера, но он может быть ресурсоёмким и не всегда подходит для частых бэкапов.
- Rsync: Для более гранулярного контроля можно использовать rsync для синхронизации папок
gitea_dataиpostgres_dataна удалённый сервер или внешнее хранилище.
Важно: Всегда храните бэкапы вне вашего VPS (например, на S3, Google Drive, другом сервере), чтобы избежать потери данных при выходе из строя основного сервера.
Процесс обновления Gitea и Docker-контейнеров
Регулярные обновления Gitea и Docker-образов важны для получения новых функций, исправлений ошибок и устранения уязвимостей безопасности.
Обновление Gitea:
Поскольку Gitea запущена в Docker, обновление очень простое:
- Создайте бэкап: Всегда делайте полный бэкап перед обновлением.
- Остановите контейнер Gitea:
docker compose stop gitea - Скачайте новый образ Gitea:
docker compose pull giteaЭто загрузит самую свежую версию образа
gitea/gitea:latest. - Запустите контейнер Gitea:
docker compose up -d giteaDocker Compose автоматически создаст новый контейнер с новым образом, используя существующие тома данных.
- Проверьте версию: Зайдите в веб-интерфейс Gitea и проверьте версию внизу страницы.
Обновление Docker-образа PostgreSQL (или другой СУБД):
Обновление базы данных требует большей осторожности, так как могут быть изменения в схеме данных. Всегда читайте документацию Gitea и базы данных перед обновлением.
- Бэкап: Обязательно сделайте полный бэкап Gitea и базы данных.
- Остановите все контейнеры:
docker compose down - Измените
docker-compose.yml: Обновите тег образа PostgreSQL (например, сpostgres:15наpostgres:16). - Скачайте новый образ:
docker compose pull db - Запустите контейнеры:
docker compose up -d - Проверьте: Убедитесь, что 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показывает текущее потребление ресурсов всеми запущенными контейнерами.
Регулярный мониторинг поможет выявить потенциальные проблемы до того, как они станут критическими.
Ищете сервер, который просто работает?
Valebyte VPS — NVMe, поддержка 24/7, развёртывание за 60 секунд.
Какой VPS-конфиг выбрать для gitea vps под реальную нагрузку?
Выбор правильной конфигурации VPS для gitea vps под реальную нагрузку – это баланс между производительностью, стоимостью и масштабируемостью. Недооценка потребностей может привести к медленной работе и недовольству команды, переоценка – к излишним расходам. Ключевые факторы, влияющие на выбор, включают количество пользователей, объем репозиториев, частоту операций Git и использование дополнительных функций (например, CI/CD).
Оценка потребностей команды и проектов
Перед тем как выбрать тариф, ответьте на следующие вопросы:
- Количество активных пользователей: Сколько разработчиков будут одновременно использовать Gitea?
- Количество и размер репозиториев: Сколько репозиториев планируется хостить? Будут ли среди них очень большие репозитории (например, с графикой, видео или бинарными файлами, требующими Git LFS)?
- Частота операций Git: Насколько часто будут происходить пуши, пулы, клонирования?
- Использование CI/CD: Планируете ли вы интегрировать Gitea с системами непрерывной интеграции/доставки (например, Jenkins, Drone CI), которые будут запускаться на том же VPS или на отдельных серверах?
- Ожидаемый рост: Насколько быстро ваша команда или количество проектов будет расти?
Исходя из этих вопросов, можно рекомендовать следующие конфигурации VPS от Valebyte.com для установки Gitea:
| Сценарий использования Gitea | vCPU | RAM | NVMe SSD | Примерная стоимость/мес. (Valebyte.com) | Примечания |
|---|---|---|---|---|---|
| Личный/Тестовый (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 от Valebyte.com с NVMe SSD обеспечит высокую производительность, а правильное планирование конфигурации под реальную нагрузку гарантирует стабильную работу Gitea в долгосрочной перспективе.
Готовы выбрать сервер?
VPS и выделенные серверы в 72+ странах с мгновенной активацией и полным root-доступом.
Начать сейчас →