Сайты и приложения

Бесплатный хостинг для сайта на Python: Flask, Django, FastAPI

· 6 мин чтения

Коротко

Сайт на Flask, Django или FastAPI можно бесплатно разместить в Netrun: загрузите папку с кодом и requirements.txt архивом или из GitHub, и платформа сама установит зависимости, запустит приложение и выдаст ссылку с HTTPS. Один сайт на бесплатном тарифе работает без ограничения по времени и без привязки карты. Приложение должно слушать адрес 0.0.0.0 и порт из переменной окружения PORT, а когда посетителей нет, сайт засыпает и просыпается сам при первом заходе.

  • Netrun бесплатно запускает сайты на Flask, Django и FastAPI без ограничения по времени.
  • Для запуска сайта на Python достаточно папки с кодом и файла requirements.txt — сервер и nginx настраивать не нужно.
  • Сайт на Python должен слушать адрес 0.0.0.0 и порт из переменной окружения PORT.
  • Данные, которые сайт записывает в папку /data, сохраняются при обновлении кода и при засыпании.
  • На бесплатном тарифе сайт засыпает без посетителей; без засыпания он работает на тарифе Pro.

С сайтом на Python все сложнее, чем со страничкой из HTML: его нельзя просто положить файлами на хостинг, его нужно запустить. Поэтому большинство бесплатных хостингов для сайтов Python не подходят вовсе, а те, что подходят, дают пробный месяц, просят карту зарубежного банка или ждут, что вы сами настроите gunicorn, nginx и сертификат.

Ниже — как выложить сайт на Flask, Django или FastAPI бесплатно и надолго: что поправить в коде перед загрузкой, как опубликовать и какие ограничения у бесплатного тарифа.

Бесплатный хостинг для сайта на Python: что важно проверить
Что проверитьПочему это важноКак в Netrun
СрокМногие бесплатные тарифы — пробный период на месяцБез срока, сайт не выключат
КартаЗарубежные платформы требуют карту для подтвержденияНе нужна
Настройка сервераgunicorn, nginx и сертификат обычно настраивают рукамиПлатформа делает это сама
HTTPSБез него браузер пугает посетителей предупреждениемСразу, сертификат продлевается сам
ДанныеSQLite в контейнере пропадает при обновленииПапка /data переживает обновления
ЗасыпаниеПервый ответ после паузы медленнееПросыпается за пару секунд, на Pro не спит
  1. Запишите зависимости в requirements.txt#

    Платформа устанавливает ровно то, что перечислено в requirements.txt. Проверьте, что там есть сам фреймворк — flask, django или fastapi — и все, что вы импортируете в коде. Быстрее всего собрать список командой pip freeze в виртуальном окружении проекта. Забытая библиотека — самая частая причина, по которой сайт падает при первом запуске.

  2. Слушайте 0.0.0.0 и порт из переменной PORT#

    Встроенный сервер Flask и Django по умолчанию слушает 127.0.0.1 — такой адрес снаружи недоступен. Укажите host 0.0.0.0, а порт возьмите из переменной окружения PORT: в Flask это app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 8080))), в FastAPI — тот же адрес и порт при запуске uvicorn. Для Django добавьте адрес сайта в ALLOWED_HOSTS или разрешите все адреса звездочкой.

  3. Решите, где хранить данные#

    Если сайт пишет в базу SQLite или сохраняет загруженные файлы, кладите их в папку /data: все, что там лежит, переживает обновление кода и засыпание сайта. Файлы рядом с кодом при следующей публикации заменятся новой версией. Для сайта без своих данных этот шаг можно пропустить.

  4. Загрузите проект в Netrun#

    Упакуйте папку с кодом в ZIP-архив без venv и __pycache__ или подключите репозиторий с GitHub. Netrun сам увидит, что это Python, определит фреймворк, установит зависимости и запустит приложение. Если код читает секреты — ключ от почты, пароль от внешней базы — платформа спросит их до публикации и подставит как переменные окружения.

  5. Откройте ссылку и проверьте логи#

    Когда сборка закончится, сайт откроется по ссылке с HTTPS. Если вместо страницы ошибка, загляните во вкладку логов: там видно, что напечатало приложение при запуске — неправильный адрес, забытую библиотеку или ошибку в коде. Исправьте и загрузите новую версию, ссылка останется прежней.

Бесплатный хостинг для сайта на Python не обязан быть пробным месяцем с настройкой сервера. В Netrun один сайт на Flask, Django или FastAPI работает бесплатно и без срока. Если сайту понадобится свой домен или ответ без паузы на пробуждение, переход на Pro ничего не меняет в коде.

Частые вопросы

Можно ли бесплатно разместить сайт на Django?

Да. Netrun запускает сайты на Django на бесплатном тарифе без ограничения по времени. Нужны requirements.txt, адрес 0.0.0.0, порт из переменной PORT и адрес сайта в ALLOWED_HOSTS.

Сколько будет работать бесплатный сайт на Flask?

Без срока. Бесплатный тариф Netrun — не пробный период: сайт не выключат через месяц. Когда посетителей нет, он засыпает и сам просыпается при первом заходе.

Нужно ли настраивать gunicorn и nginx?

Нет. Платформа сама запускает приложение, принимает посетителей и выдает сертификат для HTTPS. Если хочется запускать сайт через gunicorn или uvicorn — укажите это в своем Dockerfile, но для обычного сайта он не нужен.

Сохранится ли база SQLite?

Да, если файл базы лежит в папке /data: она переживает и обновление кода, и засыпание сайта. База рядом с кодом будет заменяться при каждой публикации.

Можно ли выложить сайт на Python с базой PostgreSQL?

Да. Базу можно подключить внешнюю по строке подключения из секретов или поднять рядом с сайтом в docker-compose. Для небольшого сайта часто хватает SQLite в папке /data.

Это бесплатный хостинг?

Для сайтов — да, и без срока: это не пробный период, бесплатный сайт не выключат через месяц. Карта не нужна, рекламы на сайте нет, ссылка сразу открывается по HTTPS. Сайт засыпает без посетителей и просыпается сам за пару секунд, когда его открывают. Бота и фоновый скрипт можно запустить и попробовать бесплатно в течение 3 часов — они заняты постоянно и спать не умеют, поэтому дальше им нужен тариф Pro. Если проектов нужно несколько, на тарифе Pro к нему докупаются места — каждое место дает еще один проект. Pro можно получить и бесплатно — приглашая друзей: за каждого друга, который опубликует проект, неделя Pro, до четырех недель в месяц.

Можно ли запустить проект на Python — Django, Flask или FastAPI?

Да. Положите зависимости в requirements.txt — Netrun определит Python и соберет проект сам. Django, Flask и FastAPI поддерживаются; приложение должно слушать порт из переменной окружения, а ключи и доступ к базе задаются как секреты, а не в коде.

Запустите свой проект

Загрузите код, ответьте на пару вопросов — и получите рабочую ссылку. Есть бесплатный тариф

Попробовать Netrun
Все статьи блога