Configuración del Servidor API


El Servidor API de Bencher requiere una configuración JSON al inicio. La configuración puede proporcionarse de tres formas:

  • Variable de entorno BENCHER_CONFIG: El valor debería estar configurado a la configuración JSON
  • Variable de entorno BENCHER_CONFIG_PATH: El valor debería estar configurado a la ruta de un archivo que contiene la configuración JSON
  • Un archivo que contiene la configuración JSON ubicado en ./bencher.json, relativo al ejecutable del servidor

Si no se encuentra ninguna configuración, entonces se carga una configuración predeterminada.

Para actualizar la configuración mientras el servidor está ejecutándose, un administrador puede usar el comando CLI bencher server config update que se dirige a la ruta PUT /v0/server/config. Todas las configuraciones actualizadas se guardan en la variable de entorno BENCHER_CONFIG y en el disco en BENCHER_CONFIG_PATH.

Ejemplo de configuración JSON:

{
"console": {
"url": "https://bencher.example.com"
},
"security": {
"issuer": "https://api.bencher.example.com",
"secret_key": "UJu7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy"
},
"server": {
"bind_address": "0.0.0.0:61016",
"request_body_max_bytes": 1048576,
"tls": {
"type": "as_file",
"cert_file": "/path/to/cert.pem",
"key_file": "/path/to/key.pem"
}
},
"logging": {
"name": "Bencher API",
"log": {
"stderr_terminal": {
"level": "info"
}
},
},
"database": {
"file": "/var/lib/bencher/data/bencher.db",
"data_store": {
"service": "aws_s3"
"access_key_id": "ABC123DoRemMiABC123",
"secret_access_key": "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7",
"access_point": "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir"
}
},
"smtp": {
"hostname": "mailbonobo.com",
"port": 587,
"starttls": true,
"username": "bencher"
"secret": "WM3F2u9cqSNdBPLfy9sJ5kk9",
"from_name": "Bencher",
"from_email": "info@bencher.example.com"
},
"plus": {
"disaster_recovery": {
"replicas": [
{
"scheme": "s3",
"bucket": "my-bucket",
"path": "path/to/replicate",
"access_key_id": "ABC123DoRemMiABC123",
"secret_access_key": "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7"
}
]
},
"stats": {
"offset": 11242,
"enabled": true
}
}
}

console

NombreEjemploPredeterminadoObligatorioDescripción
urlhttps://bencher.example.comhttp://localhost:3000Especifica la URL para el host de la consola de Bencher UI.

security

NombreEjemploPredeterminadoObligatorioDescripción
issuerhttps://api.bencher.example.com“bencher.dev”NoEspecifica el emisor del Token Web JSON (JWT). ADVERTENCIA Cambiar este valor hará que todos los JWT generados anteriormente ya no se validen.
secret_key“UJu7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy”UUID v4 aleatorioEspecifica la clave utilizada para generar todos los tokens. ¡DEBE SER MUY SEGURA! El valor predeterminado es un UUID v4 generado aleatoriamente. Cuando se registra, aparecerá de manera ofuscada como ************.

server

Esta sección se basa en la configuración del servidor Dropshot.

NombreEjemploPredeterminadoObligatorioDescripción
bind_address“0.0.0.0:61016”“0.0.0.0:61016”Especifica que el servidor debe vincularse a la IP y puerto TCP proporcionados. En general, los servidores pueden vincularse a más de una dirección IP y puerto, pero esto no es (¿aún?) compatible. Por defecto es “127.0.0.1:0”.
request_body_max_bytes10485761048576Especifica el número máximo de bytes permitidos en el cuerpo de una solicitud. Las solicitudes más grandes recibirán un error 400. Por defecto es 1024.
tls.type“as_file”---NoEspecifica si y cómo se proporciona la información del certificado y llave TLS. Los valores válidos incluyen “as_file” y “as_bytes”.
tls.cert_file“/path/to/cert.pem”---Solo si tls.tipo = as_fileEspecifica la ruta a un archivo PEM que contiene una cadena de certificados para que el servidor se identifique. El primer certificado es el certificado de entidad final, y los restantes son certificados intermedios en camino a una CA de confianza. Si se especifica, el servidor solo escuchará conexiones TLS.
tls.key_file“/path/to/key.pem”---Solo si tls.tipo = as_fileEspecifica la ruta a un archivo PEM codificado en PKCS #8 que contiene la llave privada que usará el servidor. Si se especifica, el servidor solo escuchará conexiones TLS.
tls.certs------Solo si tls.tipo = as_bytesIdéntico a tls.archivo_cert, pero proporcionado como un array de bytes de datos de certificado.
tls.key------Solo si tls.tipo = as_bytesIdéntico a tls.archivo_llave, pero proporcionado como un array de bytes de datos de llave.

logging

Esta sección se basa en la configuración de registro de Dropshot.

