Files
umbrix/update-server/README_DESKTOP.md

188 lines
6.5 KiB
Markdown
Raw Permalink Normal View History

# 🖥️ Сервер Обновлений 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.