NetrunНа главную

Как выложить приложение на Streamlit в интернет

· 4 мин чтения

Streamlit ценят за то, что дашборд или демо модели собирается за вечер и открывается прямо на своей машине. Проблема появляется на следующем шаге: показать это коллеге, заказчику или преподавателю. Локальный адрес чужому человеку не откроется, а классический путь — арендовать сервер, поставить туда Python, запустить приложение фоновым процессом, поставить перед ним прокси и получить сертификат.

Netrun убирает эту часть: вы загружаете код, платформа видит, что перед ней Streamlit, ставит зависимости, запускает приложение с нужными настройками и выдаёт публичную ссылку с HTTPS. Дальше её можно просто отправить в чат.

  1. Соберите зависимости в requirements.txt

    Положите рядом с приложением файл requirements.txt со списком библиотек — обязательно вместе с самим streamlit. По этому файлу мы поймём, что перед нами Streamlit-приложение, и подберём правильную команду запуска. Виртуальное окружение в архив класть не нужно.

  2. Не прописывайте порт и адрес в коде

    Порт и адрес, на которых слушать, задаёт платформа — их не нужно фиксировать в коде или в файле настроек Streamlit. Если вы раньше запускали приложение с явно указанным портом, уберите это: иначе приложение будет слушать не там, где его ждут, и ссылка не откроется.

  3. Вынесите ключи в секреты

    Если дашборд ходит в базу, в чужой сервис или к платной модели, ключи и строку подключения читайте из переменных окружения. При настройке проекта Netrun спросит эти значения и подставит их в зашифрованном виде — в архиве и репозитории они лежать не будут.

  4. Подумайте, где лежат данные

    Небольшой CSV можно положить рядом с кодом и читать из файла. Если данных много или они обновляются, лучше ходить за ними во внешнее хранилище или в базу: файлы, которые приложение пишет само, живут внутри контейнера и пересоздаются при обновлении кода.

  5. Загрузите код и отправьте ссылку

    Загрузите папку ZIP-архивом или импортируйте репозиторий из GitHub, в том числе приватный. Netrun поставит зависимости, запустит приложение и выдаст публичный адрес с HTTPS. Логи видны в кабинете в реальном времени, поэтому ошибку в коде видно сразу, а не по пустой странице.

Дашборд открывается по обычной ссылке, которую можно отправить кому угодно, без сервера и настройки прокси. На бесплатном тарифе приложение засыпает, когда им долго не пользуются, и просыпается по открытой ссылке — первый заход после паузы чуть медленнее. Если демо показывают вживую и задержка не нужна, подойдёт тариф Pro. Попробовать Netrun.

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

Нужно ли указывать команду запуска?

Нет. Если streamlit есть в requirements.txt, платформа сама определит, что это Streamlit-приложение, и запустит его правильной командой на нужном порту.

Почему приложение не открывается по ссылке?

Самая частая причина — порт или адрес, жёстко прописанные в коде либо в файле настроек Streamlit. Их задаёт платформа, поэтому свои значения нужно убрать. Вторая по частоте причина — ошибка при старте: её видно в логах в кабинете.

Сохранятся ли файлы, которые пишет приложение?

Нет, если они лежат просто рядом с кодом: при обновлении кода контейнер пересоздаётся. Данные, которые должны сохраняться, держите во внешнем хранилище или в базе — базу можно поднять рядом в том же проекте.

Будет ли дашборд засыпать на бесплатном тарифе?

Да. Если приложением долго никто не пользуется, оно засыпает и просыпается, когда кто-то открывает ссылку. Первый заход после паузы занимает на несколько секунд больше. На тарифе Pro простоев нет.

Можно ли закрыть дашборд паролем?

Ссылка публичная, поэтому проверку доступа делайте в самом приложении: Streamlit позволяет спрашивать пароль перед показом содержимого. Сам пароль храните в секретах, а не в коде.

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

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

Почему мой сайт иногда засыпает?

На бесплатном тарифе сайты засыпают после простоя и просыпаются за пару секунд при первом запросе. На тарифе Pro проект работает без сна.

Где указать токены и другие секретные значения?

В настройках проекта есть раздел для значений из кода — например, токена от BotFather. Мы храним их в зашифрованном виде.