56 lines
2.7 KiB
Python
56 lines
2.7 KiB
Python
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Конфигурация приложения. Все значения берутся из переменных окружения
|
|
(или из файла `.env` в текущей директории при локальной разработке)."""
|
|
|
|
# Общие
|
|
database_url: str = "sqlite:///./panel.db"
|
|
secret_key: str = "change-me-please-super-secret"
|
|
access_token_expire_minutes: int = 60 * 12
|
|
|
|
# CORS
|
|
allow_origins: str = "http://localhost:5173,http://127.0.0.1:5173"
|
|
|
|
# Логирование
|
|
log_level: str = "INFO"
|
|
|
|
# Proxmox — основная аутентификация через API-токен (для REST API).
|
|
pve_host: str = "https://proxmox.local:8006"
|
|
pve_token_name: str = "root@pam!panel"
|
|
pve_token_value: str = ""
|
|
pve_verify_ssl: bool = False
|
|
pve_node: str = "pve"
|
|
|
|
# Proxmox — origin для vncticket. Если задан, используется вместо хоста
|
|
# из pve_host при запросе vncproxy. Нужно, если backend ходит к Proxmox
|
|
# по внутреннему адресу, а тикет должен быть валиден для внешнего DNS.
|
|
# По умолчанию берётся из pve_host.
|
|
pve_public_host: str = ""
|
|
|
|
# Proxmox — опциональная аутентификация по логину/паролю для VNC-консоли.
|
|
# Некоторые версии Proxmox отказываются принимать API-токен на WebSocket-эндпоинте
|
|
# vncwebsocket и требуют cookie PVEAuthCookie. Если задать обе переменные —
|
|
# backend при открытии консоли получит cookie через POST /access/ticket
|
|
# и использует её в WebSocket-соединении.
|
|
# ⚠️ Рекомендуется создать отдельного Proxmox-пользователя с минимально
|
|
# нужными правами (только VM.Console + Sys.Audit + PVEAuditor).
|
|
pve_username: str = ""
|
|
pve_password: str = ""
|
|
|
|
# Пул VMID, из которого выделяются номера новым машинам.
|
|
# Реальный VMID всё равно берётся через /cluster/nextid — этот диапазон
|
|
# используется только для валидации/отображения.
|
|
vmid_range_start: int = 9000
|
|
vmid_range_end: int = 9999
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=".env",
|
|
env_file_encoding="utf-8",
|
|
extra="ignore",
|
|
)
|
|
|
|
|
|
settings = Settings()
|