Skip to content

Latest commit

 

History

History
131 lines (101 loc) · 7.26 KB

File metadata and controls

131 lines (101 loc) · 7.26 KB

Развёртывание IPTV FastAPI-плеера на Render.com

Внимание! Интерфейс всегда в тёмной теме, полностью адаптивен для мобильных устройств. Нет автовоспроизведения последнего канала при загрузке. Кнопка "Обновить" плейлист даёт визуальную обратную связь (анимация, подсветка изменений). Для вызова списка каналов на мобильных используйте плавающую кнопку меню или кнопку в шапке.

1. Подготовка репозитория

  1. Убедитесь, что в корне проекта есть файлы:

    • main.py (основной код FastAPI)
    • requirements.txt (зависимости)
    • templates/ (шаблоны)
    • static/ (статические файлы)
    • Плейлист загружается с удаленного URL (не требуется local.m3u)
  2. (Рекомендуется) Инициализируйте git-репозиторий и загрузите проект на GitHub, GitLab или Bitbucket:

    git init
    git add .
    git commit -m "init"
    git remote add origin <ваш-репозиторий>
    git push -u origin master

2. Регистрация и вход на Render.com

  1. Перейдите на https://render.com
  2. Зарегистрируйтесь или войдите через GitHub/GitLab/Bitbucket.

3. Создание нового Web Service

  1. Нажмите New +Web Service.

  2. Выберите ваш репозиторий с проектом.

  3. Заполните форму:

    • Name: любое имя (например, iptv-fastapi)
    • Region: ближайший к вашей аудитории
    • Branch: master или main
    • Root Directory: оставьте пустым, если main.py в корне
    • Build Command: оставьте пустым (Render сам установит зависимости из requirements.txt)
    • Start Command:
      gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8080
      (или другой порт, если Render предложит)
    • Instance Type: Free или Starter (по желанию)
  4. Нажмите Create Web Service.

4. Настройка переменных окружения (опционально)

Если нужно изменить URL плейлиста, добавьте переменную окружения PLAYLIST_URL на вкладке Environment.

5. Ожидание деплоя

Render автоматически установит зависимости и запустит приложение. Через 2-5 минут появится публичный URL вида:

https://<your-app-name>.onrender.com

6. Проверка работы

  1. Перейдите по публичному URL.
  2. Должна открыться страница IPTV-плеера.
  3. Если не работает:
    • Проверьте логи на вкладке Logs
    • Убедитесь, что порт в команде запуска совпадает с портом Render (обычно 8080)
    • Проверьте доступ к удаленному URL плейлиста (https://gitlab.com/iptv135435/iptvshared/raw/main/IPTV_SHARED.m3u)
  • Для мобильных устройств предусмотрены крупные кнопки вызова меню каналов.
  • Кнопка "Обновить" всегда показывает анимацию и подсвечивает изменения (количество каналов, дата обновления).
  • Автовоспроизведение канала при загрузке отключено — пользователь сам выбирает канал.
  • Интерфейс всегда в тёмной теме, не зависит от настроек системы.

7. Особенности

  • Удаленный плейлист: приложение загружает плейлист с указанного URL (автоматически обновляется каждые 6 часов)
  • CORS: прокси реализован в /proxy для обхода ограничений.
  • Обновление кода: просто пушьте изменения в репозиторий — Render сам пересоберёт сервис.
  • Ручной деплой: если автоматический деплой не сработал, можно запустить его вручную:
    1. Зайдите в ваш сервис на сайте Render
    2. Перейдите на вкладку Deploys
    3. Нажмите кнопку Manual Deploy
    4. Выберите нужную ветку и подтвердите

8. Новые улучшения в коде

  • Кэширование: добавлено кэширование запросов к плейлистам и потокам (30 секунд по умолчанию)
  • Логирование: все операции логируются в консоль и в файл app.log
  • Обработка ошибок: улучшена обработка ошибок с правильными HTTP-кодами
  • Поддержка DASH: добавлена поддержка DASH-плейлистов (.mpd)
  • Очистка кэша: эндпоинт /clear-cache для очистки кэша (только с localhost)
  • Обновление плейлиста: эндпоинт /refresh-playlist для принудительного обновления плейлиста (только с localhost)
  • Проверка работоспособности: эндпоинт /health для мониторинга

9. Пример requirements.txt

fastapi==0.110.0
uvicorn==0.27.1
jinja2==3.1.3
httpx==0.28.1
python-multipart==0.0.7
gunicorn==21.2.0

10. Пример структуры проекта

/ (корень)
├── main.py
├── requirements.txt
├── app.log
├── templates/
│   └── index.html
├── static/
│   ├── style.css
│   └── js/
│       └── player.js (если нужен)

11. Мониторинг на Render

Render предоставляет базовый мониторинг использования ресурсов. Для более продвинутого мониторинга можно использовать:

  1. Встроенные метрики Render (CPU, память, диск)
  2. Логи приложения (вкладка Logs)
  3. Внешние сервисы мониторинга, подключаемые к эндпоинту /health

Рекомендуется периодически проверять логи на наличие ошибок и производительность системы.


Готово! Ваш IPTV-плеер теперь доступен онлайн с улучшенной производительностью.