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

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

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

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

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

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

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

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

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

    sudo ./findface-security-and-server-4.3.run
    

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

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

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

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

      Важно

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

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

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

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

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

    На Ubuntu 16.04:

    sudo apt update
    sudo apt install -y postgresql-9.5 redis-server etcd memcached pgbouncer
    

    На Ubuntu 18.04:

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

    sudo vi /etc/memcached.conf
    
    -m 512
    -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]
    logfile = /var/log/postgresql/pgbouncer.log
    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 и запустите их:

    На Ubuntu 16.04:

    sudo systemctl enable postgresql@9.5-main.service redis-server etcd.service memcached.service pgbouncer.service
    sudo systemctl start postgresql@9.5-main.service redis-server etcd.service memcached.service pgbouncer.service
    

    На Ubuntu 18.04:

    sudo systemctl enable postgresql@10-main.service redis-server etcd.service memcached.service pgbouncer.service
    sudo systemctl start postgresql@10-main.service redis-server etcd.service memcached.service pgbouncer.service
    

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

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

Лицензирование FindFace Security обеспечивается следующим образом:

  1. Разверните findface-ntls, сервер лицензий в составе ядра FindFace.

    Важно

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

    Совет

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

    sudo apt update
    sudo apt install -y findface-ntls
    sudo systemctl enable findface-ntls.service && sudo systemctl start findface-ntls.service
    
  2. Загрузите файл лицензии через веб-интерфейс findface-ntls одним из следующих способов:

    • Откройте веб-интерфейс findface-ntls: http://<NTLS_IP_address>:3185/#/. Загрузите файл лицензии.

      Совет

      Впоследствии используйте основной веб-интерфейс FindFace Security, чтобы посмотреть информацию о лицензиях, обновить или продлить лицензию (Настройки -> Лицензия).

    • Непосредственно положите файл лицензии в предназначенную для этого папку (по умолчанию, /opt/ntech/license, может быть изменена в файле конфигурации /etc/findface-ntls.cfg).

  3. При лицензировании в закрытой системе вставьте USB-ключ аппаратной защиты в USB-порт.

  4. Если лицензируемые компоненты установлены на удаленных серверах, впоследствии укажите IP-адрес сервера findface-ntls в их файлах конфигурации. Подробнее см. findface-extraction-api, findface-tarantool-server, Видеодетекция лиц: findface-video-manager и findface-video-worker.

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

