Files
Proxmox-VPS-Panel/backend/app/config.py
T
2026-07-25 02:02:20 +03:00

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()