> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-pt-br/sdks/backend-sdk/selphid/installation/installation_instructions.md).

# Instalação e implantação do SDK

## 1. Introdução

Este documento inclui a descrição dos componentes fornecidos no produto **FacePhi SelphID SDK**.

Este produto incorpora várias bibliotecas cuja API permite incorporar em suas soluções de autenticação e identificação biométrica funcionalidades que utilizam imagens e/ou templates faciais, diagnóstico de vida passivo, validação de dados e extração de informações de documentos de identidade.

A seguir, são detalhados os componentes fornecidos e os passos necessários para instalar o SDK nos sistemas operacionais **Windows** e **Linux**.

## 2. Conteúdo do SelphID SDK

O Kit de Desenvolvimento de Software, **FacePhi SelphID SDK**, contém um conjunto de bibliotecas disponíveis para as linguagens de programação Java, .NET e C++ que permitem ao desenvolvedor integrar as principais funcionalidades oferecidas por este produto:

* Leitura e validação de informações de documentos de identidade digitais (OCR).
* Autenticação (1:1) e Identificação (1:N) de usuários por meio de reconhecimento facial, utilizando imagens ou templates.
* Diagnóstico de vida passivo do usuário por meio de imagens (sem necessidade de colaboração do usuário).

O conteúdo de **SelphID SDK** é o seguinte:

* Bibliotecas nas linguagens de programação C++, Java e .Net (.Net apenas na versão do Windows).
* Documentação da API de Java e da API de .Net, ambas em formato html, com informações sobre todos os métodos suportados em cada uma das classes.
* Arquivo de configuração para a licença do produto e arquivos de uso e de log.
* Arquivos de exemplo de programação de serviços web em .Net/Java.
* Arquivos de cabeçalho (header) de C++.

São fornecidos diferentes produtos para os sistemas operacionais Windows e Linux.

* Produtos disponíveis para Windows.
* **fphi-selphid-sdk-win64\_x.x.x.x** (Windows 64 bits).
* Produtos disponíveis para Linux.
* **fphi-selphid-sdk-linux64\_x.x.x.x** (distribuições baseadas em Linux Ubuntu).

{% hint style="info" %}
**x.x.x.x** pode variar e corresponde à versão do produto fornecida por **FacePhi**.
{% endhint %}

![](/files/ecfaa2af5593f2487853377d7a153b0b7c270962)

## 3. Instalação do SDK

Neste capítulo são descritos os passos para instalar o SelphID SDK.

### 3.1 Instalação do Kit de Desenvolvimento de Software

A instalação do SelphID SDK é realizada descompactando o conteúdo fornecido em um diretório do seu sistema. Os diretórios recomendados são os seguintes:

* Diretórios de instalação recomendados no Windows: **C:\Program Files\FacePhi\Sdk\SelphId\x.x.x.x**
  * Para descompactar o SDK do Windows, basta descompactar o zip no caminho indicado.
* Diretórios de instalação recomendados no Linux: **/opt/facephi/sdk/selphid/x.x.x.x**
  * Para descompactar o SDK do Linux, é imprescindível fazê-lo no mesmo servidor Linux onde são criados os links simbólicos. Para isso, use o seguinte comando:

    ```bash
    $ tar -xvzf fphi-selphid-sdk-linux64-x.x.x.x.tar.gz
    ```

{% hint style="info" %}
Sendo "x.x.x.x" a versão do produto fornecida pela FacePhi.
{% endhint %}

{% hint style="warning" %}
Após a instalação, as seguintes pastas devem aparecer no diretório selecionado:

* Api: Contém a descrição da API de programação.
* Bin: Contém os arquivos binários.
  * Windows: Bibliotecas de execução e aplicativos.
  * Linux: Aplicativos.
* Config: Contém os arquivos de configuração.
* Data: Contém os arquivos de dados necessários para o funcionamento correto em tempo de execução.
* Doc: Contém a documentação da eula e o arquivo de versão do sdk.
* Examples: Contém exemplos de programação.
* Lib: Contém os arquivos e bibliotecas necessários para os processos de compilação.
  {% endhint %}

### 3.2 Configuração do SDK

Para que as bibliotecas incluídas no SDK estejam disponíveis no sistema, é necessário realizar as ações descritas a seguir:

