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": "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
Nom | Exemple | Par Défaut | Obligatoire | Description |
---|---|---|---|---|
url | ”https://bencher.example.com” | ”http://localhost:3000” | Oui | Spécifie l’URL de l’hôte de la console UI Bencher. |
security
Nom | Exemple | Par Défaut | Obligatoire | Description |
---|---|---|---|---|
issuer | ”https://api.bencher.example.com” | “bencher.dev” | Non | Spé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éatoire | Oui | Spé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.
Nom | Exemple | Par Défaut | Obligatoire | Description |
---|---|---|---|---|
bind_address | “0.0.0.0:61016” | “0.0.0.0:61016” | Oui | Spé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_bytes | 1048576 | 1048576 | Oui | Spé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” | --- | Non | Spé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_file | Spé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_file | Spé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_bytes | Identique à 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_bytes | Identique à 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.
Nom | Exemple | Par défaut | Requis | Description |
---|---|---|---|---|
name | “Bencher API” | “Bencher API” | Oui | Spécifie le nom du logger. |
log.mode | “stderr_terminal” | “stderr_terminal” | Oui | Contrô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” | Oui | Spé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
Nom | Exemple | Par défaut | Requis | Description |
---|---|---|---|---|
file | “path/to/database.db” | “data/bencher.db” | Oui | Contrôle où la base de données du serveur sera envoyée. |
data_store.service | “aws_s3” | --- | Non | Spé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
.
Nom | Exemple | Par défaut | Requis | Description |
---|---|---|---|---|
hostname | “mailbonobo.com” | --- | Oui | Spécifie le nom d’hôte SMTP. |
port | 587 | 587 | Non | Spécifie le port SMTP. |
starttls | true | true | Non | Contrôle si la connexion SMTP utilise le protocole STARTTLS. |
username | “bencher” | --- | Oui | Spécifie le nom d’utilisateur sur l’hôte SMTP. |
secret | “WM3F2u9cqSNdBPLfy9sJ5kk9” | --- | Oui | Spé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” | --- | Oui | Spécifie le nom qui apparaîtra dans la section d’envoi de tous les emails. |
from_email | ”info@bencher.example.com” | --- | Oui | Spé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.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.
Nom | Exemple | Par défaut | Requis | Description |
---|---|---|---|---|
offset | 11242 | 11242 | Non | Spé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. |
enabled | true | true | Non | Contrôle si les statistiques du serveur sont collectées. Mettez sur false pour opt-out. |