188 lines
6.5 KiB
Markdown
188 lines
6.5 KiB
Markdown
|
|
# 🖥️ Сервер Обновлений Umbrix для Desktop Платформ
|
|||
|
|
|
|||
|
|
## 📋 Что это?
|
|||
|
|
|
|||
|
|
Система автоматических обновлений для **настольных версий** Umbrix (Windows, macOS, Linux).
|
|||
|
|
|
|||
|
|
> **⚠️ Важно:** Для Android используется Google Play Store. Этот сервер только для Desktop!
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 Как это работает?
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌──────────────┐ ┌──────────────────┐ ┌─────────────┐
|
|||
|
|
│ Desktop App │ -------> │ Ваш сервер │ <------- │ Вы загружаете│
|
|||
|
|
│ Windows/Mac/ │ запрос │ (PHP API) │ файлы │ новую версию │
|
|||
|
|
│ Linux │ │ │ │ .exe/.dmg │
|
|||
|
|
└──────────────┘ └──────────────────┘ └─────────────┘
|
|||
|
|
│ │
|
|||
|
|
│ ответ JSON │
|
|||
|
|
│ + скачивание │
|
|||
|
|
│ с прогресс-баром │
|
|||
|
|
└──────────────────────────>│
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Процесс:**
|
|||
|
|
1. **Desktop приложение** проверяет сервер на наличие обновлений
|
|||
|
|
2. **Сервер** возвращает информацию о последней версии
|
|||
|
|
3. **Приложение** скачивает обновление с прогресс-баром
|
|||
|
|
4. **Пользователь** запускает установщик
|
|||
|
|
|
|||
|
|
**Для Android:** Обновления через Google Play Store (автоматически)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📦 Требования
|
|||
|
|
|
|||
|
|
- **PHP 7.4+** с веб-сервером (Apache/Nginx) или встроенный сервер PHP
|
|||
|
|
- Доступ к файловой системе для хранения файлов обновлений
|
|||
|
|
- (Опционально) Docker для production деплоя
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 Быстрый старт
|
|||
|
|
|
|||
|
|
### 1. Локальный запуск (для разработки)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd update-server
|
|||
|
|
php -S localhost:8000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Откройте: http://localhost:8000/admin/
|
|||
|
|
|
|||
|
|
### 2. Загрузка файла обновления
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Windows
|
|||
|
|
cp umbrix-1.7.3-setup.exe downloads/windows/
|
|||
|
|
|
|||
|
|
# macOS
|
|||
|
|
cp umbrix-1.7.3.dmg downloads/macos/
|
|||
|
|
|
|||
|
|
# Linux
|
|||
|
|
cp umbrix-1.7.3.AppImage downloads/linux/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Обновление версии через Web-панель
|
|||
|
|
|
|||
|
|
1. Откройте http://localhost:8000/admin/
|
|||
|
|
2. Введите новую версию (например: 1.7.3)
|
|||
|
|
3. Укажите путь к файлу (например: `http://your-server.com/downloads/windows/umbrix-1.7.3.exe`)
|
|||
|
|
4. Нажмите "Сохранить"
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📁 Структура
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
update-server/
|
|||
|
|
├── api.php # REST API для проверки обновлений
|
|||
|
|
├── latest.json # Информация о последней версии
|
|||
|
|
├── admin/
|
|||
|
|
│ ├── index.html # Web-панель управления
|
|||
|
|
│ ├── save.php # Сохранение новой версии
|
|||
|
|
│ ├── history.php # История версий
|
|||
|
|
│ └── restore.php # Откат на предыдущую версию
|
|||
|
|
├── downloads/ # Файлы обновлений
|
|||
|
|
│ ├── windows/ # .exe, .msi
|
|||
|
|
│ ├── macos/ # .dmg, .pkg
|
|||
|
|
│ ├── linux/ # .AppImage, .deb, .rpm
|
|||
|
|
│ └── android/ # (только для тестирования)
|
|||
|
|
└── backups/ # Автоматические резервные копии
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔌 API Endpoints
|
|||
|
|
|
|||
|
|
### `GET /api.php` - Проверка обновлений
|
|||
|
|
|
|||
|
|
**Ответ:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"version": "1.7.3",
|
|||
|
|
"build_number": "173",
|
|||
|
|
"is_prerelease": false,
|
|||
|
|
"download_url": "http://server.com/downloads/windows/umbrix-1.7.3.exe",
|
|||
|
|
"release_notes": "Новые возможности...",
|
|||
|
|
"published_at": "2026-01-17T12:00:00.000Z",
|
|||
|
|
"min_required_version": "1.0.0",
|
|||
|
|
"file_size_bytes": 95000000,
|
|||
|
|
"file_checksum_sha256": ""
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🐳 Docker Development
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker-compose up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Сервер будет доступен на http://localhost:8000
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🌐 Production деплой
|
|||
|
|
|
|||
|
|
### Вариант 1: Обычный веб-хостинг
|
|||
|
|
|
|||
|
|
1. Загрузите файлы на сервер
|
|||
|
|
2. Настройте веб-сервер (Apache/Nginx)
|
|||
|
|
3. Установите права доступа:
|
|||
|
|
```bash
|
|||
|
|
chmod 755 update-server/
|
|||
|
|
chmod 644 update-server/*.php
|
|||
|
|
chmod 755 update-server/downloads/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Вариант 2: Docker
|
|||
|
|
|
|||
|
|
См. [DOCKER_STORAGE.md](DOCKER_STORAGE.md) для настройки production окружения.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔐 Безопасность
|
|||
|
|
|
|||
|
|
- ✅ Rate limiting в API (10 запросов в минуту с одного IP)
|
|||
|
|
- ✅ Валидация входных данных
|
|||
|
|
- ✅ Автоматические бэкапы перед изменениями
|
|||
|
|
- ⚠️ **Рекомендуется:** HTTPS для production
|
|||
|
|
- ⚠️ **Рекомендуется:** Базовая HTTP авторизация для /admin/
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📚 Дополнительная документация
|
|||
|
|
|
|||
|
|
- [UPLOAD_FILES.txt](UPLOAD_FILES.txt) - Как загружать файлы обновлений
|
|||
|
|
- [DOCKER_STORAGE.md](DOCKER_STORAGE.md) - Настройка storage для Docker
|
|||
|
|
- [DOCKER_QUICKSTART.md](DOCKER_QUICKSTART.md) - Быстрый запуск с Docker
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🆘 Поддержка
|
|||
|
|
|
|||
|
|
Если приложение не видит обновления:
|
|||
|
|
1. Проверьте доступность API: `curl http://your-server.com/api.php`
|
|||
|
|
2. Убедитесь, что latest.json содержит актуальные данные
|
|||
|
|
3. Проверьте логи: `cat logs/access.log`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚙️ Настройка в приложении
|
|||
|
|
|
|||
|
|
В `lib/core/model/constants.dart`:
|
|||
|
|
|
|||
|
|
```dart
|
|||
|
|
// Включить/выключить custom update server
|
|||
|
|
static const bool useCustomUpdateServer = true;
|
|||
|
|
|
|||
|
|
// URL вашего сервера обновлений (только для Desktop)
|
|||
|
|
static const String customUpdateServerUrl = "https://your-server.com/api.php";
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Примечание:** Для Android эта настройка игнорируется, используется Google Play.
|