Configuração do Servidor API
O Servidor da API Bencher requer uma configuração em JSON na inicialização. A configuração pode ser fornecida de três maneiras:
- Variável de ambiente
BENCHER_CONFIG
: O valor deve ser definido para a configuração em JSON - Variável de ambiente
BENCHER_CONFIG_PATH
: O valor deve ser definido para o caminho de um arquivo que contenha a configuração em JSON - Um arquivo contendo a configuração em JSON localizado em
./bencher.json
, relativo ao executável do servidor
Se nenhuma configuração for encontrada, então uma configuração padrão é carregada.
Para atualizar a configuração enquanto o servidor está em execução,
um administrador pode usar o comando CLI bencher server config update
que aciona a rota PUT /v0/server/config
.
Todas as configurações atualizadas são salvas na variável de ambiente BENCHER_CONFIG
e no disco em BENCHER_CONFIG_PATH
.
Exemplo de configuração em 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": "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"
},
"apm": {
"sentry": {
"dsn": "https://0123abc1023abc@987efg987efg.ingest.sentry.io/0123456789"
}
},
"plus": {
"stats": {
"offset": 11242,
"enabled": true
}
}
}
console
Nome | Exemplo | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
url | ”https://bencher.example.com” | ”http://localhost:3000” | Sim | Indica a URL para o console do host do Bencher UI. |
security
Nome | Exemplo | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
issuer | ”https://api.bencher.example.com” | “bencher.dev” | Não | Indica o emissor do JSON Web Token (JWT). ATENÇÃO Alterar este valor fará com que todos os JWTs gerados anteriormente não validem. |
secret_key | “UJu7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy” | UUID v4 aleatório | Sim | Indica a chave usada para gerar todos os tokens. DEVE SER MUITO SEGURA! O valor padrão é um UUID v4 gerado aleatoriamente. Sempre que exibido, aparecerá ofuscado como ************ . |
server
Esta seção é baseada na configuração do servidor Dropshot.
Nome | Exemplo | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
bind_address | “0.0.0.0:61016” | “0.0.0.0:61016” | Sim | Especifica que o servidor deve se ligar ao dado IP e porta TCP. Em geral, servidores podem se ligar a mais de um IP e porta, mas isso não é (ainda?) suportado. Padrão em “127.0.0.1:0”. |
request_body_max_bytes | 1048576 | 1048576 | Sim | Especifica o número máximo de bytes permitidos em um corpo de requisição. Requisições maiores vão receber um erro 400. Padrão em 1024. |
tls.type | “as_file” | --- | Não | Especifica se e como a informação do certificado e chave TLS são fornecidos. Valores válidos incluem “as_file” e “as_bytes”. |
tls.cert_file | “/path/to/cert.pem” | --- | Se tls.type = as_file | Indica o caminho para um arquivo PEM contendo uma cadeia de certificados para o servidor se identificar. O primeiro certificado é o certificado de entidade final, e os restantes são intermediários até um CA confiável. Se especificado, o servidor só aceitará conexões TLS. |
tls.key_file | “/path/to/key.pem” | --- | Se tls.type = as_file | Indica o caminho para um arquivo PKCS #8 codificado em PEM contendo a chave privada que o servidor usará. Se especificado, o servidor só aceitará conexões TLS. |
tls.certs | --- | --- | Se tls.type = as_bytes | Idêntico a tls.cert_file, mas fornecido como um array de bytes dos dados de certificado. |
tls.key | --- | --- | Se tls.type = as_bytes | Idêntico a tls.key_file, mas fornecido como um array de bytes dos dados da chave. |
logging
Esta seção é baseada na configuração de logging do Dropshot.
Nome | Exemplo | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
name | “Bencher API” | “Bencher API” | Sim | Especifica o nome do registrador. |
log.mode | “stderr_terminal” | “stderr_terminal” | Sim | Controla para onde vai o registro do servidor. Os modos válidos são “stderr-terminal” e “file”. Se o modo for “stderr-terminal”, uma saída legível para humanos, com cores e outras formatações de terminal se possível, será enviada para stderr. Se o modo for “file”, a saída no formato Bunyan será enviada para o caminho do sistema de arquivos fornecido por log.path. Veja também log.if_exists, que controla o comportamento se o caminho de destino já existir. |
log.level | “info” | “info” | Sim | Especifica qual a gravidade das mensagens de log que devem ser incluídas no log. Os valores válidos incluem “trace”, “debug”, “info”, “warn”, “error”, e “critical”, que estão em ordem crescente de gravidade. As mensagens de log no nível especificado e níveis mais graves serão incluídas no log. |
log.path | --- | --- | Apenas se log.mode = “file” | Se log.mode é “file”, esta propriedade determina o caminho para o arquivo de log. Veja também log.if_exists. |
log.if_exists | --- | --- | Apenas se log.mode = “file” | Se log.mode é “file”, esta propriedade especifica o que fazer se o arquivo de log de destino já existir. Os valores válidos incluem “append” (que anexa ao arquivo existente), “truncate” (que trunca o arquivo existente e então o utiliza como se ele acabasse de ser criado), e “fail” (que faz o servidor sair imediatamente com um erro). |
database
Nome | Exemplo | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
file | “path/to/database.db” | “data/bencher.db” | Sim | Controla para onde vai a base de dados do servidor. |
data_store.service | “aws_s3” | --- | Não | Especifica o serviço de armazenamento de dados remoto. Valores validos são “aws_s3”. |
data_store.access_key_id | “ABC123DoRemMiABC123” | --- | Apenas se data_store.service = “aws_s3” | Se data_store.service = “aws_s3”, esta propriedade especifica o ID da chave de acesso do AWS. Veja também data_store.service. |
data_store.secret_access_key | “AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7” | --- | Apenas se data_store.service = “aws_s3” | Se data_store.service = “aws_s3”, esta propriedade especifica a chave de acesso secreta do AWS. Veja também data_store.service. Quando registrada, ela aparecerá obfuscada como ************ . |
data_store.access_point | “arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir” | --- | Apenas se data_store.service = “aws_s3” | Se data_store.service = “aws_s3”, esta propriedade especifica o ponto de acesso do AWS S3. Veja também data_store.service. |
smtp
Esta seção especifica uma configuração de serviço SMTP.
A seção inteira é opcional.
Se não especificada, todas as mensagens serão enviadas para logging
em vez disso.
Nome | Exemplo | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
hostname | “mailbonobo.com” | --- | Sim | Especifica o hostname do SMTP. |
port | 587 | 587 | Não | Especifica a porta do SMTP. |
starttls | true | true | Não | Controla se a conexão do SMTP usa o protocolo STARTTLS. |
username | “bencher” | --- | Sim | Especifica o nome de usuário no host do SMTP. |
secret | “WM3F2u9cqSNdBPLfy9sJ5kk9” | --- | Sim | Especifica o segredo para o nome de usuário no host do SMTP. Sempre que for registrado, ele aparecerá obfuscado como ************ . |
from_name | “Bencher” | --- | Sim | Especifica o nome que aparecerá na seção de remetente de todos os e-mails. |
from_email | ”info@bencher.example.com” | --- | Sim | Especifica o e-mail que aparecerá na seção de remetente de todos os e-mails. |
plus
Esta seção é para recursos que são cobertos pela Licença Bencher Plus.
plus.stats
Esta seção especifica se e quando as estatísticas do servidor são coletadas.
A seção inteira é opcional.
Se não especificado, os valores padrão listados serão usados.
Ou seja, as estatísticas do servidor são opt-out.
Defina enabled
como false
para desabilitar as estatísticas do servidor.
Nome | Exemplo | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
offset | 11242 | 11242 | Não | Especifica o desvio da meia-noite em segundos para a coleta de estatísticas do servidor. Por padrão, roda às 03:07:22 UTC. |
enabled | true | true | Não | Controla se as estatísticas do servidor são coletadas. Defina como false para optar por não participar. |