# 🚀 Umbrix Update Server - Инструкция ## 📋 Обзор Umbrix использует систему автообновлений через **Sparkle Appcast XML**. Приложение проверяет файл `appcast.xml` на вашем сервере и уведомляет пользователей о новых версиях. ## 🏗️ Структура системы обновлений ### 1. **appcast.xml** - Манифест обновлений Находится: `/home/vodorod/dorod/hiddify-umbrix-v1.7.0/appcast.xml` ```xml Umbrix 2.5.8 🚀 Новые функции... Sat, 18 Jan 2026 06:00:00 +0000 2.5.8 ``` ### 2. **Настройки в коде** Файл: `lib/core/model/constants.dart` ```dart // URL вашего сервера appcast.xml static const appCastUrl = "http://localhost:8000/api/appcast.xml"; // Для публичного домена: // static const appCastUrl = "https://updates.umbrix.net/appcast.xml"; ``` ## 📂 Структура веб-сервера ``` /home/vodorod/update-server/ ├── api/ │ └── appcast.xml # Копия из проекта ├── downloads/ # Файлы обновлений │ ├── umbrix-2.5.8-linux.deb │ ├── umbrix-2.5.8-linux.rpm │ ├── umbrix-2.5.8-linux.AppImage │ └── umbrix-2.5.8-windows.exe └── admin/ # Ваш Update Manager (localhost:8000/admin/) └── index.html ``` ## 🔄 Процесс публикации обновления ### Шаг 1: Собрать новую версию ```bash cd ~/dorod/hiddify-umbrix-v1.7.0 ./build-all-packages.sh ``` ### Шаг 2: Скопировать файлы на сервер ```bash # Создать папку для версии mkdir -p /home/vodorod/update-server/downloads/ # Скопировать пакеты cp dist/2.5.8+258/umbrix-2.5.8+258-linux.deb \ /home/vodorod/update-server/downloads/umbrix-2.5.8-linux.deb cp dist/2.5.8+258/umbrix-2.5.8+258-linux.rpm \ /home/vodorod/update-server/downloads/umbrix-2.5.8-linux.rpm cp dist/2.5.8+258/umbrix-2.5.8+258-linux.AppImage \ /home/vodorod/update-server/downloads/umbrix-2.5.8-linux.AppImage ``` ### Шаг 3: Обновить appcast.xml Раскомментируйте и измените секцию в `appcast.xml`: ```xml Umbrix 2.5.8 🚀 Новые функции: - Улучшена стабильность - Исправлены ошибки Sat, 18 Jan 2026 06:00:00 +0000 2.5.8 2.5.8 2.0.0 ``` ### Шаг 4: Скопировать appcast.xml на сервер ```bash cp appcast.xml /home/vodorod/update-server/api/appcast.xml ``` ## 🌐 Запуск локального сервера ### Вариант 1: Python HTTP сервер (простой) ```bash cd /home/vodorod/update-server python3 -m http.server 8000 ``` Доступ: - Appcast: `http://localhost:8000/api/appcast.xml` - Скачивания: `http://localhost:8000/downloads/` - Admin: `http://localhost:8000/admin/` ### Вариант 2: Nginx (продакшн) ```nginx server { listen 8000; server_name localhost; root /home/vodorod/update-server; location /api/appcast.xml { add_header Content-Type application/xml; add_header Access-Control-Allow-Origin *; } location /downloads/ { autoindex on; } } ``` ## 📱 Про поле "URL для скачивания APK" в веб-интерфейсе **ВАЖНО**: Это поле осталось от оригинального Hiddify (Android приложение). Для **Umbrix Linux десктоп** оно **НЕ используется**. Umbrix для Linux использует: - ✅ **DEB пакеты** (Debian/Ubuntu) - ✅ **RPM пакеты** (Fedora/CentOS) - ✅ **AppImage** (универсальный формат) Поле "APK" в веб-интерфейсе можно: 1. **Игнорировать** (оставить пустым) 2. **Переименовать** в "URL для скачивания DEB/RPM/AppImage" 3. **Удалить** из веб-интерфейса ## 🔐 Безопасность ### Для продакшн (публичный домен): 1. **HTTPS обязателен**: ```dart static const appCastUrl = "https://updates.umbrix.net/appcast.xml"; ``` 2. **Подписывание обновлений** (Sparkle поддерживает): ```bash # Генерация ключей openssl genrsa -out private_key.pem 2048 openssl rsa -in private_key.pem -pubout > public_key.pem # Подпись файла openssl dgst -sha256 -sign private_key.pem \ umbrix-2.5.8-linux.deb > signature.txt ``` 3. **Добавить signature в appcast.xml**: ```xml ``` ## 🧪 Тестирование ### 1. Проверить доступность appcast.xml ```bash curl http://localhost:8000/api/appcast.xml ``` ### 2. Проверить в приложении - Запустить Umbrix - Зайти в Настройки → Проверить обновления - Приложение скачает appcast.xml и покажет уведомление о новой версии ### 3. Логи отладки В коде установлен `_debugUpgrader = true`, логи будут в консоли: ``` [UPGRADER] Checking appcast: http://localhost:8000/api/appcast.xml [UPGRADER] Current version: 1.7.0 [UPGRADER] Latest version: 2.5.8 [UPGRADER] Update available! ``` ## 📊 Мониторинг скачиваний ### Вариант 1: Nginx access.log ```bash tail -f /var/log/nginx/access.log | grep "/downloads/" ``` ### Вариант 2: Python скрипт с логированием ```python from http.server import HTTPServer, SimpleHTTPRequestHandler import datetime class LoggingHandler(SimpleHTTPRequestHandler): def log_message(self, format, *args): print(f"[{datetime.datetime.now()}] {args[0]}") HTTPServer(('', 8000), LoggingHandler).serve_forever() ``` ## 🚀 Миграция на публичный домен Когда будете готовы к продакшну: 1. **Купить домен**: `updates.umbrix.net` 2. **Настроить DNS**: ``` A updates.umbrix.net → 123.45.67.89 ``` 3. **Изменить в коде**: ```dart static const appCastUrl = "https://updates.umbrix.net/appcast.xml"; ``` 4. **Пересобрать и выпустить обновление**: ```bash ./build-all-packages.sh ``` 5. **Все последующие версии** будут проверять новый домен ## ❓ FAQ ### Q: Как часто приложение проверяет обновления? A: Раз в 12 часов (настройка `durationUntilAlertAgain`) ### Q: Можно ли принудительно проверить обновления? A: Да, через меню "Настройки → Проверить обновления" ### Q: Что делать, если обновление не находится? A: Проверьте: 1. Доступен ли `appcast.xml` по URL 2. Версия в `` больше текущей 3. Логи отладки в консоли приложения ### Q: Как откатить обновление? A: Удалите или закомментируйте `` новой версии в `appcast.xml` ## 📝 Пример полного appcast.xml ```xml Umbrix Updates Umbrix VPN автообновления http://localhost:8000 ru Umbrix 2.5.8 🚀 Новые функции: - Улучшена стабильность - Исправлены ошибки - Добавлена поддержка новых протоколов Sat, 18 Jan 2026 06:00:00 +0000 2.5.8 2.5.8 2.0.0 Umbrix 1.7.0 Стабильный релиз Fri, 17 Jan 2026 08:49:07 +0000 1.7.0 1.7.0 ``` ## 🎯 Готово! Теперь система обновлений полностью настроена и готова к использованию!