PasarGuard
Панель

Конфигурация

Настройка панели PasarGuard с помощью переменных окружения и параметров

Обзор конфигурации

Панель PasarGuard настраивается через переменные окружения, хранящиеся в файле .env, расположенном по адресу /opt/pasarguard/.env.

Переменные окружения

Конфигурация администратора

ПеременнаяТипПо умолчаниюОписание
SUDO_USERNAMEstring-Имя пользователя суперпользователя для начальной учетной записи администратора
SUDO_PASSWORDstring-Пароль суперпользователя для начальной учетной записи администратора

SUDO_USERNAME и SUDO_PASSWORD работают только при включенном режиме DEBUG. Для production создайте учетную запись владельца через форму настройки в панели, используя pasarguard cli generate-temp-key.

Конфигурация базы данных

ПеременнаяТипПо умолчаниюОписание
SQLALCHEMY_DATABASE_URLstring-Строка подключения к базе данных (SQLite, MySQL, MariaDB, PostgreSQL, TimescaleDB)

Примеры URL баз данных:

# TimescaleDB/PostgreSQL (по умолчанию)
SQLALCHEMY_DATABASE_URL = "postgresql+asyncpg://user:password@localhost/pasarguard"

# MySQL/MariaDB
SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://user:password@localhost/pasarguard"

# SQLite
SQLALCHEMY_DATABASE_URL = "sqlite+aiosqlite:////var/lib/pasarguard/db.sqlite3"

Веб-сервер UVICORN

ПеременнаяТипПо умолчаниюОписание
UVICORN_HOSTstring0.0.0.0Адрес хоста для привязки веб-сервера
UVICORN_PORTint8000Номер порта для веб-сервера
UVICORN_UDSstring-Путь Unix socket; если задан, Uvicorn привязывается к socket вместо host/port
UVICORN_SSL_CERTFILEstring-Путь к файлу SSL-сертификата
UVICORN_SSL_KEYFILEstring-Путь к файлу приватного ключа SSL
UVICORN_SSL_CA_TYPEstringpublicТип центра сертификации для проверки SSL
UVICORN_WORKERSint1Количество worker-процессов Uvicorn
UVICORN_LOOPstringautoНастройка event loop Uvicorn
UVICORN_PROXY_HEADERSboolfalseДоверять proxy headers, включая forwarded IP клиента
UVICORN_FORWARDED_ALLOW_IPSstring/list127.0.0.1Доверенные IP прокси для forwarded headers; используйте * только в доверенной приватной сети

Пример:

UVICORN_HOST = "0.0.0.0"
UVICORN_PORT = 8000
UVICORN_SSL_CERTFILE = "/var/lib/pasarguard/cert.pem"
UVICORN_SSL_KEYFILE = "/var/lib/pasarguard/key.pem"
UVICORN_PROXY_HEADERS = true
UVICORN_FORWARDED_ALLOW_IPS = "127.0.0.1"

Включайте UVICORN_PROXY_HEADERS только если PasarGuard находится за доверенным reverse proxy. Не используйте UVICORN_FORWARDED_ALLOW_IPS = "*" в недоверенной сети.

Аутентификация и безопасность

ПеременнаяТипПо умолчаниюОписание
JWT_ACCESS_TOKEN_EXPIRE_MINUTESint1440Время истечения JWT-токена в минутах (по умолчанию: 24 часа)

Пример:

# Токен истекает через 24 часа
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 1440

# Токен истекает через 7 дней
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 10080

Настройки панели

ПеременнаяТипПо умолчаниюОписание
DOCSboolfalseВключить/отключить конечную точку документации API
DEBUGboolfalseВключить режим отладки для подробного логирования
ROLEstringall-in-oneRuntime-роль: backend, node, scheduler или all-in-one
DASHBOARD_PATHstring/dashboard/URL-путь, по которому доступна панель
VITE_BASE_APIstring/Базовый URL API для dashboard
ALLOWED_ORIGINSstring*CORS origins, разделенные запятыми

Пример:

DOCS = true
DEBUG = false

WireGuard