NombreEjemploDefaultRequeridoDescripción
name“Bencher API”“Bencher API”Especifica el nombre del registro (logger).
log.mode“stderr_terminal”“stderr_terminal”Controla dónde se enviará el registro del servidor. Las modo válidos son “stderr_terminal” y “file”. Si el modo es “stderr_terminal”, los resultados legibles por humanos, con colores y otro formateo del terminal si es posible, se enviarán a stderr. Si el modo es “file”, la salida con formato Bunyan se enviará al ruta del sistema de archivos que indique log.path. Ver también log.if_exists, que controla el comportamiento si la ruta de destino ya existe.
log.level“info”“info”Especifica qué gravedad de mensajes de registro se deben incluir en el registro. Los valores válidos incluyen “trace”, “debug”, “info”, “warn”, “error” y “critical”, que están en orden creciente de gravedad. Los mensajes de registro en el nivel especificado y en niveles más severos se incluirán en el registro.
log.path------Solo si log.mode = “file”Si log.mode es “file”, esta propiedad determina el camino al archivo de registro. Ver también log.if_exists.
log.if_exists------Solo si log.mode = “file”Si log.mode es “file”, esta propiedad especifica qué hacer si el archivo de registro destino ya existe. Los valores válidos incluyen “append” (que agrega al archivo existente), “truncate” (que trunca el archivo existente y luego lo usa como si acabara de ser creado), y “fail” (que hace que el servidor se cierre inmediatamente con un error).

database

NombreEjemploDefaultRequeridoDescripción
file“ruta/hacia/database.db”“/var/lib/bencher/data/bencher.db”Controla hacia donde irá la base de datos del servidor.
data_store.service“aws_s3”---NoEspecifica el servicio de almacenamiento de datos remoto. Los valores válidos son “aws_s3”.
data_store.access_key_id“ABC123DoRemMiABC123”---Solo si data_store.service = “aws_s3”Si data_store.service = “aws_s3”, esta propiedad especifica el ID de clave de acceso de AWS. Ver también data_store.service.
data_store.secret_access_key“AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7”---Solo si data_store.service = “aws_s3”Si data_store.service = “aws_s3”, esta propiedad especifica la clave de acceso secreta de AWS. Ver también data_store.service. Cuando se registra, aparecerá ofuscado como ************.
data_store.access_point“arn:aws:s3:alguna-region-1:123456789:accesspoint/mi-bucket/ruta/hacia/directorio/de/respaldo”---Solo si data_store.service = “aws_s3”Si data_store.service = “aws_s3”, esta propiedad especifica el punto de acceso S3 de AWS. Ver también data_store.service.

smtp

Esta sección especifica una configuración del servicio SMTP. La sección completa es opcional. Si no se especifica, todos los mensajes se enviarán a logging en su lugar.

NombreEjemploDefaultRequeridoDescripción
hostname“mailbonobo.com”---Especifica el hostname de SMTP.
port587587NoEspecifica el puerto de SMTP.
starttlstruetrueNoControla si la conexión SMTP utiliza el protocolo STARTTLS.
username“bencher”---Especifica el nombre de usuario en el host SMTP.
secret“WM3F2u9cqSNdBPLfy9sJ5kk9”---Especifica el secreto para el nombre de usuario en el host SMTP. Cuando se registra, aparecerá ofuscado como ************.
from_name“Bencher”---Especifica el nombre que aparecerá en la sección “from” de todos los correos electrónicos.
from_emailinfo@bencher.example.com---Especifica el correo electrónico que aparecerá en la sección “from” de todos los correos electrónicos.

plus

Esta sección es para las características que están cubiertas por la Licencia Bencher Plus.

plus.github

Esta sección especifica la configuración para una aplicación de GitHub utilizada para la autenticación OAuth2. Debes tener una licencia válida de Bencher Plus Enterprise para al menos una organización en el servidor. Toda la sección es opcional. Si no se especifica, la autenticación con GitHub no estará habilitada.

NombreEjemploPredeterminadoRequeridoDescripción
client_idIv1.12864abcd1232048---Especifica el ID de cliente de tu aplicación de GitHub. El ID de cliente es diferente del ID de la aplicación. Puedes encontrar el ID de cliente en la página de configuración de tu aplicación. Para más información sobre cómo navegar a la página de configuración de tu aplicación de GitHub, consulta Modificar el registro de una aplicación de GitHub.
client_secret00000abcd12345wxyz123456789abcdefgh0000---El secreto de cliente para tu aplicación de GitHub. Puedes generar un secreto de cliente en la página de configuración de tu aplicación.

plus.stats

Esta sección especifica si y cuándo se recogen las estadísticas del servidor. Toda la sección es opcional. Si no se especifica, se utilizarán los valores predeterminados listados. Es decir, las estadísticas del servidor son de opt-out. Establece enabled en false para desactivar las estadísticas del servidor.

NombreEjemploPredeterminadoObligatorioDescripción
offset1124211242NoEspecifica el desplazamiento desde la medianoche en segundos para la recogida de estadísticas del servidor. Por defecto, se ejecuta a las 03:07:22 UTC.
enabledtruetrueNoControla si se recogen las estadísticas del servidor. Establece en false para optar por no participar.