Add CORS support and Docker configuration for web service
- Added CORS allowed origins in config.compose.yaml to enable cross-origin requests from the web service. - Updated docker-compose.yml to include a new web service with build context and port mapping for local development. - Enhanced gateway.go to support additional HTTP methods in CORS responses. - Updated README.md to document the new web service and its configuration requirements.
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# 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` это учитывает).
|
||||
Reference in New Issue
Block a user