Базовое пошаговое развертывание из apt-репозитория

Данный раздел содержит подробную информацию о базовом пошаговом развертывании компонентов FindFace Multi. Выполните приведенные ниже инструкции, придерживаясь заданного порядка.

Совет

Сначала обязательно ознакомьтесь с архитектурой FindFace Multi.

Важно

В данном разделе не рассматривается развертывание функционала Видеомагнитофон. Вы можете найти соответствующую пошаговую инструкцию здесь.

Важно

Если находитесь на территории России или Беларуси и намерены использовать функционал Видеомагнитофон, то, перед тем, как приступить к развертыванию, необходимо обратиться в support@ntechlab.com для получения дистрибутива MongoDB. Далее следуйте инструкциям по установке в разделе Устранение неполадок с дистрибутивом MongoDB.

В этом разделе:

Установка apt-репозитория

Прежде всего установите apt-репозиторий FindFace следующим образом:

  1. Загрузите файл инсталлятора findface-multi-1.2-and-server-5.2.run.

  2. Поместите файл .run в любой каталог на сервере установки (например, /home/username).

  3. Из данного каталога сделайте файл .run исполняемым.

    chmod +x findface-multi-1.2-and-server-5.2.run
    
  4. Запустите файл .run.

    sudo ./findface-multi-1.2-and-server-5.2.run
    

    Инсталлятор задаст вам несколько вопросов, после чего проверит, соответствует ли сервер системным требованиям. Ответьте на вопросы надлежащим образом. Вопросы и ответы следующие:

    1. Устанавливаемый продукт: FindFace Multi.

    2. Тип установки: repo: Don't install anything, just set up the APT repository.

    3. Устанавливаемые модели нейронных сетей (при необходимости). Для того чтобы выбрать модели, сначала снимите выделение, введя в командной строке -*, затем введите через пробел порядковые номера нужных моделей, например: 1 3 4. Введите done для сохранения выбора и перехода к следующему шагу.

      Важно

      Необходимо установить модель детектора хотя бы для одного типа объекта (лицо, тело или автомобиль).

    После этого apt-репозиторий FindFace будет автоматически установлен.

Установка необходимого стороннего ПО

Для работы FindFace Multi необходимо стороннее программное обеспечение PostgreSQL, Pgbouncer, NATS, etcd и memcached. Выполните следующие действия:

  1. Установите пакеты с указанным сторонним ПО следующим образом:

    sudo apt update
    sudo apt install -y postgresql-10 nats-server etcd memcached pgbouncer
    
  2. Откройте файл конфигурации /etc/memcached.conf. Установите максимальный размер памяти в мегабайтах, используемый для хранения элементов memcached: -m 1024. Установите максимальный размер элемента: -I 16m. Если один или оба этих параметра отсутствуют, добавьте их в файл.

    sudo vi /etc/memcached.conf
    
    -m 1024
    -I 16m
    
  3. Предоставьте надежный пароль пользователю ntech (9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3 в примере ниже). Внесите учетные данные в список пользователей pgbouncer.

    echo '"ntech" "9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3"' | sudo tee -a /etc/pgbouncer/userlist.txt
    
  4. Настройте pgbouncer. Откройте файл /etc/pgbouncer/pgbouncer.ini и добавьте базу данных ffsecurity в раздел databases. Настройте указанные параметры, как показано в примере ниже. Остальные параметры должны быть закомментированы.

    sudo vi /etc/pgbouncer/pgbouncer.ini
    
    [databases]
    ffsecurity = dbname=ffsecurity host=localhost port=5432 user=ntech
    [pgbouncer]
    pidfile = /var/run/postgresql/pgbouncer.pid
    listen_addr = 127.0.0.1
    listen_port = 5439
    unix_socket_dir = /var/run/postgresql
    auth_type = plain
    auth_file = /etc/pgbouncer/userlist.txt
    pool_mode = transaction
    server_reset_query = DISCARD ALL
    max_client_conn = 16384
    default_pool_size = 20
    syslog = 1
    
  5. Добавьте сервисы стороннего ПО в автозагрузку Ubuntu и перезапустите их:

    sudo systemctl enable postgresql@10-main.service nats-server etcd.service memcached.service pgbouncer.service
    sudo systemctl restart postgresql@10-main.service nats-server etcd.service memcached.service pgbouncer.service
    

