- Changed window size to mobile phone format (400x800) - Removed width condition for ActiveProxyFooter - now always visible - Added run-umbrix.sh launch script with icon copying - Stats cards now display on all screen sizes
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 скачивается по ссылке
|
||
- [ ] Проверка обновлений работает в приложении
|
||
|
||
---
|
||
|
||
**🎉 Готово! Теперь вы можете выкатывать обновления без магазинов!**
|