# 🚀 Установка Gitea для системы обновлений Umbrix ## 📋 Подготовка ### 1. Аренда VPS **Минимальные требования:** - RAM: 1GB (рекомендую 2GB для комфорта) - CPU: 1 vCore - SSD: 20GB - OS: Ubuntu 22.04 / Debian 12 **Рекомендуемые провайдеры:** - Hetzner Cloud (от €3.79/мес, 2GB RAM) - DigitalOcean Droplet ($6/мес) - Contabo VPS (от €4.99/мес, 4GB RAM) ### 2. Домены Настройте DNS записи для: ``` git.umbrix.net → IP вашего сервера git-mirror1.umbrix.net → IP сервера (или другой сервер) git-mirror2.umbrix.net → IP сервера (или другой сервер) ``` ### 3. SSL сертификаты (Let's Encrypt) ```bash # Установите certbot sudo apt update && sudo apt install -y certbot # Получите сертификаты для всех доменов sudo certbot certonly --standalone -d git.umbrix.net sudo certbot certonly --standalone -d git-mirror1.umbrix.net sudo certbot certonly --standalone -d git-mirror2.umbrix.net # Скопируйте в папку nginx/ssl/ sudo cp /etc/letsencrypt/live/git.umbrix.net/fullchain.pem nginx/ssl/ sudo cp /etc/letsencrypt/live/git.umbrix.net/privkey.pem nginx/ssl/ # Повторите для mirror1 и mirror2 ``` ## 🐳 Установка Gitea ### 1. Установите Docker ```bash # Удалите старые версии sudo apt remove docker docker-engine docker.io containerd runc # Установите Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # Добавьте пользователя в группу docker sudo usermod -aG docker $USER newgrp docker # Установите Docker Compose sudo apt install -y docker-compose ``` ### 2. Загрузите конфигурацию ```bash # Создайте папку mkdir -p ~/gitea-server cd ~/gitea-server # Скопируйте файлы: # - gitea-docker-compose.yml → docker-compose.yml # - nginx.conf → nginx/nginx.conf # Создайте папки для SSL mkdir -p nginx/ssl gitea/data gitea/postgres ``` ### 3. Настройте пароль БД Отредактируйте `docker-compose.yml`: ```yaml POSTGRES_PASSWORD=ваш_надёжный_пароль_здесь ``` ### 4. Запустите Gitea ```bash docker-compose up -d ``` ### 5. Первоначальная настройка Откройте браузер: `https://git.umbrix.net` **Настройки установки:** - Database Type: `PostgreSQL` - Host: `db:5432` - Username: `gitea` - Password: (ваш пароль из docker-compose.yml) - Database Name: `gitea` - SSH Server Domain: `git.umbrix.net` - Gitea Base URL: `https://git.umbrix.net` - **Отключите регистрацию** (только вы сможете создавать аккаунты) ## 📦 Создание репозитория и релиза ### 1. Создайте репозиторий - Войдите в Gitea - Нажмите "+" → "New Repository" - Название: `umbrix` - Visibility: `Public` (для обновлений) ### 2. Загрузите код (с локальной машины) ```bash cd ~/dorod/hiddify-umbrix-v1.7.0 # Инициализируйте Git (если не инициализирован) git init git add . git commit -m "Initial commit" # Добавьте remote (замените на свой домен) git remote add gitea https://git.umbrix.net/your-username/umbrix.git # Запушьте код git push -u gitea main ``` ### 3. Создайте релиз **Через UI:** 1. Перейдите: Releases → New Release 2. Tag: `v1.7.3` 3. Title: `Umbrix v1.7.3` 4. Описание: (release notes) 5. Прикрепите файлы: - `umbrix-1.7.3-linux-x86_64.deb` - `umbrix-1.7.3-linux-x86_64.rpm` - `Umbrix-1.7.3-linux-x86_64.AppImage` **Через API:** ```bash # Получите Access Token: Настройки → Applications → Generate Token curl -X POST "https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases" \ -H "Authorization: token YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "tag_name": "v1.7.3", "name": "Umbrix v1.7.3", "body": "## Что нового\n- Улучшена стабильность", "draft": false, "prerelease": false }' # Загрузите файлы релиза curl -X POST "https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases/ID/assets" \ -H "Authorization: token YOUR_ACCESS_TOKEN" \ -F "attachment=@dist/umbrix-1.7.3.deb" ``` ## 🔧 Настройка Umbrix для Gitea Отредактируйте `lib/core/model/constants.dart`: ```dart abstract class Constants { static const appName = "Umbrix"; static const githubUrl = "https://git.umbrix.net/your-username/umbrix"; static const githubReleasesApiUrl = "https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases"; static const githubLatestReleaseUrl = "https://git.umbrix.net/your-username/umbrix/releases/latest"; // ... остальное без изменений static const useCustomUpdateServer = false; // Используем Gitea API } ``` **Пересоберите:** ```bash flutter build linux --release ``` ## 🌐 Стратегия зеркал (антиблокировка) ### Вариант 1: DNS Load Balancing Несколько IP для одного домена: ``` git.umbrix.net → 1.2.3.4, 5.6.7.8, 9.10.11.12 ``` ### Вариант 2: Поддомены-зеркала ```dart static const githubReleasesApiUrl = List[ "https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases", "https://git-mirror1.umbrix.net/api/v1/repos/your-username/umbrix/releases", "https://git-mirror2.umbrix.net/api/v1/repos/your-username/umbrix/releases", ]; // В app_update_repository.dart пробуем по очереди: for (final url in Constants.githubReleasesApiUrl) { try { final response = await httpClient.get(url); if (response.statusCode == 200) return response; } catch (e) { continue; // Пробуем следующее зеркало } } ``` ### Вариант 3: Cloudflare + Workers Прокси через Cloudflare Workers (обходит блокировки): ```javascript // worker.js export default { async fetch(request) { const url = new URL(request.url); const targetUrl = "https://git.umbrix.net" + url.pathname; return fetch(targetUrl); } } ``` Домен: `updates.umbrix.workers.dev` ## 📊 Мониторинг ```bash # Логи Gitea docker-compose logs -f gitea # Статус docker-compose ps # Использование ресурсов docker stats ``` ## 🔄 Обновление Gitea ```bash docker-compose pull docker-compose up -d ``` ## 💾 Бэкапы ```bash # Бэкап данных Gitea docker exec -u git gitea gitea dump -c /data/gitea/conf/app.ini # Бэкап БД docker exec gitea-db pg_dump -U gitea gitea > backup.sql ``` ## 🎉 Готово! Теперь у вас: - ✅ Свой GitHub-клон на домене `git.umbrix.net` - ✅ API для проверки обновлений (совместим с GitHub API) - ✅ Зеркала для обхода блокировок - ✅ UI для управления релизами **URL releases API:** ``` https://git.umbrix.net/api/v1/repos/your-username/umbrix/releases ``` Формат ответа идентичен GitHub API!