Обеспечение лицензирования

Важно

См. Лицензирование, чтобы узнать о политике лицензирования NtechLab.

Для обеспечения лицензирования FindFace Multi разверните findface-ntls, сервер лицензий в составе ядра FindFace.

Важно

Система на базе FindFace Multi может включать в себя только один экземпляр findface-ntls.

sudo apt update
sudo apt install -y findface-ntls
sudo systemctl enable findface-ntls.service && sudo systemctl start findface-ntls.service

Развертывание основной базы данных

Основная база данных FindFace Multi построена на PostgreSQL. Для того чтобы развернуть основную базу данных, выполните следующие действия:

  1. Откройте список пользователей pgbouncer /etc/pgbouncer/userlist.txt. Скопируйте пароль пользователя ntech (9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3 в примере ниже).

    sudo cat /etc/pgbouncer/userlist.txt
    
    "ntech" "9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3"
    
  2. В консоли PostgreSQL создайте пользователя ntech под скопированным паролем, а также базы данных ffsecurity и ffcounter PostgreSQL.

    sudo -u postgres psql
    
    postgres=# CREATE ROLE ntech WITH LOGIN PASSWORD '9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3';
    
    postgres=# CREATE DATABASE ffsecurity WITH OWNER ntech ENCODING 'UTF-8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE template0;
    
    postgres=# CREATE DATABASE ffcounter WITH OWNER ntech ENCODING 'UTF-8' LC_COLLATE='C.UTF-8' LC_CTYPE='C.UTF-8' TEMPLATE template0;
    

    Совет

    Для выхода из консоли PostgreSQL введите \q и нажмите Enter.

  3. Разрешите авторизацию в PostgreSQL по UID клиента сокета. Перезапустите PostgreSQL.

    echo 'local all ntech peer' | sudo tee -a /etc/postgresql/10/main/pg_hba.conf
    
    sudo systemctl restart postgresql@10-main.service
    

Развертывание ядра FindFace

Для развертывания ядра FindFace выполните следующие действия:

Совет

Вы можете найти описание компонентов ядра FindFace и их параметров конфигурации в разделах Архитектура и Подробно о компонентах.

  1. Для FindFace Multi на GPU установите драйверы NVIDIA.

    Важно

    Обязательно перезагрузите сервер после завершения установки драйверов NVIDIA. В противном случае при последующей установке GPU-компонентов произойдет сбой.

  2. Установите компоненты ядра FindFace:

    На CPU:

    sudo apt update
    sudo apt install -y findface-tarantool-server findface-extraction-api findface-sf-api findface-upload findface-video-manager findface-video-worker-cpu findface-liveness-api
    

    На GPU:

    sudo apt update
    sudo apt install -y findface-tarantool-server findface-extraction-api-gpu findface-sf-api findface-upload findface-video-manager findface-video-worker-gpu findface-liveness-api
    

    Примечание

    Если на физическом сервере установлено несколько видеокарт, см. Использование нескольких видеокарт.

    Важно

    Обязательно установите модели нейронных сетей на серверах с findface-extraction-api.

  3. В файле конфигурации /etc/findface-sf-api.ini включите параметр allow-return-facen.

    sudo vi /etc/findface-sf-api.ini
    
    ...
    limits:
      ...
      allow-return-facen: true
    ...
    
  4. Откройте файл конфигурации /etc/findface-video-worker-cpu.ini (/etc/findface-video-worker-gpu.ini). Задайте следующие параметры:

    • В параметре mgr-static укажите IP-адрес сервера findface-video-manager, который будет обеспечивать findface-video-worker настройками и списком видеопотоков для обработки.

    • В параметре capacity укажите максимальное количество видеопотоков, которое может быть обработано findface-video-worker.

    • В разделе streamer укажите IP-адрес и порт для доступа к видеостене. Значение port должно быть 18999. Установите tracks = true, чтобы улучшить отображение рамок с объектами на видеостене.

    sudo vi /etc/findface-video-worker-cpu.ini
    sudo vi /etc/findface-video-worker-gpu.ini
    
    mgr-static=127.0.0.1:18811
    
    capacity=10
    
    [streamer]
    #------------------------------
    ## streamer/shots webserver port, 0=disabled
    ## type:number env:CFG_STREAMER_PORT longopt:--streamer-port
    port = 18999
    
    ## streamer url - how to access this worker on streamer_port
    ## type:string env:CFG_STREAMER_URL longopt:--streamer-url
    url = 127.0.0.1:18999
    
    ## use tracks instead detects for streamer
    ## type:bool env:CFG_STREAMER_TRACKS longopt:--streamer-tracks
    tracks = true
    
  5. Добавьте сервисы ядра FindFace в автозагрузку Ubuntu и запустите их.

    На CPU:

    sudo systemctl enable findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-cpu findface-liveness-api
    sudo systemctl start findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-cpu findface-liveness-api
    

    На GPU:

    sudo systemctl enable findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-gpu findface-liveness-api
    sudo systemctl start findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-gpu findface-liveness-api
    

