Files
umbrix/update-server/GITEA_SETUP.md
Umbrix Developer 95383d09fc
Some checks failed
CI / run (push) Waiting to run
Upload store MSIX to release / upload-store-msix-to-release (push) Has been cancelled
feat: update to v1.7.3 with smart asset detection and auto-install
2026-01-18 20:14:19 +03:00

7.5 KiB
Raw Permalink Blame History

🚀 Установка 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)

# Установите 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

# Удалите старые версии
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. Загрузите конфигурацию

# Создайте папку
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:

POSTGRES_PASSWORD=ваш_надёжный_пароль_здесь

4. Запустите Gitea

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. Загрузите код (с локальной машины)

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:

# Получите 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:

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
}

Пересоберите:

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: Поддомены-зеркала

static const githubReleasesApiUrl = List<String>[
  "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 (обходит блокировки):

// 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

📊 Мониторинг

# Логи Gitea
docker-compose logs -f gitea

# Статус
docker-compose ps

# Использование ресурсов
docker stats

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

docker-compose pull
docker-compose up -d

💾 Бэкапы

# Бэкап данных 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!