Перейти к содержимому

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

Vision читает config.yaml из своего рабочего каталога, а затем накладывает поверх него переменные окружения. Переменные окружения всегда имеют приоритет над значениями из файла, поэтому секреты можно не хранить в файле конфигурации.

При установке через vision install рабочий каталог — /etc/vision/, и сервис загружает:

  • /etc/vision/config.yaml — параметры, не являющиеся секретами
  • /etc/vision/vision.env — секреты, которые systemd загружает как переменные окружения

Отсутствие config.yaml не проблема — сервер использует встроенные значения по умолчанию (режим разработки, порт 3303, база данных в ./data/vision.db).

Конфигурация проверяется при запуске. Недопустимые значения — неположительные таймауты, нулевая конкурентность, TTL вне допустимого диапазона — прерывают запуск с ошибкой config: validate: в журнале сервиса, в которой указан проблемный ключ.

Проверьте изменения в конфигурации до перезапуска командой vision config validate или выведите итоговую объединённую конфигурацию (секреты скрыты) командой vision config print — см. Справочник CLI. Команда vision config print --reference выводит все ключи, их значения по умолчанию и описания, при этом установленная конфигурация не нужна.

Окно терминала
sudo vision config validate
sudo vision restart

Значение env (development, staging или production) определяет строгость проверок:

Поведениеdevelopmentproduction
CORS allowed_originsдопускаются wildcard / пустое значениеобязательны конкретные источники (origins)
jwt_secretнеобязателен (временный)обязателен
Ключ шифрованиянеобязателен (заглушка)обязателен
Заголовки безопасности / строгий CSPослабленывключены

staging следует столбцу production для строгих проверок: конкретные источники CORS, jwt_secret и ключ шифрования обязательны и там.

Для production-развёртывания нужны следующие секреты и начальные значения администратора. Установщик генерирует их автоматически:

/etc/vision/vision.env
VISION_ENCRYPTION_KEY=<base64 32 bytes> # openssl rand -base64 32
VISION_AUTH_JWT_SECRET=<base64 32 bytes> # openssl rand -base64 32
ADMIN_EMAIL=admin@localhost
ADMIN_PASSWORD=<password>

Секрет JWT и ключ шифрования должны быть двумя разными значениями — запуск завершится ошибкой, если они совпадают.

Также нужны конкретные источники CORS в config.yaml:

env: production
http:
allowed_origins:
- "https://vms.example.com"

Когда Vision работает за прокси, завершающим TLS (nginx, Caddy, Traefik), установите http.secure_cookies: true (установщик записывает false) и убедитесь, что прокси передаёт исходный Host и заголовки обновления WebSocket/SSE. HSTS включается автоматически при env: production; http.tls_enabled больше не является параметром конфигурации.

Оставляйте http.secure_cookies: false только пока пользователи открывают Vision напрямую по обычному HTTP. URL, по которому сервер Alta обращается к Vision для авторизации WHEP, задаётся явно для каждого сервера (его callback base URL) при добавлении — см. Подключение сервера Alta.

База данных — SQLite (режим WAL). Миграции схемы выполняются автоматически при каждом запуске — отдельного шага миграции нет, а сами миграции только вперёд: пути отката нет. Выполните sudo vision backup перед обновлением, чтобы резервная копия стала вашим планом отката — см. Резервное копирование и восстановление.

Все параметры и соответствующие им переменные окружения см. в полном справочнике.