Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
182 lines (165 loc) · 11.7 KB
/
Copy path.env.example
File metadata and controls
182 lines (165 loc) · 11.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# NVR Backend — переменные окружения
# Скопируйте в .env и заполните. Файл .env в git не попадает.
# --- Профили compose ---
# Какие необязательные службы поднимать вместе с основной частью. Значение
# собирает установщик (install.sh) из выбранных при установке функций; руками
# здесь его правят только при установке без установщика.
# sip — домофония (Asterisk: панели, трубки, приложения)
# detection — видеодетекция (ai-detector + frame-publisher)
# minio — архив на S3 (образ больше не скачивается из реестров, см. README)
# tls — внешний доступ по HTTPS
#
# По умолчанию видеодетекция включена, потому что она есть в большинстве
# установок. Убрать профиль detection стоит там, где места на диске мало:
# образ детектора занимает 8–10 ГБ без видеокарты и около 18 ГБ с ней.
COMPOSE_PROFILES=detection
# --- Модули детекции ---
# Выключение модуля убирает его работу целиком, а не только показ в интерфейсе:
# распознавание лиц и номеров — самая тяжёлая часть по процессору и памяти,
# и на слабой машине их отключают.
AI_FACES=true
AI_PLATES=true
AI_AUDIO=true
# --- Основное ---
PORT=8080
LOG_LEVEL=info
LOG_FORMAT=console
# Подключение к PostgreSQL.
# Порт 5434 — внешний порт контейнера postgres (см. docker-compose.yml).
DATABASE_URL=postgres://nvr:nvr_secret@localhost:5434/nvr?sslmode=disable
# Пароль базы данных. Используется и при создании контейнера postgres.
DB_PASSWORD=nvr_secret
# --- Безопасность ---
# ОБЯЗАТЕЛЬНО смените! Сгенерировать: openssl rand -hex 32
JWT_SECRET=change-me-in-production-use-random-string
# --- Архив видеозаписей: где хранятся записи и снимки ---
# По умолчанию архив пишется на локальный диск сервера (том nvr_data,
# режим "local" в настройках сервера). Это штатный вариант: публичные образы
# MinIO убраны из реестров, и контейнер S3 при установке не поднимается.
#
# Для внешнего S3-хранилища укажите его адрес и ключи ниже, а контейнер MinIO
# поднимите профилем: docker compose --profile minio up -d
#
# Пустой MINIO_ENDPOINT означает «S3 не используется» — бэкенд не пытается
# подключиться и пишет файлы на диск.
MINIO_ENDPOINT=
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=nvr-recordings
# Адрес хранилища, доступный браузеру — используется в presigned-ссылках.
# Если сервер открыт извне, укажите внешний адрес или домен.
# Пример: MINIO_PUBLIC_ENDPOINT=192.168.1.111:9000
MINIO_PUBLIC_ENDPOINT=localhost:9000
MINIO_USE_SSL=false
# --- NATS (обмен кадрами с AI-детектором) ---
NATS_URL=nats://localhost:4222
# --- Медиасервер go2rtc ---
# API — регистрация потоков, список, HTTP-кадры; RTSP — отдача потоков
# наружу по протоколу RTSP (см. EXTERNAL-RTSP.md).
GO2RTC_API=http://localhost:1984
GO2RTC_RTSP=localhost:8554
# Адрес go2rtc, доступный браузеру оператора. Пусто — ссылки строятся
# по адресу запроса.
GO2RTC_PUBLIC_HOST=
# --- Внешний RTSP-доступ ---
# Учётные данные, под которыми сторонние системы (видеостены, регистраторы,
# аналитика) читают потоки на порту 9784.
#
# ОБЯЗАТЕЛЬНО смените пароль перед выводом сервера в сеть!
# Внешнему пользователю разрешено только чтение: публиковать в наши пути
# и менять конфигурацию сервера он не может.
#
# Адреса потоков: rtsp://ЛОГИН:ПАРОЛЬ@АДРЕС:9784/cameras/{НОМЕР-1}/streaming/{main|sub}
# Список каналов с готовыми ссылками — на странице «Внешний доступ».
EXTERNAL_RTSP_USER=viewer
EXTERNAL_RTSP_PASS=viewer
# --- AI-детектор: где считать объекты ---
#
# Заполняется установщиком (install.sh), менять вручную нужно редко.
#
# cpu — счёт на процессоре: вариант для машин без видеокарты, образ
# меньше примерно на 8 ГБ и собирается быстрее;
# cuda — счёт на видеокарте NVIDIA (нужен драйвер на хосте).
AI_DEVICE=cpu
# База образа детектора и индекс PyTorch, из которого ставится torch.
# Для GPU это nvidia/cuda:12.6.2-cudnn-runtime-ubuntu24.04 и
# https://download.pytorch.org/whl/cu126 — их подставляет установщик.
AI_BASE_IMAGE=ubuntu:24.04
AI_TORCH_INDEX_URL=https://download.pytorch.org/whl/cpu
# Сборка onnxruntime: onnxruntime (только процессор) или onnxruntime-gpu
# (лица и OCR номеров на видеокарте). Требует CUDA-базы выше.
AI_ONNXRUNTIME_PACKAGE=onnxruntime
# --- Распознавание автомобильных номеров ---
# Для камер с включённым распознаванием номеров работает отдельный быстрый
# поток кадров: чаще обычного и только по зоне поиска номера. Так машина
# гарантированно попадает в кадр — обычный поток идёт раз в секунду, а
# машина проезжает зону за 2-3 секунды.
#
# Зона поиска номера задаётся в интерфейсе, в карточке камеры.
# Без неё быстрый поток не запускается: кадрировать нечего.
#
# Интервал кадров зоны в секундах (0.2 = 5 кадров в секунду).
PLATE_FRAME_INTERVAL=0.2
# Ширина кадра зоны. Номер занимает 100-150 пикселей — этого хватает OCR.
PLATE_FRAME_WIDTH=640
# --- WireGuard (опционально) ---
# Интерфейс для подключения удалённых камер за NAT.
# Если не задан, управление туннелями отключено.
# WG_INTERFACE=wg0
# --- SIP-домофония ---
#
# Подсистема звонков с вызывных панелей на видеодомофоны, трубки и приложения
# работает на отдельном контейнере Asterisk (профиль sip):
# docker compose --profile sip up -d
#
# Каталог конфигурации Asterisk для записи абонентов и правил вызова.
# Пусто — сервер конфигурацией не управляет, раздел работает только с базой.
# Задаёт установщик (install.sh --sip).
ASTERISK_CONFIG_DIR=/etc/asterisk
# Адрес интерфейса управления Asterisk (AMI), через который сервер
# перезагружает конфигурацию, не разрывая идущие разговоры.
ASTERISK_AMI_ADDR=127.0.0.1:5038
ASTERISK_AMI_USER=nvr
# Пароль AMI. Пусто — файлы будут записаны, но подхватятся только после
# перезапуска Asterisk. Значение установщик пишет в manager.conf и сюда.
ASTERISK_AMI_SECRET=
# Пароль управления медиасессиями (ARI). Пока не используется сервером,
# но нужен модулю SIP по WebSocket: без него приложения не подключаются.
# Служебное значение, менять вручную не нужно.
ASTERISK_ARI_SECRET=
# UDP-порт SIP для устройств и приложений (chan_pjsip). Штатный 5060.
# Раньше на нём сидел старый драйвер chan_sip; его убрали целиком, поэтому
# устройствам не пришлось менять настройки — они ходят туда же, куда и раньше.
ASTERISK_SIP_PORT=5060
# Обновление сервера из репозитория (вкладка «Обновления» на странице /server)
#
# Каталог установки на хосте: по нему служба агента (nvr-agent) находит
# git-коммит работающей версии и обновляется из репозитория. Пусто —
# каталог по умолчанию самой службы (обычно /opt/nvr).
#
# Важно: у службы агента домашние каталоги закрыты (ProtectHome=yes),
# поэтому каталог установки должен лежать вне /home.
NVR_INSTALL_DIR=/opt/nvr
# Адрес репозитория, откуда берутся обновления. Не вшит в код: установки
# живут на разных площадках — GitHub, GitVerse, локальное зеркало.
# Значение записывает установщик (install.sh), менять можно вручную.
UPDATE_REPO_URL=https://github.com/OpenIPC/nrv
# Ветка обновлений.
UPDATE_BRANCH=main
# --- Домофония: TURN-релей (профиль turn) ---
# Нужен, когда звонками пользуются из чужих сетей: там медиа напрямую не
# проходит, и вызов соединяется без звука. Поднимается отдельной командой:
# docker compose -f docker-compose.yml -f docker-compose.turn.yml --profile turn up -d turn
# Логин и пароль должны совпадать с теми, что введены на странице домофонии
# («Медиа разговора»): оттуда их получает приложение.
TURN_USER=nvr
TURN_PASSWORD=
TURN_REALM=nvr
# Внешний адрес сервера: без него TURN отдаёт клиенту внутренний адрес.
TURN_EXTERNAL_IP=
# Домен, на который выпускается сертификат для TLS (scripts/turn-cert.sh
# issue). Должен совпадать с адресом TURN на странице домофонии, иначе
# сертификат не будет соответствовать имени, к которому подключается телефон.
TURN_DOMAIN=
# Почта для Let's Encrypt: на неё придут письма об истечении сертификата.
ACME_EMAIL=