Dockerfile из пяти строк
Готовый шаблон есть в FAQ ниже - скопируйте, закоммитьте, и сборка запустится сама. Порт 8501 платформа возьмёт из EXPOSE.
Собрали дашборд или демо на Streamlit, а Streamlit Cloud из России работает через раз? Задеплойте в Dada Cloud: добавьте Dockerfile из пяти строк - платформа соберёт и запустит приложение, выдаст HTTPS-домен. Бесплатный тариф, серверы в России.
Готовый шаблон есть в FAQ ниже - скопируйте, закоммитьте, и сборка запустится сама. Порт 8501 платформа возьмёт из EXPOSE.
Дашборд получает адрес вида имя.dada-tuda.ru с сертификатом - можно сразу показать коллегам или клиенту.
Серверы в РФ: не нужен VPN ни вам, ни тем, кому вы отправите ссылку. Оплата рублями, когда вырастете из бесплатного тарифа.
Если дашборду нужны данные - managed-база создаётся в один клик, DATABASE_URL прокидывается сам.
Процесс перезапускается автоматически после падения.
Первое приложение можно держать бесплатно, без привязки карты.
Шесть шагов от локального app.py до ссылки, которую можно отправить коллеге.
Сохраните requirements.txt командой pip freeze > requirements.txt. Streamlit и всё, что импортирует ваш скрипт, должно быть в этом файле - иначе сборка упадёт на импорте.
FROM python:3.12-slim, COPY . ., RUN pip install -r requirements.txt, EXPOSE 8501, CMD streamlit run app.py --server.address 0.0.0.0 --server.port 8501. Положите его в корень репозитория.
Укажите имя приложения в проекте и подключите GitHub-репозиторий. Без git можно загрузить zip-архив - способ равноценный.
Ключи API и пароли задаются в консоли и приходят в процесс при старте. Читайте их через os.environ - файл secrets.toml в репозиторий класть не нужно.
Первая сборка занимает 2-3 минуты: платформа ставит зависимости и собирает образ. Прогресс и ошибки видны в логах сборки.
Дашборд доступен по HTTPS-адресу вида имя.dada-tuda.ru - открывается из России без VPN. Свой домен подключается за пару минут.
Реальные тарифы платформы и честное сравнение с арендой своего VPS.
| Тариф | Цена | Что входит |
|---|---|---|
| Free | 0 ₽/мес | Один дашборд с доменом, без привязки карты. Хватает для демо и внутренних отчётов на пару зрителей. |
| Startup | 990 ₽/мес | 5 приложений и 2 базы данных - несколько дашбордов плюс запас памяти под одновременные сессии. |
| Business | 2 900 ₽/мес | 20 приложений, 10 баз данных, бэкапы 30 дней, приоритетная поддержка. |
| Свой VPS | сравнимо по железу | VPS дешевле по железу. Но systemd-юнит, nginx, сертификат и перезапуск после падения OOM - это ваше время. |
Три места, где Streamlit-деплой обычно спотыкается.
По умолчанию streamlit run слушает localhost, и снаружи дашборд будет недоступен. Флаги --server.address 0.0.0.0 --server.port 8501 обязательны - они уже есть в шаблоне выше.
Каждый зритель - отдельная сессия со своей копией состояния, а pandas-датафрейм в кэше живёт в памяти процесса. Тяжёлые данные считайте заранее и храните в PostgreSQL.
Загруженные через st.file_uploader файлы и CSV, записанные на диск, при новой сборке исчезнут. Результаты складывайте в базу или в объектное хранилище.
Пять строк: FROM python:3.12-slim, затем COPY . ., RUN pip install -r requirements.txt, EXPOSE 8501 и CMD streamlit run app.py --server.address 0.0.0.0 --server.port 8501. Закоммитьте его в корень репозитория - платформа соберёт образ сама.
Из России Streamlit Cloud доступен нестабильно, а ссылки на дашборд могут не открываться у коллег. Здесь серверы в РФ - ссылка работает у всех без VPN.
Да: создайте managed PostgreSQL рядом - DATABASE_URL появится в переменных окружения, читайте её в приложении как обычно.
Платформа перезапустит процесс автоматически, логи видны в панели.
Да, первое приложение можно держать на бесплатном тарифе без привязки карты.
Да. Заархивируйте папку проекта в zip до 100MB и перетащите в консоль - при загрузке архива streamlit в requirements.txt распознаётся, и порт 8501 подставляется автоматически. Для сборки из репозитория надёжнее положить в него Dockerfile.
Простой путь - проверка пароля на входе через st.text_input и сравнение с переменной окружения; секрет задаётся в консоли и в репозиторий не попадает. Для внутренних дашбордов этого обычно достаточно.
Оберните загрузку данных в st.cache_data, чтобы тяжёлый запрос выполнялся один раз, а не на каждое движение слайдера. Если данных много, поднимите тариф: дашборду обычно упирается в память, а не в CPU.
Да, Streamlit держит сессию на каждого зрителя. Но каждая сессия ест память, поэтому для десятков одновременных зрителей берите тариф выше бесплатного.
Создайте аккаунт и разверните первое приложение. План Free — 0 ₽.