Admin Panel (Backend)
FastAPI роутер для админ-панели с аутентификацией.
Установка
uv add viai-kit-admin-panel
Быстрый старт
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from viai_kit.admin.panel import create_admin_router
app = FastAPI(title="Admin Panel")
# CORS для фронтенда
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Создаём роутер с настройками
admin_router = create_admin_router(
files_root="/var/www",
secret_key="your-secret-key-here"
)
app.include_router(admin_router, prefix="/api")
Конфигурация
| Параметр |
Тип |
Описание |
files_root |
str |
Корневая директория для файлового менеджера |
secret_key |
str |
Секретный ключ для подписи токенов |
token_expire_hours |
int |
Время жизни токена (по умолчанию 24) |
Эндпоинты
Аутентификация
| Метод |
Путь |
Описание |
POST |
/auth/login |
Вход (пароль → токен) |
POST |
/auth/verify |
Проверка токена |
Метрики системы
| Метод |
Путь |
Описание |
GET |
/metrics |
Метрики CPU, RAM, диска, сети |
Docker
| Метод |
Путь |
Описание |
GET |
/docker/containers |
Список контейнеров |
POST |
/docker/containers/{name}/start |
Запуск |
POST |
/docker/containers/{name}/stop |
Остановка |
POST |
/docker/containers/{name}/restart |
Перезапуск |
GET |
/docker/containers/{name}/logs |
Логи |
GET |
/docker/containers/{name}/stats |
Статистика |
GET |
/docker/images |
Список образов |
Файлы
| Метод |
Путь |
Описание |
GET |
/files/list |
Список файлов |
GET |
/files/read |
Чтение файла |
POST |
/files/write |
Запись файла |
POST |
/files/mkdir |
Создание папки |
DELETE |
/files/delete |
Удаление |
GET |
/files/download |
Скачивание |
POST |
/files/upload |
Загрузка |
GET |
/files/disk |
Информация о диске |
Аутентификация
Панель использует HMAC токены для авторизации:
# Вход
POST /api/auth/login
Content-Type: application/json
{"password": "your-password"}
# Ответ
{
"token": "1704067200:a1b2c3d4...",
"expires_in": 86400
}
Все защищённые эндпоинты требуют заголовок:
Authorization: Bearer <token>
Docker Compose
version: '3.8'
services:
admin:
image: python:3.11-slim
command: uvicorn app:app --host 0.0.0.0 --port 8000
volumes:
- ./app.py:/app/app.py
- /var/run/docker.sock:/var/run/docker.sock
- /host:/host:ro
environment:
- ADMIN_SECRET_KEY=your-secret-key
- FILES_ROOT=/host
ports:
- "8000:8000"
Пример с Docker
import os
from fastapi import FastAPI
from viai_kit.admin.panel import create_admin_router
app = FastAPI()
router = create_admin_router(
files_root=os.environ.get("FILES_ROOT", "/host"),
secret_key=os.environ["ADMIN_SECRET_KEY"]
)
app.include_router(router, prefix="/api")