# Configuración del BEST Web Server

## Introducción

Este manual describe la configuración de los componentes del lado del servidor del *GBS BEST Server*.

El procedimiento de configuración debe realizarse solo después del paso de instalación. Para más información, consulte el [Manual de Instalación de GBS Apps](/gbs/es/componentes-web/gbsappssetup.md).

## Configuración

Los pasos de configuración son:

1. Configure el Tomcat;
2. Configure los Certificados;
3. Genere la contraseña encriptada;
4. Finalice las configuraciones en el archivo config.properties.

Todos los pasos se describen abajo. Un ejemplo del archivo `config.properties` puede verse en la sección [Ejemplo del Archivo de Configuración](#exemplo-do-arquivo-de-configuracao).

{% hint style="danger" %}
Todas las líneas deben estar presentes en el archivo de configuración. Comentar o eliminar líneas puede causar comportamientos inesperados. Para información adicional, contacte al Equipo de Soporte de Griaule.
{% endhint %}

### Configuración del Tomcat

Edite el archivo de configuración del Tomcat para configurar los certificados y el puerto que la aplicación usará.

```sh
vi /var/lib/tomcats/best/conf/server.xml
```

Para cambiar el puerto, busque `connector port=`. Ese es el puerto para operaciones backend.

### Configuración de Certificados

Para habilitar autenticación SSL, busque `connector port=` en el archivo `/conf/server.xml`.

Existen dos entradas. La comentada es la configuración para SSL. Quite los delimitadores de comentarios `<!--` y `-->`, luego ajuste los siguientes parámetros:

```properties
port="58194"
keystoreFile="/home/griaule/keystore"
keystorePass="password"
keyAlias="1"
clientAuth="true"
truststoreFile="/home/griaule/keystore"
truststorePass="password"
```

El parámetro `port` debe ser el puerto de red deseado para la aplicación.

Cambie la ruta del `keystoreFile` y al `truststoreFile` a los valores apropiados. Haga lo mismo para el `keystorePass` y al `truststorePass`.

El parámetro `clientAuth="true"` requerrá autenticación del servidor para el cliente y del cliente para el servidor. Esto significa que el cliente necesitará importar el certificado en el navegador para poder acceder a la aplicación.

{% hint style="warning" %}
Cuando **clientAuth** está definida como *true*, el administrador del sistema debe proporcionar el archivo **certificate.pfx** a los usuarios finales.
{% endhint %}

### Cifrado de la contraseña de la Base de Datos

En el archivo `config.properties`, el parámetro `jdbc.password` es una contraseña encriptada. Para generar la contraseña encriptada, siga los siguientes pasos:

1. Vaya al siguiente directorio:

   ```sh
   cd /var/lib/tomcats/best/webapps/gbs-best-server/WEB-INF/lib
   ```
2. Ejecute el comando:

   ```sh
   java -cp gbs-common-db-<versión>.jar com.griaule.commons.util.EncryptUtil <contraseñaDeseada>
   ```
3. La contraseña encriptada aparecerá después del mensaje: *"Encrypted password is:"*

{% hint style="info" %}
Guarde la contraseña encriptada. Será usada en configuraciones posteriores.
{% endhint %}

### Filtro de Búsqueda por Etiquetas

Algunas configuraciones de BEST pueden realizarse a través de las bases de datos, como las de las etiquetas para el filtro de búsqueda. Esta configuración es una lista de etiquetas que el usuario puede seleccionar en la configuración de búsqueda de fragmentos para restringir la lista de candidatos.

Para configurar las etiquetas deseadas, necesita incluir las etiquetas en la línea `search.labels` en la tabla `sphinx.settings`. Tenga en cuenta que las etiquetas deben estar separadas por comas.

Estas etiquetas estarán visibles para todos los usuarios de BEST.

### Archivo de Configuración de la Aplicación

Para configurar el archivo, ábralo con:

```sh
vi /var/lib/tomcats/best/conf/config.properties
```

Los cambios más importantes en este archivo son los parámetros `jdbc.url`, `jdbc.username`, `jdbc.password` y `gbds.url`Configurelos de acuerdo con su entorno.

El archivo de configuración completo se muestra en la sección [Ejemplo del Archivo de Configuración](#exemplo-do-arquivo-de-configuracao)

{% hint style="info" %}
Recuerde reemplazar la contraseña cifrada generada en la sección [Cifrado de la contraseña de la Base de Datos](#criptografia-da-senha-do-banco-de-dados) en este archivo.
{% endhint %}

#### Etiqueta de Segregación de Casos

Es posible segregar los casos que un usuario ve en el software. Para hacer esto, debe agregar un permiso en las configuraciones del LDAP.

Dentro de un grupo de usuarios en el LDAP, agregue la etiqueta en el formato `best_org_{rotulo}`, p. ej. `best_org__MG`. Los nuevos casos creados por usuarios de este grupo tendrán esta etiqueta y el caso será visible solo para usuarios con los permisos correctos para ver casos con esa etiqueta.

{% hint style="info" %}
Los casos creados antes de la adición de las etiquetas no serán modificados.
{% endhint %}

#### Uso de múltiples nodos

BEST puede utilizarse en más de un nodo de servidor. Para permitir esto, el servidor maestro debe tener la configuración `poolingUL.active` definido como `true`, y los otros nodos deben tenerla definida como `false`.

{% hint style="warning" %}
Recuerde configurar un balanceador de carga entre los nodos si está utilizando este método.
{% endhint %}

#### Configuraciones de BEST

El último paso es configurar la IP y el puerto de la aplicación que el usuario final irá a acceder. Debe ser la misma IP y puerto configurados en la sección [Configuración del Tomcat](#configuracao-do-tomcat).

```properties
best.ip=<ip>
best.port=<port>
best.protocol=<protocol>
```

{% hint style="warning" %}
Asegúrese de que los parámetros de configuración `best.ip`, `best.port` y `best.protocol` estén correctamente especificados en el archivo `config.properties`. En muchos casos, la IP será la misma para varias aplicaciones. Sin embargo, cada aplicación tendrá un puerto **distinto y único**.
{% endhint %}

## Finalizando las Configuraciones

Después de completar todos los pasos de configuración, vuelva al [Manual de Instalación de GBS Apps - Sección de Configuración](/gbs/es/componentes-web/gbsappssetup.md#configuracoes).

## Ejemplo del Archivo de Configuración

Esta sección muestra un ejemplo del archivo `config.properties`.

```properties
# GBS BEST Server

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.0.200:3306/forensic?useSSL=false
jdbc.username=root
jdbc.password=CDrt8vbewA2YAubPNOLZkw==
jdbc.dialect=org.hibernate.dialect.MySQLDialect
jdbc.showSql=false

# GBDS connection
gbds.url=http://192.168.0.200:8085
gbds.user=admin
gbds.key=griaule123
gbds.logLevel=DEBUG

session.expirationTime=8h
same.user.simultaneous.login=true

locale=en_us

fingerprint.useSDK=true
useLatentExtrator.fingerprint=true
useLatentExtrator.palmprint=false

image.convert.useJnbis=false

poolingSearch.active=true
poolingSearch.time=5

poolingUL.active=true
poolingUL.time=300

extratorServer.firstPort=8100
extratorServer.processNumber=4

faceQuality.qtdeMinErrors=2

session.expirationTime=8h

server.standalone.port=8085

best.ip=127.0.0.1
best.port=8123
best.protocol=http

# Ruta para guardar los videos (el servicio de detección y extracción de rostros necesita acceder a esta ruta)
fileDir=/var/lib/apache-tomcat-best/videos

# Endpoint para el servicio de detección/extracción de rostros
detect.group.url=http://172.16.0.70:8127/v1/detection/

# Número de mejores rostros deseados para cada identificación (al menos 1)
detect.numberBestFaces=5

# Número de hilos (el servidor BEST importará y buscará los rostros en paralelo)
identity.threadSize=4

# Paso de detección de fotogramas. Si es 3, solo 1 de cada 3 fotogramas será considerado
detect.framesStep=3

# Los rostros deben aparecer en al menos este número de fotogramas para ser considerados válidos
detect.framesAppearingFilter=30

# Umbral de coincidencia de Facelib
detect.matchThreshold=65
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/gbs/es/componentes-web/bestwebconfig.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
