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

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

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

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

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

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

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

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

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

    sudo ./findface-multi-1.0-and-server-5.0.1.run
    

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

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

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

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

      Важно

      Должна быть установлена как минимум одна модель для биометрии лица.

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

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

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

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

    sudo apt update
    sudo apt install -y postgresql-10 redis-server etcd memcached pgbouncer
    
  2. Откройте файл конфигурации /etc/memcached.conf. Установите максимальный размер памяти в мегабайтах, используемый для хранения элементов: -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 redis-server etcd.service memcached.service pgbouncer.service
    sudo systemctl restart postgresql@10-main.service redis-server etcd.service memcached.service pgbouncer.service
    

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

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

Для обеспечения лицензирования 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.

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

    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
    

    Примечание

    Для того чтобы установить компонент findface-extraction-api с GPU-ускорением, вместо findface-extraction-api в команде введите findface-extraction-api-gpu.

    Примечание

    Для того чтобы установить компонент findface-video-worker с GPU-ускорением, вместо findface-video-worker-cpu в команде введите findface-video-worker-gpu. Если на физическом сервере установлено несколько видеокарт, см. Использование нескольких видеокарт.

    Важно

    Обязательно установите модели нейронных сетей на серверах с 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.

    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
    
  5. Добавьте сервисы ядра FindFace в автозагрузку Ubuntu и запустите их.

    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
    

Развертывание прикладного модуля 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.

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

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

    • 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, чтобы отключить запись события в базу данных, если обнаруженное лицо отсутствует в списках наблюдения (верификация дала отрицательный результат). Данную настройку рекомендуется использовать при большом количестве посетителей. Пороговая степень схожести при верификации лиц определяется параметром CONFIDENCE_THRESHOLD.

    Совет

    Не рекомендуется редактировать значение параметра MINIMUM_DOSSIER_QUALITY. Данный параметр определяет минимальное качество лица на фотографии в досье. Если качество лица хуже минимального, пользователь не сможет загрузить такую фотографию в досье. Прямые изображения лиц анфас считаются наиболее качественными.

  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. Обеспечьте лицензирование. Используйте веб-интерфейс FindFace Multi, чтобы загрузить лицензионный файл, который вы до этого получили от своего менеджера (Настройки -> Лицензия). Для лицензирования в закрытой системе вставьте ключ аппаратной защиты в USB-порт.

    Важно

    Для того чтобы войти в первый раз в систему, используйте учетную запись 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