ПеременнаяТипПо умолчаниюОписание
WIREGUARD_ENABLEDbooltrueВключить выделение WireGuard peer IP и вывод WireGuard в подписках
WIREGUARD_GLOBAL_POOLCIDR10.0.0.0/8IPv4 пул для автоматического выделения peer IP и проверки ручных peer IP
WIREGUARD_RESERVEDCIDR list10.0.0.0/31IPv4 CIDR диапазоны через запятую, которые нельзя выделять

Пример:

WIREGUARD_ENABLED = false
WIREGUARD_GLOBAL_POOL = "10.66.0.0/16"
WIREGUARD_RESERVED = "10.66.0.0/31,10.66.0.10/32"

Когда WIREGUARD_ENABLED = false, вывод WireGuard в подписках пропускается, а автоматическое выделение peer IP отключается.

Запись Использования

ПеременнаяТипПо умолчаниюОписание
DISABLE_RECORDING_NODE_USAGEboolfalseОтключить запись samples использования узлов
ENABLE_RECORDING_NODES_STATSboolfalseВключить подробную запись статистики узлов; доступно только для PostgreSQL/TimescaleDB
RESET_USER_USAGE_CLEAN_CHART_DATAboolfalseУдалять историю графиков пользователя при сбросе использования

Пример:

DISABLE_RECORDING_NODE_USAGE = false
ENABLE_RECORDING_NODES_STATS = true
RESET_USER_USAGE_CLEAN_CHART_DATA = false

Полный пример конфигурации

Настройка для продакшена

# База данных (рекомендуется TimescaleDB)
SQLALCHEMY_DATABASE_URL = "postgresql+asyncpg://pasarguard:password@localhost/pasarguard"

# Веб-сервер
UVICORN_HOST = "0.0.0.0"
UVICORN_PORT = 8000
UVICORN_SSL_CERTFILE = "/var/lib/pasarguard/cert.pem"
UVICORN_SSL_KEYFILE = "/var/lib/pasarguard/key.pem"
UVICORN_PROXY_HEADERS = true
UVICORN_FORWARDED_ALLOW_IPS = "127.0.0.1"

# Безопасность
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 1440

# Настройки панели
DOCS = false
DEBUG = false

# WireGuard
WIREGUARD_ENABLED = true
WIREGUARD_GLOBAL_POOL = "10.0.0.0/8"
WIREGUARD_RESERVED = "10.0.0.0/31"

Настройка для разработки/тестирования

# Конфигурация администратора
SUDO_USERNAME = "admin"
SUDO_PASSWORD = "admin123"

# База данных (SQLite для тестирования)
SQLALCHEMY_DATABASE_URL = "sqlite+aiosqlite:////var/lib/pasarguard/db.sqlite3"

# Веб-сервер
UVICORN_HOST = "127.0.0.1"
UVICORN_PORT = 8000

# Безопасность
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 1440

# Настройки панели
DOCS = true
DEBUG = true

Управление конфигурацией

Просмотр текущей конфигурации

cat /opt/pasarguard/.env

Редактирование конфигурации

sudo nano /opt/pasarguard/.env

Применение изменений

После изменения конфигурации перезапустите панель:

pasarguard restart

Проверка конфигурации

Проверьте, правильно ли работает служба:

pasarguard status

Просмотрите логи для устранения неполадок:

pasarguard logs

Настройка нескольких узлов

Для настройки нескольких узлов:

  1. Установите и настройте PasarGuard Node на каждом сервере (см. Установка узла)

  2. Настройте учетные данные API узла на каждом сервере узла

  3. Добавьте узлы в интерфейсе панели:

    • Перейдите в раздел "Узлы" на панели управления
    • Нажмите "Добавить узел"
    • Введите данные подключения узла (адрес, порт, API-ключ и т.д.)
    • Проверьте подключение

Рекомендации по безопасности

Защита учетных данных базы данных

Используйте надежные пароли для подключения к базе данных:

# Генерация безопасного пароля
openssl rand -base64 32

Использование SSL-сертификатов

Всегда используйте действительные SSL-сертификаты в продакшене:

# Использование Let's Encrypt
sudo certbot certonly --standalone -d your-domain.com

# Обновление .env
UVICORN_SSL_CERTFILE = "/etc/letsencrypt/live/your-domain.com/fullchain.pem"
UVICORN_SSL_KEYFILE = "/etc/letsencrypt/live/your-domain.com/privkey.pem"

Отключение режима отладки в продакшене

DEBUG = false
DOCS = false