Инсталация
BGPVR работи като Docker контейнер. Приложението не пази състояние — всичко важно е в томовете, които монтирате.
На тази страница
Минимален compose файл
services:
bgpvr:
image: ghcr.io/bgpvr/bgpvr:latest
container_name: bgpvr
restart: unless-stopped
network_mode: host
environment:
- BGPVR_DATA=/data
- WEB_PORT=8095
volumes:
- /srv/bgpvr/data:/data
- /srv/bgpvr/recordings:/data/dvr
- /srv/bgpvr/picons:/data/picons
devices:
- /dev/dvb:/dev/dvb # DVB тунери
# - /dev/bus/usb:/dev/bus/usb # USB четци за карти
# - /dev/dri:/dev/dri # Intel/AMD хардуерно прекодиране
За NVIDIA прекодиране добавете runtime: nvidia и
NVIDIA_DRIVER_CAPABILITIES=compute,utility,video.
Ограниченията за вход и другите ограничения по адрес броят всеки посетител по адреса, който обратното
прокси подава в X-Forwarded-For. Кажете на BGPVR кое прокси е ваше в
environment на compose файла: BGPVR_TRUSTED_PROXIES=127.0.0.1/32 за nginx на
същата машина, BGPVR_TRUSTED_PROXIES=<неговият IP>/32 за прокси другаде в мрежата ви
или BGPVR_TRUSTED_PROXIES=none, ако нямате прокси. Администратор може да зададе същия списък
в настройката trusted_proxy_cidrs през API за настройки; променливата на средата има
предимство. Редът „Client address: …“ в лога при стартиране показва какво е в сила, а BGPVR записва
подсказка с адреса на прокси, което още не е посочено.
Томове — пътищата в контейнера са задължителни
Пътищата на хоста избирате вие, но пътищата в контейнера трябва да съвпадат точно и да се виждат от всички BGPVR услуги.
| Път в контейнера | Съдържа |
|---|---|
/data | База данни, настройки, HLS, логове — това не бива да губите |
/data/dvr | Записи (често на NAS) |
/data/vod | VOD библиотека |
/data/picons | Лога на канали |
/data/ai_output | Миниатюри, субтитри, AI отчети |
/data
Използвайте bind mount към реална директория на хоста. Named volumes затрудняват значително архивирането, проверката и миграцията.
Отворете Наблюдение → Технически → Съхранение в конзолата. Всички пътища трябва да се виждат. Ако някой показва „Needs Mount“, поправете compose файла, преди да разчитате на DVR обработка, миниатюри или VOD.
Преди да изтеглите нов образ и да пресъздадете контейнера, проверете, че не тече
запис (DVR показва какво се записва) и че няма AI задача в обработка
(Наблюдение → Технически → AI опашка или броячът Processing в
Настройки → AI Processing → Processing Queue). Чакащите задачи
преживяват рестарта. Запис, прекъснат от рестарт, продължава като втори файл с
дупка. Първото стартиране на 2.9.275 или по-нова версия премества програмните данни
в отделна база (epg.db), затова предвидете няколко минути престой.
Обновяване на BGPVR до последната версия
Обновяването означава да изтеглите новите образи и да пресъздадете контейнерите. Всичко, което BGPVR пази (настройки, абонати, канали, записи), е в папките, които сте монтирали, и остава непроменено. Правете го в спокоен момент.
- Уверете се, че нищо не се записва. Проверете DVR и AI опашката, както е описано в предупреждението по-горе.
- Направете резервно копие. В конзолата отворете Архивиране и натиснете „Backup now“ (как), след което свалете („Download“) новия файл на друг компютър (как). Копието съдържа базата данни и двата тайни ключа. Записите, VOD файловете и логата на каналите не са в него.
- Запишете версията, която използвате. Версията на BGPVR е малкият ред най-долу в страничното меню, под Изход.
- Изтеглете и рестартирайте. На сървъра, в папката с Вашите файлове
docker-compose.ymlи.env, изпълнете:
Първата команда сваля най-новите образи на всяка услуга във файла, втората пресъздава контейнерите, които са се променили. Ако във Вашия файл е посочен таг на версия вместоdocker compose pull docker compose up -dlatest, първо сменете тага. - Изчакайте и влезте. Сървърът се рестартира, затова потоците на живо спират за кратко, а запис, който тече в този момент, продължава като втори файл, с пропуск. След обновяване първото стартиране може да отнеме малко повече, докато BGPVR обнови базата си.
- Проверете. Редът най-долу в страничното меню показва новата версия, а Лиценз показва Вашия план както преди.
Отдалечените възли се обновяват от конзолата: възел, чийто агент е по-стар от този на сървъра, показва „Обнови агента“ на страница Възли (как). Настройките на тунерите и записите на възела никога не се пипат.
Ако нещо не стане
- Конзолата се отваря, но показва грешни данни или настройки: възстановете резервното копие от стъпка 2. Отворете Архивиране, натиснете „Restore“ на реда му и въведете RESTORE (как). Така се връща базата данни, а не записите Ви.
- Конзолата не се отваря: на сървъра изпълнете
docker compose psиdocker compose logs --tail 100 bgpvr, след което се свържете с поддръжката на BGPVR и изпратете изведеното.
Хардуер
- Тунери: DVB-C/T/S адаптери през
/dev/dvb. - Прекодиране: NVIDIA NVENC или Intel/AMD VAAPI/QSV през
/dev/dri. По избор — работи и само с процесор. - Скоростта на диска е по-важна от размера. Бавни дискове под
/dataблокират записа, което се проявява като високо натоварване, а не като явна дискова грешка.
Няма формални минимални изисквания. За ориентир: една производствена инсталация ограничава AI обработката до 6 от 16 ядра, за да не отнема ресурси от живото излъчване, а всеки уеб зрител на живо заема около 40 MB RAM за сегментите си (вижте Настройки → Tuners & Sources → Web Player Quality → Segment storage).
Образите ghcr.io/bgpvr/bgpvr, bgpvr-ai и
bgpvr-node се изтеглят без вход. Условията за оператори са на
bgpvr.com/terms.
Контейнерът bgpvr-watchdog проверява приложението всяка минута и
изпраща сигнали според Настройки → Notifications. След 3 пропуснати
проверки и 45-секундно потвърждение рестартира контейнера bgpvr — най-много
веднъж на 30 минути, и то само ако /var/run/docker.sock е монтиран в
watchdog контейнера; без него само изпраща сигнали. Изключва се с настройката
watchdog_self_heal.
Постоянен режим на NVIDIA (persistence mode)
Без него драйверът на NVIDIA изключва картата, щом никоя програма не я използва, и я стартира отново за следващата: всеки олекотен поток на запис (и проверката на картата преди него) чака около секунда повече. Конзолата го показва за всяка карта в Наблюдение → Технически → Изложен хардуер (включен ✓ или изключен), а когато някоя карта е изключена — и командата по-долу. Това е настройка на драйвера на NVIDIA на хоста: контейнерът на BGPVR само я чете.
Проверка на самия сървър (хоста, не в контейнера):
nvidia-smi --query-gpu=index,name,persistence_mode --format=csv
Бързият начин: скриптът, който идва с BGPVR (Ubuntu, Debian, Proxmox и други хостове със systemd и драйвера на NVIDIA). Включва постоянния режим веднага и след всяко рестартиране и показва всяка карта преди → след. Вземете го от образа на BGPVR (не от работещия контейнер, чиито файлове приложението може да промени) и го прочетете, преди да го пуснете със sudo:
docker run --rm --entrypoint cat "$(docker inspect -f '{{.Image}}' bgpvr)" \
/app/scripts/host/gpu_persistence.sh > gpu_persistence.sh
less gpu_persistence.sh # прочетете го първо
sudo bash gpu_persistence.sh enable # status: показва · disable: връща
Същото на ръка (Ubuntu / Debian с драйвера на NVIDIA):
- Включване веднага:
sudo nvidia-smi -pm 1 - Включен и след рестартиране: създайте
/etc/systemd/system/nvidia-persistenced.service.d/bgpvr-persistence.confсъс
Празният[Service] ExecStart= ExecStart=/usr/bin/nvidia-persistenced --user nvidia-persistenced --persistence-mode --verboseExecStart=изчиства реда на дистрибуцията (в Ubuntu той казва--no-persistence-mode). Махнете--user nvidia-persistenced, акоgetent passwd nvidia-persistencedне извежда нищо. - Заредете го:
sudo systemctl daemon-reload && sudo systemctl enable nvidia-persistenced && sudo systemctl restart nvidia-persistenced - Проверете: проверката по-горе показва
Enabledза всяка карта, и след рестартиране; конзолата показва включен ✓. - Връщане:
sudo rm /etc/systemd/system/nvidia-persistenced.service.d/bgpvr-persistence.conf, послеsudo systemctl daemon-reload && sudo systemctl restart nvidia-persistenced(връща се стойността по подразбиране на услугата; в Ubuntu тя е изключено)
Други системи
- Unraid няма systemd: изпълнете веднъж
nvidia-smi -pm 1и добавете този ред в/boot/config/go, който се изпълнява при всяко стартиране. - TrueNAS SCALE връща системните си файлове при обновяване: добавете
nvidia-smi -pm 1като команда Post Init в System → Advanced → Init/Shutdown Scripts. - Proxmox и виртуални машини: направете го там, където работи драйверът на NVIDIA: във виртуалната машина, когато картата е подадена към нея, или на хоста на Proxmox, когато контейнери делят картата.
- Synology DSM: непроверено. Където
nvidia-smiработи през SSH, задача при стартиране в Control Panel → Task Scheduler, която изпълняваnvidia-smi -pm 1като root, може да свърши работа; иначе го оставете изключен (олекотената версия пак работи, тръгва около секунда по-бавно). - Docker Desktop и Windows (WSL): драйверът на Windows управлява картата; тук няма нищо за правене.