Files
umbrix/update-server/DOCKER_STORAGE.md
Umbrix Developer 76a374950f feat: mobile-like window size and always-visible stats
- 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
2026-01-17 13:09:20 +03:00

300 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🐳 Хранение APK файлов в Docker контейнере
## 📋 Проблема
При размещении update-server в Docker контейнере, нужно решить где хранить APK файлы (обычно 50-100 MB каждый).
## ✅ Решение: Docker Volume
### Вариант 1: Named Volume (Рекомендуется)
**docker-compose.yml:**
```yaml
version: '3.8'
services:
update-server:
image: php:8.3-cli
container_name: umbrix-update-server
working_dir: /var/www
command: php -S 0.0.0.0:8000
ports:
- "8000:8000"
volumes:
# Код сервера (read-only)
- ./update-server:/var/www:ro
# Файлы обновлений (read-write)
- umbrix-downloads:/var/www/downloads
# Логи (read-write)
- umbrix-logs:/var/www/logs
restart: unless-stopped
volumes:
umbrix-downloads:
driver: local
umbrix-logs:
driver: local
```
**Преимущества:**
- ✅ Файлы сохраняются при пересоздании контейнера
- ✅ Легко делать backup: `docker cp`
- ✅ Данные изолированы от кода
**Как загружать APK:**
```bash
# 1. Соберите APK
flutter build apk --release
# 2. Скопируйте в volume
docker cp build/app/outputs/flutter-apk/app-release.apk \
umbrix-update-server:/var/www/downloads/android/umbrix-1.7.1.apk
# 3. Обновите latest.json через веб-панель
# http://your-server:8000/admin/
```
---
### Вариант 2: Bind Mount (Для разработки)
**docker-compose.yml:**
```yaml
services:
update-server:
volumes:
- ./update-server:/var/www
# Downloads доступны локально
- ./downloads:/var/www/downloads
```
**Преимущества:**
- ✅ Прямой доступ с хоста
- ✅ Удобно для разработки
- ✅ Можно редактировать напрямую
**Недостатки:**
- ⚠️ Нужно следить за правами доступа
- ⚠️ Файлы привязаны к хосту
**Загрузка:**
```bash
# Просто скопируйте файл
cp build/app/outputs/flutter-apk/app-release.apk \
downloads/android/umbrix-1.7.1.apk
```
---
### Вариант 3: Внешнее хранилище (Продакшен)
Для продакшена лучше использовать CDN или объектное хранилище:
**Примеры:**
- 🌐 **CloudFlare R2** (S3-совместимый, бесплатный)
- 🌐 **AWS S3** + CloudFront
- 🌐 **DigitalOcean Spaces**
- 🌐 **Azure Blob Storage**
- 🌐 **Backblaze B2**
**docker-compose.yml с S3:**
```yaml
services:
update-server:
environment:
- STORAGE_TYPE=s3
- S3_BUCKET=umbrix-updates
- S3_REGION=eu-central-1
- AWS_ACCESS_KEY_ID=${AWS_KEY}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET}
```
**latest.json:**
```json
{
"download_url": "https://cdn.umbrix.net/downloads/android/umbrix-1.7.1.apk"
}
```
**Преимущества:**
- ✅ Быстрая доставка (CDN)
- ✅ Неограниченное место
- ✅ Автоматический backup
-Не нагружает ваш сервер
---
## 📊 Сравнение вариантов
| Вариант | Разработка | Продакшен | Сложность | Стоимость |
|---------|-----------|-----------|-----------|-----------|
| Named Volume | ⭐⭐⭐ | ⭐⭐⭐ | Низкая | Бесплатно |
| Bind Mount | ⭐⭐⭐⭐⭐ | ⭐⭐ | Низкая | Бесплатно |
| S3/CDN | ⭐⭐ | ⭐⭐⭐⭐⭐ | Средняя | $5-20/мес |
---
## 🚀 Быстрый старт (Named Volume)
**1. Создайте docker-compose.yml:**
```bash
cd /home/vodorod/dorod/hiddify-umbrix-v1.7.0
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
update-server:
image: php:8.3-cli
container_name: umbrix-update-server
working_dir: /var/www
command: php -S 0.0.0.0:8000
ports:
- "8000:8000"
volumes:
- ./update-server:/var/www:ro
- umbrix-downloads:/var/www/downloads
- umbrix-logs:/var/www/logs
restart: unless-stopped
volumes:
umbrix-downloads:
umbrix-logs:
EOF
```
**2. Запустите:**
```bash
docker-compose up -d
```
**3. Загрузите APK:**
```bash
# Соберите
flutter build apk --release
# Загрузите в контейнер
docker cp build/app/outputs/flutter-apk/app-release.apk \
umbrix-update-server:/var/www/downloads/android/umbrix-1.7.1.apk
# Проверьте
docker exec umbrix-update-server ls -lh /var/www/downloads/android/
```
**4. Обновите latest.json через веб-панель:**
```
http://localhost:8000/admin/
```
---
## 🔒 Защита от конфликта с оригинальным Hiddify
### ✅ Убедитесь что настроено:
**lib/core/model/constants.dart:**
```dart
// Ваш сервер обновлений
static const useCustomUpdateServer = true; // ← ДОЛЖНО БЫТЬ true
// URL вашего сервера
static const customUpdateServerUrl = "https://api.umbrix.net/api.php";
```
**Что проверить:**
```bash
# 1. Проверьте константы
grep "useCustomUpdateServer" lib/core/model/constants.dart
# 2. Должно вывести:
# static const useCustomUpdateServer = true;
```
### ⚠️ Если false - приложение будет проверять GitHub!
**При `useCustomUpdateServer = false`:**
- ❌ Обращается к https://api.github.com/repos/hiddify/hiddify-app/releases
- ❌ Увидит оригинальные обновления Hiddify
- ❌ Предложит скачать оригинальную версию
**При `useCustomUpdateServer = true`:**
- ✅ Обращается к вашему серверу
- ✅ Видит только ваши обновления
- ✅ Полный контроль
---
## 🎯 Рекомендации
### Для локальной разработки:
```bash
# Используйте PHP встроенный сервер
cd update-server && php -S localhost:8000
```
### Для тестирования в Docker:
```bash
# Named Volume
docker-compose up -d
```
### Для продакшена:
```yaml
# docker-compose.yml
services:
update-server:
image: php:8.3-fpm
volumes:
- ./update-server:/var/www
- umbrix-downloads:/var/www/downloads
nginx:
image: nginx:alpine
ports:
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- umbrix-downloads:/var/www/downloads:ro
- ./ssl:/etc/nginx/ssl
```
---
## 📦 Backup файлов обновлений
### Из Named Volume:
```bash
# Backup
docker run --rm \
-v umbrix-downloads:/data \
-v $(pwd):/backup \
alpine tar czf /backup/downloads-backup.tar.gz /data
# Restore
docker run --rm \
-v umbrix-downloads:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/downloads-backup.tar.gz -C /
```
### Из Bind Mount:
```bash
# Просто архивируйте
tar czf downloads-backup.tar.gz downloads/
```
---
## 💡 Итого
**Для вас (Umbrix):**
1. ✅ Используйте **Named Volume** в Docker
2.`useCustomUpdateServer = true` уже установлено
3. ✅ Загружайте APK через `docker cp`
4. ✅ Управляйте через веб-панель http://localhost:8000/admin/
5.**НЕ будет** конфликта с оригинальным Hiddify!
**Версии теперь логичные:**
- Текущая: **1.7.0 dev**
- Доступна: **1.7.1**
- Следующая: **1.7.2**, **1.8.0**, и т.д.