# Хостинг

> Как развернуть приложение из рабочего пространства в облаке Kodik прямо из IDE — анализ, публикация, управление деплоями, логи, метрики и секреты.

Источник: https://docs.kodik.ru/marketplace/hosting

Kodik Hosting позволяет опубликовать приложение из текущего рабочего пространства в облаке Kodik без переключения контекста. Весь процесс — от анализа проекта до работающего URL — выполняется прямо из Marketplace в IDE.

:::note[Hosting и Projects — разные разделы]
**Hosting** — это управление вашими собственными деплоями. **Projects** — просмотр приложений, опубликованных другими пользователями. Подробнее — [Проекты сообщества](https://docs.kodik.ru/marketplace/projects).
:::

Список приложений Hosting и действия управления работают через настроенный backend Kodik. Если IDE подключена к собственному `kodik.apiBaseUrl`, инвентарь приложений, история деплоев, логи, метрики, видимость, переименование, redeploy, stop и delete используют этот же backend.

![Image](https://docs.kodik.ru/img/image52.png)

## Анализ рабочего пространства

Прежде чем публиковать приложение, Kodik анализирует содержимое рабочего пространства и автоматически определяет:

- **Фреймворк** — React, Next.js, Vue, Astro, Django, FastAPI и другие
- **Среду выполнения** (runtime) — Node.js, Python и т.д.
- **Команды** — установки зависимостей, сборки и запуска
- **Порт**, на котором приложение слушает запросы
- **Healthcheck-путь** для проверки готовности
- **Переменные окружения** — обязательные и опциональные

Результат анализа можно просмотреть и отредактировать перед публикацией.

Сценарий **Add new app** сохраняет локальный результат анализа в `.kodik/hosting.toml`. Это версионированный локальный контракт: в нем хранятся linked app ID, ID и URL последнего деплоя, путь к workspace, найденные настройки runtime/build, порт, healthcheck-путь и метаданные обязательных или опциональных переменных окружения. Повторный анализ обновляет локальные настройки проекта, не теряя связь с приложением.

**Analyze workspace** и **Re-analyze** открывают управляемый сценарий в чате. Агент может проверять проект и создавать или обновлять файлы хостинга, поэтому Hosting не оценивает прогресс анализа: он оставляет доступным экран настройки и следит за `.kodik/hosting.toml`, `.kodik/Dockerfile` и корневым `Dockerfile`, пока сохраненное локальное состояние не станет готовым к деплою. Сценарий в чате просит агента проверить production-запуск локально и, если Docker установлен и daemon доступен, собрать Docker-образ, запустить контейнер, проверить healthcheck и удалить проверочный контейнер.

Если в рабочем пространстве нет `.kodik/Dockerfile` или `Dockerfile` в корне, Kodik оставляет доступными **Analyze workspace** и **Re-analyze**, чтобы агент мог создать или обновить файлы хостинга, но не показывает **Deploy**, пока валидный Dockerfile не будет добавлен. Preflight также проверяет версию манифеста, status, port, путь к Dockerfile и имена переменных окружения перед тем, как пометить проект готовым к деплою. Если Docker локально недоступен, анализ все равно может продолжаться; если Docker доступен, но сборка образа, запуск контейнера или healthcheck падают, агент записывает эту ошибку как blocker.

## Публикация и деплой

Публикация загружает рабочее пространство как архив исходников вместе с **Dockerfile**: Kodik использует `.kodik/Dockerfile` (или `Dockerfile` в корне рабочего пространства) для сборки образа, поэтому добавьте его перед деплоем. При redeploy связанное рабочее пространство загружается заново тем же способом, поэтому исходники и Dockerfile должны быть доступны локально.

Если анализ нашел обязательные переменные окружения, **Deploy** остается недоступен, пока вы не зададите для них значения. После создания приложения **Redeploy** блокируется, пока соответствующие обязательные secrets не существуют у этого приложения.

После анализа нажмите **Deploy** (или **Host a project** в шапке Marketplace). Kodik:

1. Ставит деплой в очередь
2. Собирает образ и запускает приложение
3. Проверяет доступность через healthcheck
4. Присваивает публичный URL

### Статусы деплоя

| Статус       | Описание                              |
| ------------ | ------------------------------------- |
| **Building** | Сборка образа, установка зависимостей |
| **Starting** | Запуск приложения                     |
| **Live**     | Приложение работает и доступно по URL |
| **Error**    | Деплой завершился с ошибкой           |
| **Idle**     | Приложение остановлено                |

## Управление приложениями

На вкладке Hosting отображаются все ваши приложения в виде карточек с превью и статусом. Для каждого приложения доступны действия:

- **Redeploy** — перезапустить деплой с текущим кодом
- **Start / Stop** — запустить или остановить приложение
- **Delete** — удалить деплой или всё приложение
- **Rename** — переименовать приложение
- **Relink workspace** — связать существующее hosted app с перемещенной или заново открытой локальной папкой проекта

Поиск и фильтрация по статусу (All / Live / Building / Error / Idle) помогают ориентироваться при большом количестве проектов.

## Логи и метрики

Для каждого деплоя доступны:

- **Логи** — поток вывода приложения в реальном времени
- **CPU** и **Memory** — текущее потребление ресурсов

Если деплой завершился с ошибкой, Kodik группирует причину: отсутствующие secrets, Dockerfile или container configuration, ошибка install/build, несовпадение healthcheck или port, либо crash при старте.

## Секреты

Переменные окружения с чувствительными данными хранятся как секреты на уровне приложения. В настройках приложения можно добавлять, обновлять и удалять секреты. Секреты не передаются в код и не отображаются в открытом виде.

## Несколько деплоев

Каждое приложение может иметь историю деплоев. Вы можете переключаться между деплоями, просматривать их логи и статус.

Kodik использует `liveDeploymentId` из истории деплоев на бэкенде как активный деплой на странице приложения. Этот деплой получает бейдж current, используется для логов, метрик и действий Start / Stop; сами логи по-прежнему загружаются отдельно при открытии или обновлении.

Предыдущие успешные деплои можно откатить из истории деплоев. Rollback запускает новый деплой на основе этой версии и сохраняет связь приложения с тем же workspace.

## Связанные разделы

- [Проекты сообщества](https://docs.kodik.ru/marketplace/projects) — галерея приложений от сообщества
- [Обзор Marketplace](https://docs.kodik.ru/marketplace/overview) — все разделы Marketplace