Развертывание прикладного модуля FindFace Multi и базы данных векторов признаков

Для развертывания прикладного модуля FindFace Multi, выполните следующие действия:

  1. Установите компоненты findface-security, findface-security-ui и findface-counter. Добавьте сервис findface-counter в автозагрузку Ubuntu и запустите его.

    sudo apt update
    sudo apt install -y findface-security findface-security-ui findface-counter
    sudo systemctl enable findface-counter && sudo systemctl start findface-counter
    
  2. Перенесите схему базы данных из FindFace Multi в PostgreSQL, создайте с предустановленные пользовательские роли и первого администратора (т. н. Супер Администратора).

    Важно

    Супер Администратор не может лишиться прав администратора даже при смене роли.

    sudo findface-security migrate
    sudo findface-security create_groups
    sudo findface-security create_default_user
    
  3. Создайте структуру базы данных векторов признаков на основе Tarantool, выполнив следующую команду.

    sudo findface-security make_tnt_schema | sudo tee /etc/findface-security/tnt_schema.lua
    
  4. Откройте файл конфигурации /etc/tarantool/instances.available/FindFace.lua. Проверьте, содержит ли файл команду dofile, а также определения meta_indexes и meta_scheme, как показано в примере ниже. При необходимости измените файл.

    sudo vi /etc/tarantool/instances.available/FindFace.lua
    
    dofile("/etc/findface-security/tnt_schema.lua")
    -- host:port to bind, HTTP API
    FindFace = require("FindFace")
    FindFace.start("127.0.0.1", 8101, {
        license_ntls_server="127.0.0.1:3133",
        meta_indexes=meta_indexes,
        meta_scheme=meta_scheme
    })
    

    Важно

    IP-адрес и номер порта, указанные в секции shards файла конфигурации /etc/findface-sf-api.ini, должны быть идентичны указанным в секции FindFace.start.

    sudo vi /etc/tarantool/instances.available/FindFace.lua
    
    ...
    
    FindFace.start("127.0.0.1", 8101...)
    
    sudo vi /etc/findface-sf-api.ini
    
    storage-api:
      ...
      shards:
      - master: http://127.0.0.1:8101/v2/
      ...
    

    Важно

    Если вы внесли изменения в файл конфигурации /etc/findface-sf-api.ini, обязательно перезапустите сервис findface-sf-api:

    sudo systemctl restart findface-sf-api.service
    
  5. Добавьте сервис findface-tarantool-server в автозагрузку Ubuntu и запустите его.

    sudo systemctl enable tarantool@FindFace.service && sudo systemctl start tarantool@FindFace.service
    
  6. Откройте файл конфигурации /etc/findface-security/config.py. Задайте следующие параметры:

    Совет

    Просмотреть исходную версию файла /etc/findface-security/config.py вы можете здесь.

    • SERVICE_EXTERNAL_ADDRESS: IP-адрес или URL FindFace Multi, являющимся приоритетным для Genetec и вебхуков. Если параметр не задан, система будет использовать для работы с данным функционалом значение EXTERNAL_ADDRESS.

      Важно

      Для использования Genetec и вебхуков обязательно укажите по крайней мере один из параметров: SERVICE_EXTERNAL_ADDRESS/ EXTERNAL_ADDRESS.

    • EXTERNAL_ADDRESS: (опционально) IP-адрес или URL, который используется для доступа в веб-интерфейс FindFace Multi. Если этот параметр не указан вручную, система автоматически определяет его как внешний IP-адрес сервера.

      Примечание

      Для доступа в FindFace Multi вы можете использовать оба IP-адреса: как автоопределенный, так и указанный вручную в EXTERNAL_ADDRESS.

    • VIDEO_DETECTOR_TOKEN: придумайте токен и укажите его в данном параметре, чтобы авторизовать модуль видеодетекции объектов.

      Совет

      Рекомендуется сгенерировать токен, выполнив следующую команду:

      pwgen -sncy 50 1|tr "'" "."
      
    • VIDEO_MANAGER_ADDRESS: IP-адрес сервера findface-video-manager.

    • NTLS_HTTP_URL: IP-адрес сервера findface-ntls.

    • ROUTER_URL: IP-адрес сервера findface-security, который будет получать обнаруженные на видео объекты от экземпляров findface-video-worker. Адрес указывается внутренний или внешний, в зависимости от сети, в которой findface-video-worker взаимодействует с findface-security. Измените порт по умолчанию с учетом настроек переадресации с HTTP на HTTPS или вообще не указывайте его, оставив только IP-адрес.

    • SF_API_ADDRESS: IP-адрес сервера findface-sf-api.

    • DATABASES (раздел): заполните его следующим образом: 'PORT': 5439, 'USER': 'ntech', 'PASSWORD': ‘<пароль из /etc/pgbouncer/userlist.txt>’ (см. Установка необходимого стороннего ПО).

    Совет

    Если необходимо обеспечить безопасность данных, включите SSL-шифрование.

    Совет

    При необходимости установите ’IGNORE_UNMATCHED’: True, чтобы отключить запись события в базу данных, если обнаруженный объект отсутствует в списках наблюдения. Данную настройку рекомендуется использовать при большом количестве объектов.

  7. Используя приведенную ниже команду, сгенерируйте ключ подписи для шифрования сессии (используется в Django) и задайте его в параметре SECRET_KEY.

    pwgen -sncy 50 1|tr "'" "."
    
  8. Запустите сервисы.

    sudo systemctl enable findface-security
    sudo systemctl start findface-security
    
  9. Отключите сервер nginx, активный по умолчанию, и добавьте сервер findface-security в список включенных серверов. Перезапустите nginx.

    sudo rm /etc/nginx/sites-enabled/default
    
    sudo ln -s /etc/nginx/sites-available/ffsecurity-nginx.conf /etc/nginx/sites-enabled/
    
    sudo nginx -s reload
    
  10. Обеспечение лицензирования:

    Важно

    Для того чтобы войти в первый раз в систему, используйте учетную запись Cуперадминистратора admin:admin, созданную по умолчанию.

Примечание

Для создания других пользователей или смены пароля Суперадминистратора см. раздел Управление пользователями.

Важно

Для того чтобы сохранить совместимость FindFace Multi со средой установки, настоятельно рекомендуется отключить автоматическое обновление Ubuntu. В этом случае вы сможете обновлять ОС вручную, контролируя процесс обновления отдельных пакетов.

Для отключения автоматического обновления Ubuntu выполните следующие команды:

sudo apt-get remove unattended-upgrades
sudo systemctl stop apt-daily.timer
sudo systemctl disable apt-daily.timer
sudo systemctl disable apt-daily.service
sudo systemctl daemon-reload

Важно

Сервисы FindFace Multi логируют большой объем данных, что в конечном итоге может привести к чрезмерной загрузке диска. Чтобы этого не произошло, рекомендуется отключить сервис rsyslog из-за его неоптимальной схемы ротации логов и вместо него использовать правильно настроенный сервис systemd-journal. См. пошаговые инструкции в разделе Логи сервисов.