Passer au contenu

Référence de Configuration

Au minimum, vous devez définir APP_URL et AUTH_PROVIDERS pour que votre instance fonctionne correctement. Ce guide fournit une référence complète de toutes les options de configuration disponibles dans Karr.

Karr peut être configuré via un fichier de configuration ou des variables d’environnement.

Tout champ du fichier de configuration peut être défini avec une variable d’environnement.

Elles suivent la même nomenclature que leur équivalent dans le fichier de configuration. La seule exception est la configuration de la base de données, qui est préfixée par DB_, par exemple DB_NAME, DB_PASSWORD, DB_PASSWORD_FILE

Par défaut, le fichier de configuration doit être situé dans un répertoire config/ à la racine du projet et nommé karr.config.*. Ces emplacements peuvent être modifiés par les variables d’environnement CONFIG_DIR et CONFIG_FILENAME respectivement.

Le fichier de configuration peut être au format YAML, JSON5, ou JSON.

Le schéma de configuration est disponible sur https://karr.mobi/config.schema.json.

OptionTypeDescription
APP_URLURLL’URL de base où votre instance Karr peut être accessible, sans aucun chemin supplémentaire. Doit se terminer par un /.
AUTH_PROVIDERSListLa liste des fournisseurs d’authentification à activer sur votre instance
OptionTypeDéfautDescription
APPLICATION_NAMEString"Karr"Le nom de votre instance d’application.
API_PORTNumber1993Le port sur lequel le serveur API écoutera.
API_BASEString"/api"Le chemin de base pour les points de terminaison API. Doit commencer par un / sans slash final.
LOG_TIMESTAMPBooleantrueIndique si les horodatages doivent être inclus dans les journaux.
LOG_LEVELString"info"Le niveau de journal à utiliser. Options disponibles : "trace", "debug", "info", "warn", "error".
ADMIN_EMAILEmailL’adresse e-mail de l’utilisateur administrateur.

Karr prend en charge plusieurs fournisseurs d’authentification via l’option de configuration AUTH_PROVIDERS.

  • Mot de passe : Authentification par e-mail/mot de passe
  • Code : Authentification par code à usage unique via e-mail
OptionObligatoireTypeDescription
nameStringLe nom du fournisseur (password ou code)
trustedBooleanLorsque défini sur true, les utilisateurs authentifiés via ce fournisseur sont considérés vérifiés. Par défaut : false.
OptionObligatoireTypeDescription
nameStringLe nom du fournisseur (github)
clientIDStringL’ID client du fournisseur d’authentification
clientSecretStringLe secret client du fournisseur d’authentification
queryObjectParamètres de requête supplémentaires à inclure dans les demandes d’autorisation.
trustedBooleanLorsque défini sur true, les utilisateurs authentifiés via Github sont considérés vérifiés. Par défaut : false.
OptionObligatoireTypeDescription
nameStringLe nom du fournisseur (google)
clientIDStringL’ID client du fournisseur d’authentification
queryObjectParamètres de requête supplémentaires à inclure dans les demandes d’autorisation.
trustedBooleanLorsque défini sur true, les utilisateurs authentifiés via Google sont considérés vérifiés. Par défaut : false.

🚀 Bientôt disponible ! Ce n’est pas encore implémenté, cela viendra dans un futur proche.

Vous pouvez spécifier directement les instances cibles avec lesquelles fédérer.

Les détails de connexion à la base de données peuvent être configurés via l’option DB_CONFIG :

OptionTypeDéfautDescription
hostString"localhost"Nom d’hôte du serveur de base de données.
portNumber5432Port du serveur de base de données.
userString"postgres"Nom d’utilisateur de la base de données.
passwordStringMot de passe de la base de données. Non recommandé pour une utilisation en production.
password_fileStringChemin d’accès à un fichier contenant le mot de passe de la base de données. Recommandé pour la production avec Docker Secrets.
db_nameString"karr"Nom de la base de données.
sslBooleanfalseIndique s’il faut utiliser SSL pour les connexions à la base de données.

Voici un exemple de configuration complète :

config/karr.config.yaml
# yaml-language-server: $schema=https://karr.mobi/config.schema.json
APPLICATION_NAME: "My Karr Instance"
APP_URL: "https://karr.example.com/"
API_PORT: 3000
API_BASE: "/api"
LOG_LEVEL: "info"
LOG_TIMESTAMP: true
ADMIN_EMAIL: "admin@example.com"
AUTH_PROVIDERS:
- name: "password"
trusted: false
- name: "google"
clientID: "your-google-client-id"
trusted: true
FEDERATION_TARGETS:
- name: "Partner Instance"
url: "https://karr.partner-example.com"
DB_CONFIG:
host: "db"
port: 5432
user: "karr_user"
password_file: "/run/secrets/db-password"
db_name: "karr_db"
ssl: true
config/karr.config.json
{
"$schema": "https://karr.mobi/config.schema.json",
"APPLICATION_NAME": "My Karr Instance",
"APP_URL": "https://karr.example.com/",
"API_PORT": 3000,
"API_BASE": "/api",
"LOG_LEVEL": "info",
"LOG_TIMESTAMP": true,
"ADMIN_EMAIL": "admin@example.com",
"AUTH_PROVIDERS": [
{
"name": "password",
"trusted": false
},
{
"name": "google",
"clientID": "your-google-client-id",
"trusted": true
}
],
"FEDERATION_TARGETS": [
{
"name": "Partner Instance",
"url": "https://karr.partner-example.com"
}
],
"DB_CONFIG": {
"host": "db",
"port": 5432,
"user": "karr_user",
"password_file": "/run/secrets/db-password",
"db_name": "karr_db",
"ssl": true
}
}
config/karr.config.json5
{
// add comments
"$schema": "https://karr.mobi/config.schema.json",
APPLICATION_NAME: "My Karr Instance",
APP_URL: "https://karr.example.com/",
API_PORT: 3000,
API_BASE: "/api",
LOG_LEVEL: "info",
LOG_TIMESTAMP: true,
ADMIN_EMAIL: "admin@example.com",
AUTH_PROVIDERS: [
{
// this is temporary
name: "password",
trusted: false,
},
{
name: "google",
clientID: "your-google-client-id",
trusted: true,
},
],
FEDERATION_TARGETS: [
{
name: "Partner Instance",
url: "https://karr.partner-example.com",
},
],
DB_CONFIG: {
host: "db",
port: 5432,
user: "karr_user",
password_file: "/run/secrets/db-password",
db_name: "karr_db",
ssl: true,
},
}