320 lines
11 KiB
Markdown
320 lines
11 KiB
Markdown
|
|
# 🚀 Сервер Обновлений Umbrix
|
|||
|
|
|
|||
|
|
> **⚠️ Внимание:** Этот сервер предназначен **только для Desktop платформ** (Windows, macOS, Linux).
|
|||
|
|
> Для Android используется Google Play Store.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 Что это?
|
|||
|
|
|
|||
|
|
Система автоматических обновлений для настольных версий Umbrix. Пользователи получают уведомления об обновлениях прямо в приложении с автоматической загрузкой и установкой.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 Как это работает?
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌──────────────┐ ┌──────────────────┐ ┌─────────────┐
|
|||
|
|
│ Desktop App │ -------> │ Ваш сервер │ <------- │ Вы загружаете│
|
|||
|
|
│ Windows/Mac/ │ запрос │ (PHP API) │ файлы │ новую версию │
|
|||
|
|
│ Linux │ │ │ │ .exe/.dmg │
|
|||
|
|
└──────────────┘ └──────────────────┘ └─────────────┘
|
|||
|
|
│ │
|
|||
|
|
│ ответ JSON │
|
|||
|
|
│ + скачивание │
|
|||
|
|
│ с прогресс-баром │
|
|||
|
|
└──────────────────────────>│
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Процесс:**
|
|||
|
|
1. **Desktop приложение** проверяет сервер на наличие обновлений
|
|||
|
|
2. **Сервер** возвращает информацию о последней версии
|
|||
|
|
3. **Приложение** скачивает обновление с прогресс-баром
|
|||
|
|
4. **Пользователь** запускает установщик
|
|||
|
|
|
|||
|
|
**Для Android:** Обновления через Google Play Store (автоматически)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📦 Что нужно?
|
|||
|
|
|
|||
|
|
### Минимальные требования:
|
|||
|
|
- ✅ Хостинг с PHP 7.4+ (любой: Timeweb, Beget, VPS)
|
|||
|
|
- ✅ Домен или поддомен (например: `api.umbrix.net`)
|
|||
|
|
- ✅ HTTPS сертификат (бесплатный Let's Encrypt)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🛠️ Установка - Пошагово
|
|||
|
|
|
|||
|
|
### Шаг 1: Подготовка сервера
|
|||
|
|
|
|||
|
|
1. **Создайте папку на сервере:**
|
|||
|
|
```bash
|
|||
|
|
mkdir -p /var/www/updates
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Загрузите файлы из папки `update-server/`:**
|
|||
|
|
- `api.php` - главный скрипт
|
|||
|
|
- `latest.json` - информация о последней версии
|
|||
|
|
- `.htaccess` - настройки Apache
|
|||
|
|
|
|||
|
|
3. **Создайте папку для APK файлов:**
|
|||
|
|
```bash
|
|||
|
|
mkdir -p /var/www/updates/downloads
|
|||
|
|
chmod 755 /var/www/updates/downloads
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Шаг 2: Настройка домена
|
|||
|
|
|
|||
|
|
1. **Создайте поддомен** (в панели хостинга):
|
|||
|
|
- Имя: `api` или `updates`
|
|||
|
|
- Полный адрес: `api.umbrix.net`
|
|||
|
|
- Папка: `/var/www/updates`
|
|||
|
|
|
|||
|
|
2. **Включите HTTPS:**
|
|||
|
|
- В панели хостинга найдите "SSL сертификат"
|
|||
|
|
- Выберите "Let's Encrypt" (бесплатно)
|
|||
|
|
- Нажмите "Установить"
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Шаг 3: Настройка приложения
|
|||
|
|
|
|||
|
|
Откройте файл `lib/core/model/constants.dart` и измените:
|
|||
|
|
|
|||
|
|
```dart
|
|||
|
|
// Замените на адрес вашего сервера
|
|||
|
|
static const customUpdateServerUrl = "https://api.umbrix.net/api/latest";
|
|||
|
|
|
|||
|
|
// Включите собственный сервер обновлений
|
|||
|
|
static const useCustomUpdateServer = true;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Шаг 4: Загрузка новой версии
|
|||
|
|
|
|||
|
|
Когда у вас готова новая версия:
|
|||
|
|
|
|||
|
|
1. **Соберите APK:**
|
|||
|
|
```bash
|
|||
|
|
flutter build apk --release
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Переименуйте файл** (для удобства):
|
|||
|
|
```bash
|
|||
|
|
# Из: build/app/outputs/flutter-apk/app-release.apk
|
|||
|
|
# В: umbrix-2.5.8.apk
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **Загрузите на сервер:**
|
|||
|
|
- Через FTP/SFTP загрузите APK в папку `/var/www/updates/downloads/`
|
|||
|
|
- Или через панель хостинга
|
|||
|
|
|
|||
|
|
4. **Обновите файл `latest.json`:**
|
|||
|
|
```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:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"version": "2.5.8",
|
|||
|
|
"build_number": "258",
|
|||
|
|
...
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Проверьте скачивание APK:
|
|||
|
|
|
|||
|
|
Откройте: `https://api.umbrix.net/downloads/umbrix-2.5.8.apk`
|
|||
|
|
|
|||
|
|
Должно начаться скачивание файла.
|
|||
|
|
|
|||
|
|
### 3. Проверьте в приложении:
|
|||
|
|
|
|||
|
|
1. Откройте приложение
|
|||
|
|
2. Зайдите в **Настройки → О программе**
|
|||
|
|
3. Нажмите **"Проверить обновления"**
|
|||
|
|
4. Должно появиться окно с новой версией (если она новее текущей)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 Структура файлов на сервере
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
/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** - проверка формата данных
|
|||
|
|
✅ **Логирование** - все запросы записываются
|
|||
|
|
|
|||
|
|
### Рекомендации:
|
|||
|
|
|
|||
|
|
1. **Используйте HTTPS** (обязательно!)
|
|||
|
|
2. **Регулярно обновляйте** PHP на сервере
|
|||
|
|
3. **Делайте бэкапы** файлов и APK
|
|||
|
|
4. **Проверяйте логи** на подозрительную активность
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎨 Дополнительные возможности
|
|||
|
|
|
|||
|
|
### 1. Принудительное обновление
|
|||
|
|
|
|||
|
|
Если нужно **заставить** пользователей обновиться:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"version": "2.6.0",
|
|||
|
|
"force_update": true,
|
|||
|
|
"min_required_version": "2.5.0"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Приложение не запустится на версиях ниже 2.5.0.
|
|||
|
|
|
|||
|
|
### 2. Бета-версии
|
|||
|
|
|
|||
|
|
Для тестировщиков:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"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`:
|
|||
|
|
- Сколько пользователей проверяют обновления
|
|||
|
|
- Какие версии используют
|
|||
|
|
- Откуда приходят запросы
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ❓ Частые проблемы
|
|||
|
|
|
|||
|
|
### Проблема: "Обновления не приходят"
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
1. Проверьте, что `useCustomUpdateServer = true` в `constants.dart`
|
|||
|
|
2. Проверьте, что URL правильный (с `https://`)
|
|||
|
|
3. Проверьте, что `version` в `latest.json` больше текущей
|
|||
|
|
4. Пересоберите приложение после изменения констант
|
|||
|
|
|
|||
|
|
### Проблема: "Ошибка при скачивании APK"
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
1. Проверьте права на папку: `chmod 755 downloads`
|
|||
|
|
2. Проверьте, что файл существует
|
|||
|
|
3. Проверьте, что URL в `download_url` правильный
|
|||
|
|
|
|||
|
|
### Проблема: "API возвращает ошибку 500"
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
1. Проверьте PHP логи на сервере
|
|||
|
|
2. Убедитесь, что PHP версии 7.4+
|
|||
|
|
3. Проверьте права на файл `latest.json`: `chmod 644 latest.json`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📞 Поддержка
|
|||
|
|
|
|||
|
|
Если что-то не работает:
|
|||
|
|
|
|||
|
|
1. Проверьте логи: `/var/www/updates/logs/access.log`
|
|||
|
|
2. Проверьте PHP логи на сервере
|
|||
|
|
3. Напишите в поддержку хостинга
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎓 Дополнительная информация
|
|||
|
|
|
|||
|
|
### Полезные команды для сервера:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Посмотреть последние запросы
|
|||
|
|
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:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Проверить 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 скачивается по ссылке
|
|||
|
|
- [ ] Проверка обновлений работает в приложении
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**🎉 Готово! Теперь вы можете выкатывать обновления без магазинов!**
|