* **Criar a variável de ambiente FACEPHI\_SELPHID\_INSTALL\_PATH**

  O valor desta variável de ambiente deve conter o diretório de instalação selecionado no [ponto anterior 3.1](#31-instalación-del-software-development-kit).

  ```bash
  # Windows
  set FACEPHI_SELPHID_INSTALL_PATH=C:\Program Files\FacePhi\Sdk\SelphId\x.x.x.x
  ```

  ```bash
  # Linux
  export FACEPHI_SELPHID_INSTALL_PATH=/opt/facephi/sdk/selphid/x.x.x.x
  ```
* **Adicionar o diretório de bibliotecas à variável de ambiente PATH**

  Uma vez criada a variável de ambiente anterior, inclua o diretório "bin" (para Windows) ou "lib/lib" (para Linux) do SDK na variável de ambiente `PATH` (Windows) ou `LD_LIBRARY_PATH` (Linux) do sistema:

  ```bash
  # Windows
  set PATH=%PATH%;%FACEPHI_SELPHID_INSTALL_PATH%\bin
  ```

  ```bash
  # Linux
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FACEPHI_SELPHID_INSTALL_PATH/lib/lib
  ```

### 3.3 Variáveis de ambiente

Podem ser definidas diferentes variáveis de ambiente para configurar o funcionamento do SDK:

* `FACEPHI_SELPHID_FACIAL_LICPATH_KEY` (obrigatória). Caminho para o arquivo `license.lic`. Ex. `/opt/facephi/sdk/selphid/x.x.x.x/config/license.lic`.
* `FACEPHI_SELPHID_DEBUGPATH_KEY` (obrigatória). Caminho para o arquivo onde o log será gravado. Ex. `/opt/facephi/sdk/selphid/x.x.x.x/config/selphidDebug.log`.
* `FACEPHI_SELPHID_USAGEPATH_KEY` (obrigatória). Caminho onde o arquivo de dados de uso será armazenado. Ex. `/opt/facephi/sdk/selphid/x.x.x.x/config/selphidUsage.db`.
* `FACEPHI_SELPHID_FACIALLIVENESS_PATH_KEY` (obrigatória). Caminho para a pasta `/data` no seu sistema de arquivos local. Ex. `/opt/facephi/sdk/selphid/x.x.x.x/data`.
* `FACEPHI_SELPHID_FACIALAUTHENTICATION_THRESHOLD` (opcional). Valor de similaridade 0-100 para determinar se uma autenticação é positiva ou negativa. Por padrão `65`.
* `FACEPHI_SELPHID_FACIALLIVENESS_THRESHOLD` (opcional). Limiar 0-100 para determinar se uma operação de vida é positiva (Live) ou negativa (NoLive). Por padrão `50`.
* `FACEPHI_SELPHID_FACIALEXTRACTOR_NUM_THREADS` (opcional) 1-8 Número de threads (núcleos) atribuídos para as operações de extração e autenticação. Por padrão `4`.
* `FACEPHI_SELPHID_FACIALLIVENESS_NUM_THREADS` (opcional) 1-8 Número de threads (núcleos) atribuídos para as operações de vida. Por padrão `4`.
* `FACEPHI_SELPHID_FACIALLIVENESS_IAD` (opcional) (`enable` ou `disable`) Ativa os filtros de `Detecção de Ataque de Injeção` para as operações de vida. Por padrão `enable`.
* `FACEPHI_SELPHID_FACIALLIVENESS_DEPTH` (opcional) (`partial` ou `full`) Especifica a profundidade dos testes de vida: `partial` (FPAD *Detecção de Ataque de Apresentação*), `full` (FPAD + FMAD *Detecção de Ataque de Manipulação*). Por padrão `partial`.
* `FACEPHI_SELPHID_GALLERY_REMOVE_METHOD` (opcional) (`erase` ou `noerase`) Especifica se os elementos da galeria serão totalmente removidos por meio de `SelphIDIdentifier::RemoveWithGalleryIndex()` ou serão marcados como inválidos sem serem removidos. Por padrão `erase`.
* `FACEPHI_SELPHID_FUTURE_TIME_ALLOWED` (opcional) 0-N Especifica o tempo em segundos durante o qual será válido um token com uma data futura. Trata-se de um valor global que pode ser sobrescrito por operação por meio de `SelphIDVerifierOptions::SetFutureTimeAllowed()`. Por padrão 0, o que significa que todos os tokens com data futura serão rejeitados.

## 4. Licenciamento do SDK

Para licenciar o produto SelphID SDK, é necessário realizar as ações descritas a seguir:

### 4.1 Geração de identificadores de máquina

Os identificadores de máquina podem ser obtidos usando um terminal e executando o seguinte comando no diretório onde a utilidade se encontra: `FACEPHI_SELPHID_INSTALL_PATH\bin` (tanto no Windows quanto no Linux)

{% hint style="warning" %}
A partir da versão `6.20.0`, `selphid-license-activator` é executado como um aplicativo independente, sem necessidade de configurar variáveis de ambiente e sem depender de SelphID-SDK.
{% endhint %}

```bash
# Windows ( selphid-license-activator.exe )
cd C:\Program Files\FacePhi\Sdk\SelphId\x.x.x.x\bin
selphid-license-activator.exe -hostid SN > hostid.txt
```

```bash
# Linux ( selphid-license-activator.sh )
$ cd /opt/facephi/sdk/selphid/x.x.x.x/bin
$ ./selphid-license-activator -hostid SN > hostid.txt
```

{% hint style="warning" %}
SN é o número de série da licença que será ativada e que é fornecido pelo seu provedor de licenças.

O formato do número de série "SN" é XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX.

Exemplo com o número de série anterior:

```bash
# Windows ( selphid-license-activator.exe )
selphid-license-activator.exe -hostid XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX > hostid.txt
```

```bash
# Linux ( selphid-license-activator.sh )
$ ./selphid-license-activator -hostid XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX > hostid.txt
```

{% endhint %}

{% hint style="warning" %}
A partir da versão `6.15.0`, é habilitado o licenciamento baseado nos endereços MAC das interfaces de rede. Nesses casos, os endereços MAC das interfaces envolvidas no licenciamento devem ser declarados por meio do parâmetro `-addr`.

```bash
# Windows ( selphid-license-activator.exe )
selphid-license-activator.exe -hostid HOSTID -addr "74:04:F1:60:EE:A7" -addr "9C:2D:CD:E8:2A:E5" hostid.txt
```

```bash
# Linux ( selphid-license-activator.sh )
$ ./selphid-license-activator -hostid HOSTID -addr "00:15:5D:01:8C:01" > hostid.txt
```

{% endhint %}

Uma vez obtidos os identificadores de máquina, o arquivo **hostid.txt** deve ser enviado ao seu provedor de licenças, para que sua licença possa ser gerada (arquivo com extensão .lic).

{% hint style="warning" %}
A partir da versão 6.2.0, existe a possibilidade de **ativação online** da licença. Nesse caso, o provedor de licenças fornecerá um arquivo `.lic` sem necessidade de gerar identificadores de máquina (não é necessário executar `selphid-license-activator`).
{% endhint %}

### 4.2 Instalação da licença

A seguir são descritos os passos necessários para a instalação da licença:

* **Copiar a licença para o diretório config**

  Para instalar a licença, basta copiar o arquivo `license.lic` que receberá do seu distribuidor no diretório `config` localizado no caminho de instalação do SDK: `FACEPHI_SELPHID_INSTALL_PATH\config`
* **Configurar a licença no arquivo selphid.cfg**

  Uma vez copiado o arquivo de licença, defina o valor da variável contida no arquivo **selphid.cfg** com o valor do caminho onde a licença se encontra:

  ```
  # Windows
  FACEPHI_SELPHID_FACIAL_LICPATH_KEY=C:\Program Files\FacePhi\Sdk\SelphId\x.x.x.x\config\license.lic
  ```

  ```
  # Linux
  FACEPHI_SELPHID_FACIAL_LICPATH_KEY=/opt/facephi/sdk/selphid/x.x.x.x/config/license.lic
  ```

{% hint style="info" %}
O diretório `config` é o diretório padrão para instalar a licença, embora seja possível instalar a licença em outro diretório do servidor. Basta, então, indicar esse diretório no arquivo de configuração.
{% endhint %}

<br>

{% hint style="warning" %}
É imprescindível verificar se os valores das seguintes variáveis estão corretamente configurados com caminhos existentes no sistema operacional:

* FACEPHI\_SELPHID\_FACIAL\_LICPATH\_KEY: Caminho para o arquivo `license.lic`.
* FACEPHI\_SELPHID\_FACIALLIVENESS\_PATH\_KEY: Caminho para a pasta `/data` da instalação do SelphID. Necessária para o diagnóstico de vida passivo.
* FACEPHI\_SELPHID\_USAGEPATH\_KEY: Caminho para o arquivo onde as estatísticas de uso são armazenadas.
* FACEPHI\_SELPHID\_DEBUGPATH\_KEY: Caminho para o arquivo onde as informações de depuração são armazenadas. Se omitido, não será gerada informação de depuração.

Além disso, é necessário verificar a data de expiração da licença (encontra-se dentro do arquivo de licença, no campo "dateEnd") para garantir que a licença seja válida e não tenha expirado.
{% endhint %}

### 4.3 Instalação do serviço de licenças

O servidor de licenças do SelphID SDK é um aplicativo de terminal que é executado no Windows ou Linux.

Este aplicativo permite fornecer licenças do SelphID a nós cliente sem hostID estático. No entanto, esse servidor deve ser executado em uma máquina que disponha tanto de **hostID** quanto de uma porta de serviço **TCP/UDP** estáticas.

Requisitos:

* Hardware:
  * HostID estático
  * Porta estática
* Software:
  * SelphID SDK
* **Execução do serviço de licenças em um terminal Linux**

  Passos para executar o serviço de licenças em um terminal de usuário no Linux:

  1. Descompacte o SelphID SDK. Exemplo:

     ```bash
     $ /opt/fphi-selphid-sdk-linux64_X.X.X
     ```

  2. Copie a licença do servidor para o diretório do servidor com permissões `rw`. Exemplo:

     ```bash
     $ /opt/facephi/fphi-selphid-sdk-linux64_X.X.X/bin
     ```

  3. Exporte o caminho da biblioteca do SelphID SDK para `LD_LIBRARY_PATH`. Exemplo:

     ```bash
     $ export \
         LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/facephi/fphi-selphid-sdk-linux64_X.X.X/lib/lib/
     ```

  4. Execute o aplicativo do serviço de licenças indicando a porta (-port), o caminho para o arquivo de licença do servidor (-lic) e, opcionalmente, o caminho do log do serviço de licenças (-log).

     <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>O servidor de licenças deve ser iniciado no modo administrador.</p><pre class="language-bash"><code class="lang-bash">$ sudo LD_LIBRARY_PATH="$LD_LIBRARY_PATH" ./selphid-license-server -lic license-server.lic -port 15000
     </code></pre></div>

  * Exemplo gravando o log em disco e no console:

    ```bash
    $ cd /opt/facephi/fphi-selphid-sdk-linux64_X.X.X/bin
    $ sudo LD_LIBRARY_PATH="$LD_LIBRARY_PATH" ./selphid-license-server -lic license-server.lic -port 15000 -log /home/user/serverlogs
    ```

    <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>O parâmetro <code>-log</code> fará referência a um diretório e não a um arquivo. Isso se deve à implementação da rotação de logs.</p></div>

  * Exemplo com log no console:

    ```bash
    $ cd /home/user/facephi/fphi-selphid-sdk-linux64_X.X.X/bin
    $ sudo LD_LIBRARY_PATH="$LD_LIBRARY_PATH" ./selphid-license-server -lic license-server.lic -port 15000
    ```

  5. O servidor de licenças pode ter sido configurado para ativação online ou offline. O modo de licenciamento estará incorporado no arquivo `.lic`. No caso da ativação offline, o servidor fornecerá uma chave de ativação na primeira vez que iniciar.

     ```bash
     $ sudo LD_LIBRARY_PATH="$LD_LIBRARY_PATH" ./selphid-license-server -lic license-server.lic -port 15000 -log /home/user/serverlogs

     Código de ativação
     ---------------
     eZPm5npMD2pYwV71uRDcWBcv7wLSoPh/4de763Lo5V7IPYMnhjj03foGyqTu180dT...
     ```

  * Essa chave de ativação deve ser enviada ao seu provedor de licenças, para que sua licença `.lic` possa ser atualizada.
  * A atualização da licença incluirá o código de ativação para o servidor, que já poderá ser iniciado sem necessidade de conexão à Internet.

    ```bash
    $ sudo LD_LIBRARY_PATH="$LD_LIBRARY_PATH" ./selphid-license-server -lic license-server.lic -port 15000 -log /home/user/serverlogs

    [2023-10-03 15:44:47+02:00] INF Iniciando servidor de licença flutuante...
    [2023-10-03 15:44:47+02:00] INF Número total de licenças flutuantes disponíveis: 20
    [2023-10-03 15:44:47+02:00] INF Escutando na porta: 15000
    ```

  <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>No caso da <strong>ativação online</strong>, o servidor será iniciado pela primeira vez sem que o arquivo <code>.lic</code> requeira atualizações.</p></div>
* **Execução do serviço de licenças como serviço do sistema Linux**

  Passos para executar o serviço de licenças como um serviço do sistema no Linux:

  1. Siga os passos 1 e 2 das instruções anteriores.
  2. Execute o aplicativo como um aplicativo de inicialização do sistema editando o crontab: `$crontab -e:`
* **Configuração de variáveis de ambiente**

  ```bash
  $ export \
      LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/facephi/fphi-selphid-sdk-linux64_X.X.X/lib/lib/
  ```
* **Executar o servidor de licenças do SelphID ao reiniciar o sistema**

  ```bash
  $ @reboot \
      /opt \
      /facephi/fphi-selphid-sdk-linux64_X.X.X/bin/selphid-license-server \
      -lic /opt/ facephi/fphi-selphid-sdk-linux64_X.X.X/bin/license-server.lic \
      -port 15000 \
      -log /opt/facephi/fphi-selphid-sdk-linux64_X.X.X/bin/logFile.txt
  ```

  1. Reinicie o sistema. Exemplo: `$sudo shutdown -r now`
  2. Verifique no arquivo de log que as licenças estão sendo fornecidas corretamente. Exemplo:

     ```bash
     $ cat \
         /opt/facephi/fphi-selphid-sdk-linux64_X.X.X/bin/logFile.txt

     # Saída
     <Date> - Escutando: 127.0.0.1:15000
     <Date> - Escutando: \<IP>:15000
     ```