Основная база данных FindFace Security построена на 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.

    На Ubuntu 16.04:

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

    На Ubuntu 18.04:

    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:

    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-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.

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

    sudo vi /etc/findface-sf-api.ini
    
    ...
    limits:
      ...
      allow-return-facen: true
    ...
    
  3. В файле конфигурации findface-extraction-api включите модели распознавания атрибутов лица, таких как пол, возраст, эмоции, очки, борода и медицинская маска, в зависимости от ваших нужд. Удостоверьтесь, что для каждой модели вы указали правильный тип ускорения CPU или GPU: он должен совпадать с типом ускорения findface-extraction-api. Обратите внимание, что findface-extraction-api на CPU может работать только с CPU-моделями, в то время как findface-extraction-api на GPU поддерживает как CPU-, так и GPU-модели. Подробнее см. Распознавание атрибутов лица.

    sudo vi /etc/findface-extraction-api.ini
    
    models:
      age: faceattr/age.v1.cpu.fnk
      emotions: faceattr/emotions.v1.cpu.fnk
      face: face/ifruit_320.cpu.fnk
      gender: faceattr/gender.v2.cpu.fnk
      beard: faceattr/beard.v0.cpu.fnk
      glasses3: faceattr/glasses3.v0.cpu.fnk
      medmask3: faceattr/medmask3.v2.cpu.fnk
    

    Доступны следующие модели:

    Атрибут лица Ускорение Параметр в файле конфигурации
    биометрия лица CPU face: face/ifruit_320.cpu.fnk face: face/ifruit_160.cpu.fnk
    GPU face: face/ifruit_320.gpu.fnk face: face/ifruit_160.gpu.fnk
    возраст CPU age: faceattr/age.v1.cpu.fnk
    GPU age: faceattr/age.v1.gpu.fnk
    пол CPU gender: faceattr/gender.v2.cpu.fnk
    GPU gender: faceattr/gender.v2.gpu.fnk
    эмоции CPU emotions: faceattr/emotions.v1.cpu.fnk
    GPU emotions: faceattr/emotions.v1.gpu.fnk
    очки CPU glasses3: faceattr/glasses3.v0.cpu.fnk
    GPU glasses3: faceattr/glasses3.v0.gpu.fnk
    борода CPU beard: faceattr/beard.v0.cpu.fnk
    GPU beard: faceattr/beard.v0.gpu.fnk
    медицинская маска CPU medmask3: faceattr/medmask3.v2.cpu.fnk
    GPU medmask3: faceattr/medmask3.v2.gpu.fnk

    Совет

    Для того чтобы отключить модель распознавания, передайте в соответствующий параметр пустое значение. Не удаляйте сам параметр, поскольку в этом случае будет выполняться поиск модели по умолчанию.

    models:
      gender: ""
      age: ""
      emotions: ""
    
  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
    sudo systemctl start findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-cpu
    

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

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

  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 Security в 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.enabled/FindFace.lua. Проверьте, содержит ли файл команду dofile, а также определения meta_indexes и meta_scheme, как показано в примере ниже.

    sudo vi /etc/tarantool/instances.enabled/FindFace.lua
    
    dofile("/etc/findface-security/tnt_schema.lua")
    -- host:port to bind, HTTP API
    FindFace = require("FindFace")
    FindFace.start("127.0.0.1", 8001, {
        license_ntls_server="127.0.0.1:3133",
        meta_indexes=meta_indexes,
        meta_scheme = meta_scheme
    })
    
  5. Добавьте сервис findface-tarantool-server в автозагрузку Ubuntu и запустите его.

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

    • SERVICE_EXTERNAL_ADDRESS: IP-адрес или URL FindFace Security, являющимся приоритетным для Genetec и вебхуков. Если параметр не задан, система использует для работы с данным функционалом EXTERNAL_ADDRESS. Для использования Genetec и вебхуков обязательно укажите по крайней мере один из параметров SERVICE_EXTERNAL_ADDRESS/ EXTERNAL_ADDRESS.
    • EXTERNAL_ADDRESS: (Опционально) IP-адрес или URL, который используется для доступа к веб-интерфейсу FindFace Security. Если параметр не задан, система автоматически определяет его как внешний IP-адрес. Для доступа в FindFace Security вы можете использовать оба 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. Данный параметр определяет минимальное качество лица на фотографии в досье. Если качество лица хуже минимального, пользователь не сможет загрузить такую фотографию в досье. Прямые изображения лиц анфас считаются наиболее качественными.

    Важно

    Если вы включили модели распознавания в файле конфигурации findface-extraction-api, добавьте следующую строку в секцию FFSECURITY: ’EVENTS_FEATURES’: [‘gender’, ‘age’, ‘emotions’, ‘beard’, ‘glasses’, ‘medmask’], в зависимости от того, какие модели были включены. Данная строка должна быть расположена между строками SF_API_ADDRESS и LIVENESS_THRESHOLD, как показано в примере ниже. Подробнее см. Распознавание атрибутов лица.

    sudo vi /etc/findface-security/config.py
    
    # ==============================================================================
    # FindFace Security configuration file
    # ==============================================================================
    #
    # This config file is written in Python's syntax and interpreted at FindFace Security
    # service startup. You have to restart the service in order to apply changes.
    #
    # If you have any questions or suggestions, please contact us at [email protected]
    # ==============================================================================
    # GENERAL SETTINGS
    # ==============================================================================
    ​
    # enables additional logs
    DEBUG = False
    ​
    # media files directory
    MEDIA_ROOT = "/var/lib/findface-security/uploads"
    
    # static files directory
    STATIC_ROOT = "/var/lib/findface-security/static"
    
    # language code
    LANGUAGE_CODE = 'en-us'
    
    # time zone
    TIME_ZONE = 'UTC'
    
    # Database is used by FindFace Security to store cameras,
    # camera groups, watchlists and so on. Only PostgreSQL is supported.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'DISABLE_SERVER_SIDE_CURSORS': True,
            'NAME': 'ffsecurity',
            'PORT': 5439, 'USER': 'ntech', 'PASSWORD': 'EEgXlepjmz05YwJr2jcJFq38iJRdIRdS'
        }
    }
    
    # Signature key for session encryption
    # Use pwgen -sncy 50 1|tr "'" "." to generate your own unique key
    SECRET_KEY = '85d3d81db97cc7b71a80276662463b06'
    
    # ==============================================================================
    # FINDFACE SECURITY SETTINGS
    # ==============================================================================
    
    # SERVICE_EXTERNAL_ADDRESS is prioritized for FFSecurity webhooks and Genetec plugin.
    # EXTERNAL_ADDRESS is used instead if SERVICE_EXTERNAL_ADDRESS is not provided.
    # You must provide either SERVICE_EXTERNAL_ADDRESS or EXTERNAL_ADDRESS in order
    # to be able to work with FFSecurity webhooks and Genetec plugin.
    SERVICE_EXTERNAL_ADDRESS = 'http://172.17.46.149'
    
    # EXTERNAL_ADDRESS is used to access objects created inside FFSecurity via external links.
    EXTERNAL_ADDRESS = ''
    
    # - Base FFSecurity settings -
    
    FFSECURITY = {
        # findface-video-worker authorization token
        'VIDEO_DETECTOR_TOKEN': '82107bd615991854996937d9b6698966',
    
        # base face matching confidence threshold
        'CONFIDENCE_THRESHOLD': 0.739,
    
        # episodes specific matching threshold that is used to join faces in an episode
        'EPISODES_THRESHOLD': 0.689,
    
        # minimum face quality sufficient to add it to a dossier
        'MINIMUM_DOSSIER_QUALITY': 0.45,
    
        # skip all unmatched faces
        'IGNORE_UNMATCHED': False,
    
        # matched events older than EVENTS_MAX_MATCHED_AGE will be automatically
        # deleted (every night at 1:17 am by default)
        'EVENTS_MAX_MATCHED_AGE': 0,
    
        # same as above but for unmatched events
        'EVENTS_MAX_UNMATCHED_AGE': 30,
    
        # same as EVENTS_MAX_MATCHED_AGE but for matched full frame images only (thumbnails won't be deleted)
        'EVENTS_MAX_FULLFRAME_UNMATCHED_AGE': 30,
    
        # same as above but for unmatched full frame images only (thumbnails won't be deleted)
        'EVENTS_MAX_FULLFRAME_MATCHED_AGE': 30,
    
        # same as above but for counter records
        'COUNTER_RECORDS_MAX_AGE': 30,
    
        # same as above but for person events (if no person events left in person, it is deleted too)
        'PERSON_EVENTS_MAX_AGE': 90,
    
        # when closing episode, delete all events except the best episode event
        'EPISODE_KEEP_ONLY_BEST_EVENT': False,
    
        # NTLS licence server url
        'NTLS_HTTP_URL': 'http://127.0.0.1:3185',
    
        # findface-video-worker face posting address,
        # it must be set to either FFSecurity EXTERNAL_ADDRESS (by default)
        # or findface-facerouter url (in some specific cases)
        'ROUTER_URL': 'http://127.0.0.1',
    
        # send serialized dossiers, dossier-lists, camera and camera groups in webhooks
        'VERBOSE_WEBHOOKS': False,
    
        'THUMBNAIL_JPEG_QUALITY': 75,
    
        # FFServer services urls
        'VIDEO_MANAGER_ADDRESS': 'http://127.0.0.1:18810',
        'SF_API_ADDRESS': 'http://127.0.0.1:18411',
        'FFCOUNTER_ADDRESS': 'http://127.0.0.1:17300',
    
        # additional events features.
        # make sure that corresponding extractors
        # are licensed and enabled at findface-extraction-api config file.
        # available features are: gender, age, emotions, beard, glasses, medmask.
        'EVENTS_FEATURES': [],
    
        # feature specific confidence thresholds
        'LIVENESS_THRESHOLD': 0.75,
        'EMOTIONS_THRESHOLD': 0.25,
        'BEARD_THRESHOLD': 0.7,
    
        # counters full frame saving options:
        # `always` - save always
        # `detect` - save only if faces or silhouettes have been detected
        # `never` - never save full frames
        'COUNTERS_SAVE_FULLFRAME': 'always',
        'COUNTERS_FULLFRAME_JPEG_QUALITY': 75,
        'COUNTERS_THUMBNAIL_JPEG_QUALITY': 75,
    
        # max camera frames_dropped percent
        'MAX_CAMERA_DROPPED_FRAMES': {'yellow': 0.1, 'red': 0.3},
        # max camera faces_failed percent
        'MAX_CAMERA_FAILED_FACES': {'yellow': 0.1, 'red': 0.3},
    
        # -- Persons configuration --
    
        # rrule (recurrence rule) for scheduling persons clusterization
        # WARNING: all scheduling works with UTC time and NOT aware of any timezone
        'PERSONS_CLUSTERIZATION_SCHEDULE': 'RRULE:FREQ=DAILY;INTERVAL=1;WKST=MO;BYHOUR=0;BYMINUTE=0',
    
        # face to person matching confidence threshold
        'PERSONS_CONFIDENCE_THRESHOLD': 0.739,
    
        # minimum required face quality for person creation
        'PERSON_EVENT_MIN_QUALITY': 0.45,
        # minimum required number events in episode for person creation
        'PERSON_EVENT_MIN_EPISODE_EVENTS': 1,
    
        # maximum concurrent video manager jobs for video archives processing
        'MAX_VIDEO_ARCHIVE_JOBS': 3,
    
        # -- Optional parameters --
    
        # Edit CUSTOM_FIELDS section to customize dossier content.
        # Below is an example for integration FindFace Security with Sigur.
    
        # 'CUSTOM_FIELDS': {
        #     'dossier_meta': {
        #         'items': [
        #             {
        #                 'name': 'personid',
        #                 'default': '',
        #                 'label': 'PersonID',
        #                 'display': ['list', 'form'],
        #                 'description': 'Sigur person ID'
        #             },
        #             {
        #                 'name': 'firstname',
        #                 'default': '',
        #                 'label': 'First Name',
        #                 'display': ['list', 'form'],
        #                 'description': 'Sigur first name'
        #             },
        #             {
        #                 'name': 'lastname',
        #                 'default': '',
        #                 'label': 'Last Name',
        #                 'display': ['list', 'form'],
        #                 'description': 'Sigur last name'
        #             },
        #             {
        #                 'name': 'version',
        #                 'default': '',
        #                 'label': 'Version',
        #                 'display': ['list', 'form'],
        #                 'description': 'Sigur photo version'
        #             }
        #         ],
        #         'filters': [
        #             {
        #                 'name': 'personid',
        #                 'label': 'Sigur person ID filter',
        #                 'field': 'personid'
        #             }
        #         ]
        #     }
        # },
    
        # maximum event age in seconds than could be added to an episode.
        # 'EPISODE_SEARCH_INTERVAL': 60,
        # If none of these events matched, new episode is created.
    
        # maximum episode duration (episode is closed after)
        # 'EPISODE_MAX_DURATION': 300,
    
        # if no new event added to an episode during this timeout, episode will be closed.
        # 'EPISODE_EVENT_TIMEOUT': 30,
    
        # maximum created thumbnail width
        # 'THUMBNAIL_MAX_WIDTH': 320,
    
        # social backend url. Contact support for additional information.
        # 'SOCIAL_BACKEND': None,
    
        # 'SOCIAL_HEADERS': {},
    
        # unacknowledged events notification interval
        # 'UNACKNOWLEDGED_NOTIFY_INTERVAL': 1,
    }
    
    # - FindFace Security user interface configuration dictionary -
    
    FFSECURITY_UI_CONFIG = {
        "features": {"temperature": True},
        "event": {
            "features": {
                "f_gender_class": ["male", "female"],
                "age": {
                    "f_age_gte": "",
                    "f_age_lte": ""
                },
                "f_emotions_class": ["angry", "disgust", "fear", "happy", "sad", "surprise", "neutral"],
                "f_glasses_class": ["none", "eye", "sun"],
                "f_beard_class": ["none", "beard"],
                "f_liveness_class": ["real", "fake"],
                "f_medmask_class": ["none", "correct"],
            }
        }
    }
    
    # -- ASGI-server configuration --
    # consult support before changing these settings.
    
    # per worker thread pool size.
    ASGI_THREADS = 32
    
    UVICORN_SETTINGS = {
        # worker processes count, 'auto' sets it to logical cpu count
        'workers': 'auto',
        'host': 'localhost',
        'port': 8002,
        # websocket worker processes count,
        # 'auto' sets it to logical cpu count, but not more than 8.
        'ws-workers': 'auto',
        'ws-host': 'localhost',
        'ws-port': 8003,
    }
    
    # disable unused services to increase
    # overall system performance in some cases.
    SERVICES = {
        "ffsecurity": {
            "episodes": True,
            "webhooks": True,
            # use queue manager to prevent drops of video archive events
            "video_archive_events_manager": True,
            "persons": False,
        }
    }
    
    # ==============================================================================
    # FINDFACE SECURITY PLUGINS
    # ==============================================================================
    # Uncomment lines below to enable plugins. Please consult documentation for
    # a plugin specific settings.
    
    # =============== Axxon ================
    # INSTALLED_APPS.append('ffsecurity_axxon')
    
    # FFSECURITY['AXXON'] = [
    #     {
    #         'name': 'server_name',
    #         'api': 'http://example.com/',
    #         'rtsp': 'rtsp://example.com:554/',
    #         'user': 'user',
    #         'password': 'password',
    #     }
    # ]
    
    # FFSECURITY_UI_CONFIG['dossier'] = {
    #    'video': True,
    # }
    
    
    # =============== Genetec ================
    # INSTALLED_APPS.append('ffsecurity_genetec')
    
    
    # ================ Sova ==================
    # INSTALLED_APPS.append('ffsecurity_sova')
    
    
    # ================ Sigur =================
    # keep in mind, that SIGUR plugin also uses CUSTOM_FIELDS and THUMBNAIL_MAX_WIDTH settings
    # INSTALLED_APPS.append('ffsecurity_sigur')
    # SIGUR = {
    #     'LOGIN': 'admin',
    #     'PASSWORD': 'admin',
    #     'MF_SELECTOR': 'biggest',  # what to do with several faces in sigur person photo; allowed ['biggest', 'reject']
    #     'ONLY_RT_EVENTS': True  # only events with bs_type == realtime
    # }
    
    
    # ======= CryptoPRO authentication =======
    # INSTALLED_APPS.append('ffsecurity_cproauth')
    # REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES'] = [
    #     'ffsecurity.auth.TokenAuthentication',
    #     'ffsecurity_cproauth.auth.CryptoProOrTokenAuthentication'
    # ]
    
    
    # ========== DossierLists sync ===========
    # INSTALLED_APPS.append('ffsecurity_sync')
    
    # token must be identical on master and slave
    # use pwgen -s 64 1
    # SYNC_TOKEN = 'change_me'
    
    # SYNC_TIME = {
    #     # 24 hour format
    #     'hour': 3,
    #     'minute': 0,
    # }
    
    
    # ============== Puppeteer ===============
    # INSTALLED_APPS.append('ffsecurity_puppeteer')
    
    # PUPPETEER_CONFIG = {
    #     'UNSAVED_RESULTS_DELETION_TIMEOUT': 3600,        # maximum lifetime of search results not saved involuntarily
    #     'puppets': [
    #         {
    #             'id': 'first_puppet',                    # puppet ID
    #             'url': 'http://1.1.1.1:8010/',           # puppet URL
    #             'token': 'first_puppet_token',           # use pwgen -s 64 1 (should match the token in puppet)
    #             'facen_model': 'ifruit_320'              # face model in puppet
    #         },
    #         {
    #             'id': 'second_puppet',
    #             'url': 'http://1.1.1.1:8010/',
    #             'token': 'second_puppet_token',
    #
    #              # if remote installation has a different face model than the one used in FFSecurity -
    #              # you need to specify its name and ExtractionAPI URL where the corresponding face model is specified
    #             'facen_model': 'grapefruit_480',
    #             'extractor': 'http://127.0.0.1:18667',
    #         },
    #     ]
    # }
    
  7. Используя команду pwgen -sncy 50 1|tr “’” “.”, сгенерируйте ключ подписи для шифрования сессии (используется в Django) и задайте его в параметре SECRET_KEY.

  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