Config Serveur API


Le serveur API Bencher nécessite une configuration JSON au démarrage. La configuration peut être fournie de trois manières :

  • Variable d’environnement BENCHER_CONFIG : la valeur doit être définie à la configuration JSON
  • Variable d’environnement BENCHER_CONFIG_PATH : la valeur doit être définie pour le cheminement d’un fichier contenant la configuration JSON
  • Un fichier contenant la configuration JSON situé à ./bencher.json, relatif à l’exécutable du serveur

Si aucune configuration n’est trouvée, alors une configuration par défaut est chargée.

Pour mettre à jour la configuration pendant que le serveur fonctionne, un administrateur peut utiliser la commande du CLI bencher server config update qui atteint la route PUT /v0/server/config. Toutes les configurations mises à jour sont enregistrées dans la variable d’environnement BENCHER_CONFIG et sur le disque à BENCHER_CONFIG_PATH.

Exemple de configuration 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

NomExemplePar DéfautObligatoireDescription
urlhttps://bencher.example.comhttp://localhost:3000OuiSpécifie l’URL de l’hôte de la console UI Bencher.

security

NomExemplePar DéfautObligatoireDescription
issuerhttps://api.bencher.example.com“bencher.dev”NonSpécifie l’émetteur du Jeton Web JSON (JWT). AVERTISSEMENT Modifier cette valeur fera en sorte que tous les JWT précédemment générés ne soient plus valides.
secret_key“UJu7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy”UUID v4 aléatoireOuiSpécifie la clé utilisée pour générer tous les tokens. CELA DOIT ÊTRE TRÈS SÉCURISÉ ! La valeur par défaut est un UUID v4 aléatoirement généré. Lorsqu’il est connecté, il apparaîtra obscurci comme ************.

server

Cette section se base sur la configuration du serveur Dropshot.

NomExemplePar DéfautObligatoireDescription
bind_address“0.0.0.0:61016”“0.0.0.0:61016”OuiSpécifie que le serveur doit se lier à l’adresse IP et au port TCP donnés. En général, les serveurs peuvent se lier à plus d’une adresse IP et à un port, mais ce n’est pas (encore ?) pris en charge. Par défaut à “127.0.0.1:0”.
request_body_max_bytes10485761048576OuiSpécifie le nombre maximum d’octets autorisés dans un corps de requête. Les requêtes plus grandes recevront une erreur 400. Par défaut à 1024.
tls.type“as_file”---NonSpécifie si et comment les informations de certificat et de clé TLS sont fournies. Les valeurs valides incluent “as_file” et “as_bytes”.
tls.cert_file“/path/to/cert.pem”---Seulement si tls.type = as_fileSpécifie le chemin vers un fichier PEM contenant une chaîne de certificats permettant au serveur de s’identifier. Le premier certificat est le certificat final, et le reste sont des certificats intermédiaires menant à une CA de confiance. Si spécifié, le serveur écoutera uniquement pour les connexions TLS.
tls.key_file“/path/to/key.pem”---Seulement si tls.type = as_fileSpécifie le chemin vers un fichier PKCS #8 encodé en PEM contenant la clé privée que le serveur utilisera. Si spécifié, le serveur écoutera uniquement pour les connexions TLS.
tls.certs------Seulement si tls.type = as_bytesIdentique à tls.cert_file, mais fourni sous la forme d’un tableau d’octets de données de certificat.
tls.key------Seulement si tls.type = as_bytesIdentique à tls.key_file, mais fourni sous la forme d’un tableau d’octets de données clés.

logging

Cette section est basée sur la configuration de logging Dropshot.

NomExemplePar défautRequisDescription
name“Bencher API”“Bencher API”OuiSpécifie le nom du logger.
log.mode“stderr_terminal”“stderr_terminal”OuiContrôle où le logging du serveur sera envoyé. Les modes valides sont “stderr-terminal” et “file”. Si le mode est “stderr-terminal”, la sortie lisible par l’homme, avec couleurs et autres formatages de terminal si possible, sera envoyée à stderr. Si le mode est “file”, la sortie au format Bunyan sera envoyée au chemin du système de fichiers indiqué par log.path. Voir aussi log.if_exists, qui contrôle le comportement si le chemin de destination existe déjà.
log.level“info”“info”OuiSpécifie le niveau de gravité des messages de log qui doivent être inclus dans le log. Les valeurs valides comprennent “trace”, “debug”, “info”, “warn”, “error” et “critical”, qui sont en ordre croissant de gravité. Les messages de log au niveau spécifié et aux niveaux plus graves seront inclus dans le log.
log.path------Seulement si log.mode = “file”Si log.mode est “file”, cette propriété détermine le chemin vers le fichier de log. Voir aussi log.if_exists.
log.if_exists------Seulement si log.mode = “file”Si log.mode est “file”, cette propriété spécifie ce que l’on doit faire si le fichier de log de destination existe déjà. Les valeurs valides incluent “append” (qui ajoute à la fin du fichier existant), “truncate” (qui tronque le fichier existant puis l’utilise comme s’il venait d’être créé), et “fail” (qui provoque la sortie immédiate du serveur avec une erreur).

