---
title: "Как задеплоить приложение на Streamlit в 2026"
description: "Деплой приложения на Streamlit одной командой: pethost deploy пишет Dockerfile, запускает streamlit run и отдает приложение по HTTPS — за 9,99 € в месяц."
---

[Блог](https://pethost.dev/ru/blog/) · Гайды по деплою

# Как задеплоить приложение на Streamlit в 2026: одна команда, HTTPS и Dockerfile, который остается у вас

Команда Pethost · 25 октября 2026 г. · 10 мин чтения

У вас есть приложение на Streamlit, которое на ноутбуке запускается через `streamlit run`, и вы хотите выложить его по адресу с HTTPS для людей, у которых нет Python. На Pethost это одна команда, `pethost deploy`, в папке, где лежит `requirements.txt`. Она пишет Dockerfile, собирает приложение на вашей машине Pethost и печатает его адрес. Приложение с первых страниц документации Streamlit оказалось в сети через 52 секунды, а следующее изменение его кода — через 3.

**Коротко**

- **Одна команда:** `pethost deploy` в папке с `requirements.txt`. Ни файла конфигурации, ни порта, который надо открыть, ни Docker на ноутбуке.
- **Что она делает:** пишет Dockerfile, который ставит ваши пакеты и запускает `streamlit run streamlit_app.py`, и направляет адрес на порт 8501.
- **Виджеты работают:** WebSocket Streamlit проходит через прокси Pethost, настраивать ничего не нужно.
- **API-ключи** лежат в `.env`, который первый деплой берет с собой; позже ключ меняет `pethost env set`.
- **Цена:** 9,99 € в месяц за 2 vCPU, 3 GB и 30 GB — для всех ваших проектов. Бесплатного тарифа нет.

## Что нужно, чтобы задеплоить приложение на Streamlit в 2026 году

Три вещи: само приложение, команда `pethost` и аккаунт Pethost.

**Приложение** здесь — то, с которого начинает документация Streamlit. Ее руководство по установке создает виртуальное окружение в папке проекта и ставит в него Streamlit:

```
$ cd my-app
$ python -m venv .venv
$ source .venv/bin/activate
$ pip install streamlit
```

Затем `streamlit_app.py` со слайдером из первого урока Streamlit:

```
import streamlit as st

st.title("My app")

x = st.slider("x")  # 👈 this is a widget
st.write(x, "squared is", x * x)
```

И `requirements.txt`, список того, что ставит приложение, с одной строкой: `streamlit`.

**Команда** — одна программа, которая ставится одной строкой. Все ее команды есть в [справочнике CLI](https://pethost.dev/docs/cli/).

```
curl -fsSL https://pethost.dev/install.sh | sh      # macOS, Linux
irm https://pethost.dev/install.ps1 | iex           # Windows, in PowerShell
```

**Аккаунту** нужен тариф. Если вы не вошли, `pethost deploy` откроет браузер, чтобы вы вошли. Если тарифа еще нет, она покажет, где его выбрать, и подождет.

## Деплой приложения на Streamlit одной командой

Перейдите в папку, где лежит `requirements.txt`, и запустите `pethost deploy`. Вот весь экран:

```
$ pethost deploy
Name it [my-app]:                it will live at https://my-app.sam.pethost.app
✓ Packed 2 files, 131 B   (left out .venv)
✓ Uploaded straight to your machine
✗ /compose.yaml: the project directory has no compose.yaml at its root: add one
✓ Streamlit app detected, wrote Dockerfile and .dockerignore.
✓ Packed 4 files, 601 B   (left out .venv)
✓ Uploaded straight to your machine
✓ Built and started in 52 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env, port 8501
✓ app listens on 8501 → https://my-app.sam.pethost.app
  It answers 200.

https://my-app.sam.pethost.app

Wrote .pethost (commit it). Next:   pethost logs -f   ·   pethost open
```

1. **Она спрашивает одно** Имя проекта, первое слово его адреса. Enter берет имя папки.
2. **Она не берет виртуальное окружение** В `.venv` было 450 MB пакетов, а машина ставит их сама.
3. **Машина не находит, что запускать** Строка с крестиком: в папке пока нет ни Dockerfile, ни Compose-файла.
4. **pethost пишет Dockerfile** В `requirements.txt` указан `streamlit`, поэтому pethost пишет Dockerfile для Streamlit и загружает папку еще раз.
5. **Машина собирает и запускает его** Она видит, что приложение слушает 8501, направляет туда адрес с HTTPS, а pethost печатает ответ: 200.

Файл `.pethost` говорит, какой проект в этой папке. Закоммитьте его вместе с Dockerfile, и следующий деплой ничего не спросит.

## Откройте приложение: виджеты и WebSocket

Страница Streamlit связывается с приложением по WebSocket, `/_stcore/stream`: по нему уходит каждое движение виджета, и скрипт заново выполняется на машине. Если это не работает, страница бесконечно показывает заглушку загрузки; база знаний Streamlit винит в этом CORS или прокси, который срезает заголовки WebSocket.

На Pethost для этого ничего не настраивали. В браузере приложение отрисовалось меньше чем за секунду, через `wss://my-app.sam.pethost.app/_stcore/stream`: «0 squared is 0», а со слайдером на 10 — «10 squared is 100». Хелсчек Streamlit тоже отвечает:

```
$ curl https://my-app.sam.pethost.app/_stcore/health
ok
```

`pethost logs -f` показывает поток того, что печатает приложение. «External URL», который там печатает Streamlit, никому не открыт: адрес приложения — тот, что с HTTPS.

## Dockerfile, который pethost пишет для Streamlit

Вот файл целиком, каким он был записан в папку:

```
# Written by pethost deploy for this Streamlit app: Python 3.14 (no .python-version
# names another), pip installs it (requirements.txt), streamlit_app.py is what it starts
# with.
# It is yours now: change it as you like. pethost does not write it again.

FROM python:3.14
WORKDIR /app

COPY . .

RUN --mount=type=cache,target=/root/.cache/pip \
    pip install -r requirements.txt

ENV PYTHONUNBUFFERED=1
EXPOSE 8501
CMD ["streamlit", "run", "streamlit_app.py"]
```

Его первые строки говорят, что pethost нашел в вашей папке:

- **Python** — 3.14, если `.python-version` не указывает другую версию.
- **Пакеты** ставит pip из `requirements.txt`, и его загрузки остаются на вашей машине, или uv из `uv.lock`.
- **Файл приложения** — `streamlit_app.py`, `app.py` или `main.py`, либо единственный другой файл `.py` в корне, который импортирует Streamlit.

В `requirements.txt` должен быть указан `streamlit`. Приложение, сделанное для Streamlit Community Cloud, может его не указывать, ведь Community Cloud ставит Streamlit сам; тогда pethost не пишет Dockerfile. С добавленной строкой такое приложение оказалось в сети через 30 секунд.

## Измените код и задеплойте снова за 3 секунды

Отредактируйте приложение и запустите ту же команду. В первый раз это заняло 42 секунды: файл копирует папку до `pip install`, так что из-за одной измененной строки пакеты ставятся заново. Dockerfile ваш, поэтому сначала скопируйте `requirements.txt`:

```
COPY requirements.txt .
RUN --mount=type=cache,target=/root/.cache/pip \
    pip install -r requirements.txt

COPY . .
```

Деплой, который изменил файл, занял 34 секунды. После него изменение кода пропускает установку:

```
$ pethost deploy
my-app (.pethost)
✓ Packed 5 files · uploaded · built and started in 3 s
…
  It answers 200.
https://my-app.sam.pethost.app
```

Чтобы вместо этого деплоить каждый пуш, один раз подключите репозиторий: `pethost github sam/my-app`. `pethost rollback` возвращает предыдущую версию. ИИ-агент может сделать все это через MCP-сервер Pethost: [как агент деплоит проект и следит за ним](https://pethost.dev/ru/blog/hosting-for-ai-coding-agents/).

## Деплой приложения на Streamlit, которое читает CSV

Большинство приложений на Streamlit показывают данные, часто из файла рядом с кодом. Это приложение один раз читает таблицу Palmer penguins, хранит ее через `st.cache_data` и строит график по острову, выбранному в выпадающем списке:

```
@st.cache_data
def load_data():
    return pd.read_csv("data/penguins.csv")
```

С `streamlit` и `pandas` в `requirements.txt` та же команда упаковала 3 файла, 15 KB, и приложение оказалось в сети через 27 секунд. CSV уехал вместе с папкой, и путь, который работает на ноутбуке, работает и на машине. В браузере выбор острова Dream перерисовал число, график и таблицу.

Машина всегда включена, поэтому то, что хранит `st.cache_data`, остается готовым для следующего посетителя, и никто не [ждет, пока приложение проснется](https://pethost.dev/ru/blog/always-on-hosting-no-cold-starts/). Файл, который приложение пишет во время работы, пропадает, когда деплой создает новый контейнер. То, что должно сохраниться, держите в базе данных: Postgres создается в один клик, [без доплаты](https://pethost.dev/ru/blog/european-hosting-postgres-flat-price/).

## Храните API-ключ в .env, а не в коде

API-ключу не место ни в коде, ни в Git. Это приложение спрашивает у API NASA, какие астероиды пролетают мимо Земли в день, выбранный в поле даты. На ноутбуке ключ из `.env` читает `python-dotenv`:

```
load_dotenv()  # the .env beside this file, when you run it on your laptop
…
answer = requests.get(
    "https://api.nasa.gov/neo/rest/v1/feed",
    params={"start_date": day, "end_date": day, "api_key": os.environ["NASA_API_KEY"]},
)
```

В `.env` одна строка, `NASA_API_KEY=DEMO_KEY` — ключ NASA, чтобы попробовать API (свой ключ api.nasa.gov выдает за имя и email). Первый деплой берет `.env` с собой:

```
$ pethost deploy
Name it [asteroids]:          it will live at https://asteroids.sam.pethost.app
✓ Packed 4 files, 863 B   (took .env from this folder)
…
✓ app listens on 8501 → https://asteroids.sam.pethost.app
  It answers 200.
```

Страница показала, что 20 октября 2026 года мимо Земли пролетает 8 астероидов, а после смены даты на 21 октября — 10. С этого момента `.env` проекта живет на машине, а изменение файла на ноутбуке остается на ноутбуке. Следующий деплой так и говорит:

```
$ pethost deploy
asteroids (.pethost)
✓ Packed 6 files · uploaded · built and started in 38 s
  · kept the project's .env in place of the version's own: after the first deploy the project's is kept
…
To send this folder's .env:  pethost env push
```

`pethost env set` меняет одну переменную и сразу деплоит. Если указать только имя, `pethost env set NASA_API_KEY`, команда спросит значение, не показывая его. Streamlit тоже читает свои настройки из переменных:

```
$ pethost env set STREAMLIT_BROWSER_GATHER_USAGE_STATS=false
asteroids (.pethost)
✓ /.env has STREAMLIT_BROWSER_GATHER_USAGE_STATS now. Deployed in 39 s.
```

Приложение перезапустилось без своей строки о статистике использования. `pethost env push` вместо этого отправляет весь ваш `.env`, но сначала называет каждую переменную, которую потерял бы файл проекта, и спрашивает.

`st.secrets` читает `.streamlit/secrets.toml`, а не окружение. Папка, задеплоенная через `pethost deploy`, берет этот файл с собой, и `st.secrets` на машине работал. В репозитории этому файлу не место, поэтому приложение, задеплоенное из GitHub, держит ключи в `.env`.

## Деплой Dockerfile из туториала Streamlit по Docker

Если вы прошли туториал Streamlit «Деплой Streamlit с помощью Docker», в вашей папке уже есть его Dockerfile. Оставьте его: pethost деплоит собственный Dockerfile папки как есть. Вот Dockerfile из туториала, с `COPY . .` вместо его `git clone`, как туториал и советует для кода, который лежит рядом с Dockerfile:

```
FROM python:3.12-slim

WORKDIR /app

RUN apt-get update && apt-get install -y …

COPY . .

RUN pip3 install -r requirements.txt

EXPOSE 8501

HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health

ENTRYPOINT ["streamlit", "run", "streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]
```

```
$ pethost deploy
Name it [spiral]:                it will live at https://spiral.sam.pethost.app
✓ Packed 3 files, 2 KB
✓ Uploaded straight to your machine
✓ Built and started in 1 min 25 s
  · wrote compose.yaml for the Dockerfile: the service app, reading .env, port 8501
✓ app listens on 8501 → https://spiral.sam.pethost.app
  It answers 200.
```

Спираль из туториала перерисовывала график, когда двигались слайдеры. Его `docker run -p 8501:8501` здесь не нужен: машина сама находит порт и не открывает ничего, кроме HTTPS. `HEALTHCHECK` выполняется, и Docker назвал контейнер здоровым.

## Свой домен для приложения на Streamlit

Любое имя в домене вашего аккаунта работает сразу, с HTTPS. Свой домен — одна команда, `pethost domain add dashboard.example.com`, и она печатает CNAME-запись, которую нужно создать; сертификат появляется, как только имя начинает указывать на машину.

## Что вы получаете за эту цену

Pethost стоит 9,99 € в месяц за все, что вы хостите, на 2 vCPU, 3 GB памяти и 30 GB диска. Дашборд редко бывает один: задача, которая наполняет его данными, его база данных и ваше следующее приложение работают рядом с ним, [без платы за проект](https://pethost.dev/ru/blog/unlimited-projects-flat-monthly-fee/).

- **9,99 €** в месяц за все ваши проекты, без счетчиков
- **52 с** на сборку и запуск первого приложения
- **3 с** на деплой изменения в коде

Что уже сделано за вас: HTTPS с сертификатами, которые продлеваются сами, деплой из GitHub, ночные бэкапы, которые хранятся 14 дней, SSH в любой контейнер и учет каждого запроса без скриптов на ваших страницах. Тарифы — в [разделе с ценами](https://pethost.dev/ru/#pricing) на главной странице.

**Каждый проект подписан.** Семь проектов на одной машине Starter: приложения с адресами и запросами за последние сутки, базы данных с приложениями, которые их используют.

![Первая страница панели Pethost: CPU, память и диск машины и ее проекты в виде карточек.](https://pethost.dev/shots/projects.webp)

### Pethost — лучший выбор для

- **Аналитиков данных с приложением на Streamlit**, которое нужно показать коллегам или клиентам по собственному адресу
- **Разработчиков-одиночек** с несколькими дашбордами, ботами и личными проектами и одним счетом к оплате
- **Людей, за которых деплоит агент**: Claude Code или Codex выкладывает приложение и читает его логи
- **Стартапов на ранней стадии**, которым нужны фиксированные расходы в месяц, пока продукт небольшой

### Ищите другое, если

- Вашему приложению нужны несколько регионов или автомасштабирование

## Вопросы

### Как задеплоить приложение на Streamlit без Dockerfile?

Запустите `pethost deploy` в папке с `requirements.txt`. Она пишет Dockerfile, который запускает `streamlit run`, и деплоит его; файл остается в вашей папке, и вы можете его менять.

### Почему задеплоенное приложение Streamlit бесконечно загружается?

Страница связывается с приложением по WebSocket на `/_stcore/stream`, и если это не удается, бесконечно показывает заглушку загрузки. На Pethost WebSocket проходит через прокси, и настраивать ничего не нужно.

### Какой порт использует приложение на Streamlit на Pethost?

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

### Где хранить API-ключи задеплоенного приложения на Streamlit?

В `.env` проекта, который первый деплой берет из вашей папки; `pethost env set NAME` меняет ключ, не показывая его, а приложение читает `os.environ`. `st.secrets` работает у папки, задеплоенной вместе со своим `secrets.toml`.

### Сколько стоит хостинг приложения на Streamlit на Pethost?

9,99 € в месяц за Starter: 2 vCPU, 3 GB и 30 GB без платы за проект, так что там же работают ваши другие приложения и базы данных. Бесплатного тарифа нет. Цены без НДС.

На экранах — деплои на нашей тестовой машине с pethost 0.2.4, Streamlit 1.66.1 и Python 3.14.9 (3.12.15 в Dockerfile из туториала). `my-app` задеплоили первым; приложения с CSV и API-ключом нашли образ Python 3.14 уже на машине. Аккаунт на них — пример, `sam`.

1. [Streamlit: установка Streamlit из командной строки](https://docs.streamlit.io/get-started/installation/command-line)
2. [Streamlit: основные понятия](https://docs.streamlit.io/get-started/fundamentals/main-concepts)
3. [Streamlit: деплой Streamlit с помощью Docker](https://docs.streamlit.io/deploy/tutorials/docker)
4. [Streamlit: приложение не загружается при удаленном запуске](https://docs.streamlit.io/knowledge-base/deploy/remote-start)
5. [Streamlit: управление секретами](https://docs.streamlit.io/develop/concepts/connections/secrets-management)
6. [Streamlit: зависимости приложения в Community Cloud](https://docs.streamlit.io/deploy/streamlit-community-cloud/deploy-your-app/app-dependencies)
7. [NASA: открытые API](https://api.nasa.gov/)
8. [Palmer penguins: данные](https://allisonhorst.github.io/palmerpenguins/)
9. [pethost, командная строка Pethost](https://pethost.dev/docs/cli/)

## Запустите свои проекты уже сегодня

Деплойте приложения, ботов и базы данных из агента, с GitHub или в браузере, сколько поместится, по одной фиксированной цене. Ничего по счётчику, ничего сверху.

[Разместить проекты за 9,99 €/мес](https://console.pethost.dev/)

## Читать дальше

- 24 октября 2026 г. [Как задеплоить PHP-приложение в 2026: Laravel, Symfony или простые PHP-страницы одной командой](https://pethost.dev/ru/blog/deploy-php-app/) Деплой PHP-приложения одной командой: pethost deploy пишет Dockerfile для Laravel, Symfony или простых PHP-страниц и отдает их по HTTPS — за 9,99 € в месяц.
- 10 октября 2026 г. [Как задеплоить приложение на Gin в 2026: одна команда, HTTPS и Dockerfile, который остается у вас](https://pethost.dev/ru/blog/deploy-gin-app/) Деплой приложения на Go Gin одной командой: pethost deploy пишет Dockerfile, собирает программу и отдает ее по HTTPS — за 9,99 € в месяц.
- 10 октября 2026 г. [Как задеплоить приложение на Go Fiber в 2026: одна команда, HTTPS и Dockerfile, который остается у вас](https://pethost.dev/ru/blog/deploy-fiber-app/) Деплой приложения на Go Fiber одной командой: pethost deploy пишет Dockerfile, собирает его за 45 секунд и отдает по HTTPS — за 9,99 € в месяц.
- 10 октября 2026 г. [Как задеплоить приложение на Nuxt в 2026: одна команда, Node-сервер и HTTPS](https://pethost.dev/ru/blog/deploy-nuxt-app/) Деплой приложения на Nuxt 4 одной командой: pethost deploy пишет Dockerfile, запускает nuxt build и Node-сервер по HTTPS — за 9,99 € в месяц.

[Все статьи](https://pethost.dev/ru/blog/) · [О Pethost](https://pethost.dev/about/) · [Цены](https://pethost.dev/ru/#pricing)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Шаблоны](https://pethost.dev/ru/templates/)
- [О нас](https://pethost.dev/about/)
- [Документация](https://pethost.dev/docs/)
- [Блог](https://pethost.dev/ru/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Плагин](https://github.com/pethost-dev/plugin)
- [Условия](https://pethost.dev/terms/)
- [Конфиденциальность](https://pethost.dev/privacy/)
- [Возвраты](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Базы данных

- [Postgres](https://pethost.dev/ru/postgres/)

Сравнения

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/ru/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/ru/blog/coolify-cloud-vs-dokploy-cloud/)
- [Цены Railway, Render и Fly.io](https://pethost.dev/ru/blog/railway-vs-render-vs-fly-io-pricing/)
- [Управляемый хостинг Docker Compose](https://pethost.dev/ru/blog/managed-docker-compose-hosting/)

Альтернативы

- [Альтернативы Railway](https://pethost.dev/ru/blog/railway-alternatives/)
- [Альтернативы Heroku](https://pethost.dev/ru/blog/heroku-alternatives/)
- [Альтернативы Dokploy](https://pethost.dev/ru/blog/dokploy-alternatives/)
- [Альтернативы Coolify](https://pethost.dev/ru/blog/coolify-alternatives/)
- [Альтернативы Render](https://pethost.dev/ru/blog/render-alternatives/)
- [Альтернативы Sliplane](https://pethost.dev/ru/blog/sliplane-alternatives/)
