Обзор конфигурации
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 validatesudo vision restartВыбор окружения
Заголовок раздела «Выбор окружения»Значение env (development, staging или production) определяет строгость проверок:
| Поведение | development | production |
|---|---|---|
CORS allowed_origins | допускаются wildcard / пустое значение | обязательны конкретные источники (origins) |
jwt_secret | необязателен (временный) | обязателен |
| Ключ шифрования | необязателен (заглушка) | обязателен |
| Заголовки безопасности / строгий CSP | ослаблены | включены |
staging следует столбцу production для строгих проверок: конкретные источники CORS, jwt_secret и ключ шифрования обязательны и там.
Обязательно в production
Заголовок раздела «Обязательно в production»Для production-развёртывания нужны следующие секреты и начальные значения администратора. Установщик генерирует их автоматически:
VISION_ENCRYPTION_KEY=<base64 32 bytes> # openssl rand -base64 32VISION_AUTH_JWT_SECRET=<base64 32 bytes> # openssl rand -base64 32ADMIN_EMAIL=admin@localhostADMIN_PASSWORD=<password>Секрет JWT и ключ шифрования должны быть двумя разными значениями — запуск завершится ошибкой, если они совпадают.
Также нужны конкретные источники CORS в config.yaml:
env: productionhttp: 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 перед обновлением, чтобы резервная копия стала вашим планом отката — см. Резервное копирование и восстановление.
Все параметры и соответствующие им переменные окружения см. в полном справочнике.