database

NomExemplePar défautRequisDescription
file“path/to/database.db”“/var/lib/bencher/data/bencher.db”OuiContrôle où la base de données du serveur sera envoyée.
data_store.service“aws_s3”---NonSpécifie le service de stockage de données à distance. Les valeurs valides sont “aws_s3”.
data_store.access_key_id“ABC123DoRemMiABC123”---Seulement si data_store.service = “aws_s3”Si data_store.service = “aws_s3”, cette propriété spécifie l’ID de la clé d’accès AWS. Voir aussi data_store.service.
data_store.secret_access_key“AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7”---Seulement si data_store.service = “aws_s3”Si data_store.service = “aws_s3”, cette propriété spécifie la clé d’accès secrète AWS. Voir aussi data_store.service. Lorsqu’elle est enregistrée, elle apparaîtra sous forme obfusquée, c’est-à-dire ************.
data_store.access_point“arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir”---Seulement si data_store.service = “aws_s3”Si data_store.service = “aws_s3”, cette propriété spécifie le point d’accès AWS S3. Voir aussi data_store.service.

smtp

Cette section spécifie une configuration de service SMTP. La section entière est facultative. Si elle n’est pas spécifiée, tous les messages seront envoyés à logging .

NomExemplePar défautRequisDescription
hostname“mailbonobo.com”---OuiSpécifie le nom d’hôte SMTP.
port587587NonSpécifie le port SMTP.
starttlstruetrueNonContrôle si la connexion SMTP utilise le protocole STARTTLS.
username“bencher”---OuiSpécifie le nom d’utilisateur sur l’hôte SMTP.
secret“WM3F2u9cqSNdBPLfy9sJ5kk9”---OuiSpécifie le secret pour le nom d’utilisateur sur l’hôte SMTP. Lorsqu’il est enregistré, il apparaîtra sous forme obfusquée, c’est-à-dire ************.
from_name“Bencher”---OuiSpécifie le nom qui apparaîtra dans la section d’envoi de tous les emails.
from_emailinfo@bencher.example.com---OuiSpécifie l’email qui apparaîtra dans la section d’envoi de tous les emails.

plus

Cette section concerne les fonctionnalités couvertes par la Licence Bencher Plus.

plus.github

Cette section spécifie la configuration pour une application GitHub utilisée pour l’authentification OAuth2. Vous devez avoir une licence Bencher Plus Enterprise valide pour au moins une organisation sur le serveur. La totalité de la section est optionnelle. Si elle n’est pas spécifiée, alors l’authentification avec GitHub ne sera pas activée.

NomExemplePar défautRequisDescription
client_idIv1.12864abcd1232048---OuiSpécifie l’ID client de votre application GitHub. L’ID client est différent de l’ID de l’application. Vous pouvez trouver l’ID client sur la page des paramètres de votre application. Pour plus d’informations sur la manière de naviguer vers la page des paramètres de votre application GitHub, consultez Modifiant une inscription d’application GitHub.
client_secret00000abcd12345wxyz123456789abcdefgh0000---OuiLe secret client de votre application GitHub. Vous pouvez générer un secret client sur la page des paramètres de votre application.

plus.stats

Cette section spécifie si et quand les statistiques du serveur sont collectées. L’ensemble de la section est facultatif. Si non spécifié, les valeurs par défaut énumérées seront utilisées. C’est-à-dire que les statistiques du serveur sont opt-out. Mettez enabled sur false pour désactiver les statistiques du serveur.

NomExemplePar défautRequisDescription
offset1124211242NonSpécifie le décalage depuis minuit en secondes pour la collecte des statistiques du serveur. Par défaut, il s’éxécute à 03:07:22 UTC.
enabledtruetrueNonContrôle si les statistiques du serveur sont collectées. Mettez sur false pour opt-out.