Configuration

5 min de lecture

Configuration

PgArachne charge la configuration depuis des variables d’environnement ou un fichier.

Note : schema.sql tente de créer le rôle pgarachne_admin et de l’accorder à pgarachne. Sans droits superuser, la création est ignorée. Créez le rôle et le grant manuellement si besoin.
L’utilisateur proxy (DB_USER) doit être membre de pgarachne et pgarachne_admin pour vérifier et créer des tokens API.
Note de sécurité : PgArachne ne gère pas les mots de passe de la base de données dans le fichier de configuration. Il s’appuie sur le mécanisme standard du fichier .pgpass de PostgreSQL (ou la variable système PGPASSWORD) pour l’authentification.
Astuce : Si PgArachne est derrière un reverse proxy, définissez TRUSTED_PROXIES pour résoudre correctement l’adresse IP du client et éviter le contournement du rate limit.
Ordre de recherche : Si aucun fichier de configuration n’est spécifié via CLI, il cherche :
  1. Répertoire actuel : ./pgarachne.env (Tous les OS)
  2. Configuration utilisateur :
    • Linux/macOS : ~/.config/pgarachne/pgarachne.env
    • Windows : %USERPROFILE%\.config\pgarachne\pgarachne.env
  3. Configuration système : /etc/pgarachne/pgarachne.env (Linux/macOS uniquement)

Exemple de configuration minimale

Voici tout ce dont vous avez besoin pour commencer :

DB_HOST=localhost
DB_PORT=5432
DB_USER=pgarachne
JWT_SECRET=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

Variables requises : DB_HOST, DB_PORT, DB_USER, JWT_SECRET (minimum 32 octets ; générez-le avec openssl rand -hex 32).

Checklist rapide de validation

  • JWT_SECRET est long, aléatoire et différent selon les environnements.
  • DB_USER ne peut basculer que vers les rôles attendus (vérifier les grants de membership).
  • TRUSTED_PROXIES est défini si PgArachne est derrière un reverse proxy.
  • LOGIN_RATE_LIMIT est activé pour les déploiements exposés à internet.
  • METRICS_LISTEN_ADDR reste privé (par exemple 127.0.0.1:9090).

Référence de configuration

VariableRequisDescription
Connexion Base de Données
DB_HOSTAdresse du serveur PostgreSQL (ex : localhost).
DB_PORTPort de la base de données.
DB_USERL’utilisateur de base de données avec lequel PgArachne se connecte.
DB_SSLMODEMode SSL PostgreSQL. Par défaut : require. Ne définissez disable explicitement que pour le développement local contre un PostgreSQL sans TLS.
DB_SSLROOTCERTChemin vers le certificat racine CA (PEM).
DB_SSLCERTChemin vers le certificat client (PEM).
DB_SSLKEYChemin vers la clé privée du client (PEM).
Serveur HTTP
HTTP_PORTPort d’écoute. Défaut : 8080.
API_PREFIXPremier segment du chemin URL pour tous les endpoints de base de données (/jsonrpc, /sse, /mcp). Par défaut : db, donnant des routes comme /db/:base_de_donnees/jsonrpc. Seules les lettres, chiffres, tirets et underscores sont autorisés.
PID_FILEChemin du fichier PID du daemon utilisé par -start/-stop. Par défaut : cache utilisateur (fallback : dossier temporaire).
ALLOWED_ORIGINSParamètres CORS. Liste séparée par des virgules des domaines autorisés (ex : https://monapp.com). Par défaut : non défini — les requêtes cross-origin du navigateur sont désactivées. Définissez * explicitement pour autoriser toute origine.
STATIC_FILES_PATHChemin absolu pour servir les fichiers statiques (Explorer/Frontend).
Sécurité (JWT)
JWT_SECRETUne longue chaîne aléatoire utilisée pour signer les jetons de session. Au moins 32 octets ; générez-le avec openssl rand -hex 32.
JWT_EXPIRY_HOURSValidité de la session en heures. Défaut : 8.
JWT_ISSUERSi défini, écrit dans le claim iss et doit correspondre exactement lors de la validation. Vide = pas de vérification.
JWT_AUDIENCESi défini, écrit dans le claim aud et doit correspondre lors de la validation. Vide = pas de vérification.
JWT_LEEWAYTolérance d’horloge pour exp/nbf/iat (ex. 30s). Par défaut : 30s.
LOGIN_RATE_LIMITNombre maximum de tentatives de connexion par fenêtre. Par défaut : 5. 0 désactive.
LOGIN_RATE_LIMIT_PER_IPNombre maximum de tentatives de connexion par IP client, tous noms d’utilisateur confondus, afin que la rotation des noms ne contourne pas la limite. Par défaut : 5× LOGIN_RATE_LIMIT. 0 désactive.
LOGIN_RATE_WINDOWDurée de la fenêtre de limitation. Par défaut : 1m.
Le rate limit de login est par instance (en mémoire). En multi-instance, utilisez un limiteur partagé.
TRUSTED_PROXIESProxys de confiance (IP/CIDR) pour X-Forwarded-For. Séparés par des virgules. Si vide, les en-têtes forwardés sont ignorés et l’IP client est prise depuis la connexion directe.
MAX_REQUEST_BYTESTaille maximale du body en octets. Par défaut : 2097152.
MCP_SQL_ERROR_DETAILInclure le message d’erreur PostgreSQL brut dans les erreurs des outils MCP. Les erreurs détaillées aident les agents LLM à s’autocorriger, mais peuvent exposer des détails du schéma (noms de tables et de contraintes) aux appelants authentifiés. Par défaut : false.
DIRECT_POOL_LIMITNombre maximum de pools de connexion distincts pour les identifiants Basic Auth. Par défaut : 1000.
METRICS_ENABLEDActive le endpoint dédié aux métriques. Par défaut : true.
METRICS_LISTEN_ADDRAdresse du listener de métriques (host:port). Par défaut : 127.0.0.1:9090.
SSE_MAX_CHANNELSNombre maximal de canaux par connexion SSE. Par défaut : 8.
SSE_MAX_CLIENTSNombre maximal de clients SSE simultanés par base. Par défaut : 1000.
SSE_CLIENT_BUFFERBuffer SSE par client (nombre de messages). Par défaut : 64.
SSE_SEND_TIMEOUTDélai max pour envoyer à un client lent. Par défaut : 2s.
SSE_HEARTBEATIntervalle de heartbeat pour SSE. Par défaut : 20s.
SSE_IDLE_TIMEOUTDélai d’inactivité sans notifications. Par défaut : 90s.
Logging
LOG_LEVELVerbosité : DEBUG, INFO, WARN, ERROR. Défaut : INFO.
LOG_OUTPUTOù écrire les logs : stdout ou chemin du fichier.

Obligatoire   Optionnel

Comportement de sécurité : les requêtes sans en-tête Authorization valide sont rejetées avant l’ouverture d’une connexion à la base.

Démarrez le serveur :

./pgarachne -config .env

Voir aussi