- PowerShell silent installer with UAC elevation - Smart asset detection (x64 priority for .exe) - Cross-platform restart after update - Auto-check updates on launch (5 sec delay) - Multi-layer .ico with 6 sizes (16-256px) - Windows build documentation added
🚀 Сервер Обновлений Umbrix
⚠️ Внимание: Этот сервер предназначен только для Desktop платформ (Windows, macOS, Linux).
Для Android используется Google Play Store.
📋 Что это?
Система автоматических обновлений для настольных версий Umbrix. Пользователи получают уведомления об обновлениях прямо в приложении с автоматической загрузкой и установкой.
🎯 Как это работает?
┌──────────────┐ ┌──────────────────┐ ┌─────────────┐
│ Desktop App │ -------> │ Ваш сервер │ <------- │ Вы загружаете│
│ Windows/Mac/ │ запрос │ (PHP API) │ файлы │ новую версию │
│ Linux │ │ │ │ .exe/.dmg │
└──────────────┘ └──────────────────┘ └─────────────┘
│ │
│ ответ JSON │
│ + скачивание │
│ с прогресс-баром │
└──────────────────────────>│
Процесс:
- Desktop приложение проверяет сервер на наличие обновлений
- Сервер возвращает информацию о последней версии
- Приложение скачивает обновление с прогресс-баром
- Пользователь запускает установщик
Для Android: Обновления через Google Play Store (автоматически)
📦 Что нужно?
Минимальные требования:
- ✅ Хостинг с PHP 7.4+ (любой: Timeweb, Beget, VPS)
- ✅ Домен или поддомен (например:
api.umbrix.net) - ✅ HTTPS сертификат (бесплатный Let's Encrypt)
🛠️ Установка - Пошагово
Шаг 1: Подготовка сервера
-
Создайте папку на сервере:
mkdir -p /var/www/updates -
Загрузите файлы из папки
update-server/:api.php- главный скриптlatest.json- информация о последней версии.htaccess- настройки Apache
-
Создайте папку для APK файлов:
mkdir -p /var/www/updates/downloads chmod 755 /var/www/updates/downloads
Шаг 2: Настройка домена
-
Создайте поддомен (в панели хостинга):
- Имя:
apiилиupdates - Полный адрес:
api.umbrix.net - Папка:
/var/www/updates
- Имя:
-
Включите HTTPS:
- В панели хостинга найдите "SSL сертификат"
- Выберите "Let's Encrypt" (бесплатно)
- Нажмите "Установить"
Шаг 3: Настройка приложения
Откройте файл lib/core/model/constants.dart и измените:
// Замените на адрес вашего сервера
static const customUpdateServerUrl = "https://api.umbrix.net/api/latest";
// Включите собственный сервер обновлений
static const useCustomUpdateServer = true;
Шаг 4: Загрузка новой версии
Когда у вас готова новая версия:
-
Соберите APK:
flutter build apk --release -
Переименуйте файл (для удобства):
# Из: build/app/outputs/flutter-apk/app-release.apk # В: umbrix-2.5.8.apk -
Загрузите на сервер:
- Через FTP/SFTP загрузите APK в папку
/var/www/updates/downloads/ - Или через панель хостинга
- Через FTP/SFTP загрузите APK в папку
-
Обновите файл
latest.json:{ "version": "2.5.8", "build_number": "258", "is_prerelease": false, "download_url": "https://api.umbrix.net/downloads/umbrix-2.5.8.apk", "release_notes": "🎉 Что нового:\n\n- Исправлены ошибки соединения\n- Улучшена стабильность\n- Новые серверы", "published_at": "2026-01-17T12:00:00Z", "min_required_version": "2.5.0" }
🧪 Проверка работы
1. Проверьте API в браузере:
Откройте: https://api.umbrix.net/api/latest
Должны увидеть JSON:
{
"version": "2.5.8",
"build_number": "258",
...
}
2. Проверьте скачивание APK:
Откройте: https://api.umbrix.net/downloads/umbrix-2.5.8.apk
Должно начаться скачивание файла.
3. Проверьте в приложении:
- Откройте приложение
- Зайдите в Настройки → О программе
- Нажмите "Проверить обновления"
- Должно появиться окно с новой версией (если она новее текущей)
📝 Структура файлов на сервере
/var/www/updates/
├── api.php # Главный скрипт API
├── latest.json # Информация о последней версии
├── .htaccess # Настройки Apache (ЧПУ, безопасность)
├── downloads/ # Папка с APK файлами
│ ├── umbrix-2.5.7.apk
│ ├── umbrix-2.5.8.apk
│ └── umbrix-2.6.0-beta.apk
└── logs/ # Логи (автоматически создается)
└── access.log
🔒 Безопасность
Уже реализовано:
✅ CORS защита - только ваше приложение может запрашивать обновления ✅ Rate Limiting - не более 10 запросов в минуту с одного IP ✅ Валидация JSON - проверка формата данных ✅ Логирование - все запросы записываются
Рекомендации:
- Используйте HTTPS (обязательно!)
- Регулярно обновляйте PHP на сервере
- Делайте бэкапы файлов и APK
- Проверяйте логи на подозрительную активность
🎨 Дополнительные возможности
1. Принудительное обновление
Если нужно заставить пользователей обновиться:
{
"version": "2.6.0",
"force_update": true,
"min_required_version": "2.5.0"
}
Приложение не запустится на версиях ниже 2.5.0.
2. Бета-версии
Для тестировщиков:
{
"version": "2.6.0-beta",
"is_prerelease": true,
"download_url": "https://api.umbrix.net/downloads/umbrix-2.6.0-beta.apk"
}
3. Аналитика
Смотрите файл logs/access.log:
- Сколько пользователей проверяют обновления
- Какие версии используют
- Откуда приходят запросы
❓ Частые проблемы
Проблема: "Обновления не приходят"
Решение:
- Проверьте, что
useCustomUpdateServer = trueвconstants.dart - Проверьте, что URL правильный (с
https://) - Проверьте, что
versionвlatest.jsonбольше текущей - Пересоберите приложение после изменения констант
Проблема: "Ошибка при скачивании APK"
Решение:
- Проверьте права на папку:
chmod 755 downloads - Проверьте, что файл существует
- Проверьте, что URL в
download_urlправильный
Проблема: "API возвращает ошибку 500"
Решение:
- Проверьте PHP логи на сервере
- Убедитесь, что PHP версии 7.4+
- Проверьте права на файл
latest.json:chmod 644 latest.json
📞 Поддержка
Если что-то не работает:
- Проверьте логи:
/var/www/updates/logs/access.log - Проверьте PHP логи на сервере
- Напишите в поддержку хостинга
🎓 Дополнительная информация
Полезные команды для сервера:
# Посмотреть последние запросы
tail -f /var/www/updates/logs/access.log
# Проверить размер APK файлов
du -h /var/www/updates/downloads/*
# Очистить старые APK (оставить последние 3)
ls -t /var/www/updates/downloads/*.apk | tail -n +4 | xargs rm
# Проверить права доступа
ls -la /var/www/updates/
Тестирование API через curl:
# Проверить API
curl https://api.umbrix.net/api/latest
# Проверить с бета-версиями
curl "https://api.umbrix.net/api/latest?include_prerelease=true"
# Скачать APK
curl -O https://api.umbrix.net/downloads/umbrix-2.5.8.apk
✅ Чеклист перед запуском
- PHP 7.4+ установлен
- Папка
/var/www/updatesсоздана - Файлы
api.php,latest.json,.htaccessзагружены - Папка
downloads/создана с правами 755 - Домен
api.umbrix.netнастроен - SSL сертификат установлен
- URL в
constants.dartобновлен - Приложение пересобрано
- API отвечает в браузере
- APK скачивается по ссылке
- Проверка обновлений работает в приложении
🎉 Готово! Теперь вы можете выкатывать обновления без магазинов!