# Telemt Panel (Web UI) SvelteKit + shadcn-svelte: обзор флота (`/api/agg/*`), пользователи и IP, панель по каждой ноде через прокси шлюза (`/api/{alias}/…`). ## Переменные окружения | Переменная | Описание | | --- | --- | | `PUBLIC_TELEMT_GATEWAY_URL` | Базовый URL шлюза **telemt-api** без завершающего `/` (например `http://127.0.0.1:8080`). Встраивается в клиент при сборке. | Скопируйте [.env.example](.env.example) в `.env` и при необходимости измените URL. ## Разработка ```powershell cd web npm install npm run dev ``` Откройте в браузере адрес Vite (по умолчанию `http://localhost:5173`). В конфиге шлюза укажите CORS, например: ```yaml cors_allowed_origins: - "http://localhost:5173" ``` ## Сборка ```powershell npm run build npm run preview # проверка статики ``` ## Типы из OpenAPI агрегатов После изменения [../docs/AGGREGATE_OPENAPI.yaml](../docs/AGGREGATE_OPENAPI.yaml): ```powershell npm run gen:api ``` ## Docker Сборка образа из каталога `web/`: ```powershell docker build -t telemt-web:local --build-arg PUBLIC_TELEMT_GATEWAY_URL=http://127.0.0.1:8080 . ``` В [docker-compose.yml](../docker-compose.yml) сервис `web` отдаёт UI на порту **4173**. URL шлюза в образе задаётся **build-arg** (см. compose). Браузер на хосте обращается к шлюзу по `http://127.0.0.1:8080` — при другом адресе пересоберите образ с нужным `PUBLIC_TELEMT_GATEWAY_URL`. ## Ограничения - Секреты upstream к Telemt задаются на шлюзе (`authorization_env`), не в браузере. - Mutating CORS: шлюз должен разрешать `POST`, `PATCH`, `DELETE` в preflight (в текущей версии репозитория заголовок `Access-Control-Allow-Methods` это учитывает).