Внимание! Интерфейс всегда в тёмной теме, полностью адаптивен для мобильных устройств. Нет автовоспроизведения последнего канала при загрузке. Кнопка "Обновить" плейлист даёт визуальную обратную связь (анимация, подсветка изменений). Для вызова списка каналов на мобильных используйте плавающую кнопку меню или кнопку в шапке.
-
Убедитесь, что в корне проекта есть файлы:
main.py(основной код FastAPI)requirements.txt(зависимости)templates/(шаблоны)static/(статические файлы)- Плейлист загружается с удаленного URL (не требуется local.m3u)
-
(Рекомендуется) Инициализируйте git-репозиторий и загрузите проект на GitHub, GitLab или Bitbucket:
git init git add . git commit -m "init" git remote add origin <ваш-репозиторий> git push -u origin master
- Перейдите на https://render.com
- Зарегистрируйтесь или войдите через GitHub/GitLab/Bitbucket.
-
Нажмите New + → Web Service.
-
Выберите ваш репозиторий с проектом.
-
Заполните форму:
- Name: любое имя (например,
iptv-fastapi) - Region: ближайший к вашей аудитории
- Branch:
masterилиmain - Root Directory: оставьте пустым, если
main.pyв корне - Build Command: оставьте пустым (Render сам установит зависимости из
requirements.txt) - Start Command:
(или другой порт, если Render предложит)
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8080
- Instance Type: Free или Starter (по желанию)
- Name: любое имя (например,
-
Нажмите Create Web Service.
Если нужно изменить URL плейлиста, добавьте переменную окружения PLAYLIST_URL на вкладке Environment.
Render автоматически установит зависимости и запустит приложение. Через 2-5 минут появится публичный URL вида:
https://<your-app-name>.onrender.com
- Перейдите по публичному URL.
- Должна открыться страница IPTV-плеера.
- Если не работает:
- Проверьте логи на вкладке Logs
- Убедитесь, что порт в команде запуска совпадает с портом Render (обычно 8080)
- Проверьте доступ к удаленному URL плейлиста (https://gitlab.com/iptv135435/iptvshared/raw/main/IPTV_SHARED.m3u)
- Для мобильных устройств предусмотрены крупные кнопки вызова меню каналов.
- Кнопка "Обновить" всегда показывает анимацию и подсвечивает изменения (количество каналов, дата обновления).
- Автовоспроизведение канала при загрузке отключено — пользователь сам выбирает канал.
- Интерфейс всегда в тёмной теме, не зависит от настроек системы.
- Удаленный плейлист: приложение загружает плейлист с указанного URL (автоматически обновляется каждые 6 часов)
- CORS: прокси реализован в
/proxyдля обхода ограничений. - Обновление кода: просто пушьте изменения в репозиторий — Render сам пересоберёт сервис.
- Ручной деплой: если автоматический деплой не сработал, можно запустить его вручную:
- Зайдите в ваш сервис на сайте Render
- Перейдите на вкладку Deploys
- Нажмите кнопку Manual Deploy
- Выберите нужную ветку и подтвердите
- Кэширование: добавлено кэширование запросов к плейлистам и потокам (30 секунд по умолчанию)
- Логирование: все операции логируются в консоль и в файл
app.log - Обработка ошибок: улучшена обработка ошибок с правильными HTTP-кодами
- Поддержка DASH: добавлена поддержка DASH-плейлистов (.mpd)
- Очистка кэша: эндпоинт
/clear-cacheдля очистки кэша (только с localhost) - Обновление плейлиста: эндпоинт
/refresh-playlistдля принудительного обновления плейлиста (только с localhost) - Проверка работоспособности: эндпоинт
/healthдля мониторинга
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
/ (корень)
├── main.py
├── requirements.txt
├── app.log
├── templates/
│ └── index.html
├── static/
│ ├── style.css
│ └── js/
│ └── player.js (если нужен)
Render предоставляет базовый мониторинг использования ресурсов. Для более продвинутого мониторинга можно использовать:
- Встроенные метрики Render (CPU, память, диск)
- Логи приложения (вкладка Logs)
- Внешние сервисы мониторинга, подключаемые к эндпоинту
/health
Рекомендуется периодически проверять логи на наличие ошибок и производительность системы.
Готово! Ваш IPTV-плеер теперь доступен онлайн с улучшенной производительностью.