Aller au contenu principal

Référence de configuration du Navin Manager

Cette page liste chaque paramètre du serveur Navin Manager, relevé dans navin_manager/config.py (classe Settings), les autres variables d'environnement lues par le serveur et les paramètres enregistrés en base. Elle est générée par navin-manager/docs/tools/generate_reference.py : ne la modifiez pas à la main.

Origine des paramètres​

Chaque paramètre est lu, par ordre de priorité, dans la variable d'environnement NM_<CLÉ> (par exemple dans /etc/navin-manager/server.env, chargé par l'unité systemd), puis dans le fichier YAML désigné par NM_CONFIG_FILE (par défaut /etc/navin-manager/server.yaml, clés écrites sans le préfixe NM_, en minuscules), puis dans la valeur par défaut du tableau. Placez les secrets (NM_DATABASE_URL avec son mot de passe, NM_ADMIN_PASSWORD, NM_METRICS_TOKEN, NM_CLICKHOUSE_PASSWORD) dans server.env (mode 0640, propriétaire root:navin-manager), jamais dans server.yaml.

Avec environment: prod, navin-manager check et navin-manager serve refusent de démarrer tant qu'une de ces conditions est vraie (fonction check_production) :

  • NM_TLS_CERT_FILE ou NM_TLS_KEY_FILE est vide.
  • NM_AGENT_CLIENT_CERT_REQUIRED vaut false.
  • NM_SESSION_COOKIE_SECURE vaut false.
  • NM_METRICS_TOKEN est vide ou fait moins de 32 caractères.
  • NM_SCRYPT_N est inférieur à 16384.
  • NM_MASTER_KEY est vide et le fichier NM_MASTER_KEY_FILE n'existe pas.
  • NM_DATABASE_URL n'est pas un socket UNIX local et ne contient ni sslmode=require, ni verify-ca, ni verify-full.
  • NM_ADMIN_PASSWORD est renseigné et faible : moins de 12 caractères, un mot de passe connu (comme navin), le nom d'utilisateur, uniquement des lettres ou aucune lettre.

Général​

CléVariable d'environnementTypeDéfautDescription
environmentNM_ENVIRONMENTchaîneprodEnvironnement du serveur. prod active les contrôles de production (check_production) ; sandbox est la valeur du bac à sable.
log_levelNM_LOG_LEVELchaîneinfoNiveau de journalisation des serveurs HTTP (uvicorn) : debug, info, warning ou error.

Base de données​

CléVariable d'environnementTypeDéfautDescription
database_urlNM_DATABASE_URLchaînepostgresql://navin_manager@localhost:5432/navin_managerURL PostgreSQL de la base du Manager. En production : sslmode=require, verify-ca ou verify-full, ou un socket UNIX local (?host=/run/postgresql). Le paquet l'écrit dans server.env avec navin-manager-db local ou navin-manager-db external.
database_pool_maxNM_DATABASE_POOL_MAXentier20Nombre maximal de connexions du pool de la base.
restore_targetsNM_RESTORE_TARGETSdict[str, dict[str, typing.Any]]vide : aucune destination, les restaurations ne permettent que l'essai à blancDestinations de restauration, indexées par nom : {"name": {"environment": "isolated", "database_url_env": "NM_RESTORE_<NAME>_DATABASE", "pg_restore": "pg_restore", "versions": {"postgres": "16"}}}. L'URL reste dans la variable d'environnement nommée par database_url_env (dans server.env) : une base vide (ni postgres ni un modèle) appartenant à un rôle sans superutilisateur, CREATEDB, CREATEROLE, réplication, BYPASSRLS ni appartenance à un rôle ; sslmode=verify-full pour un serveur de production distant. Vide : les restaurations ne permettent que l'essai à blanc.
restore_timeout_secondsNM_RESTORE_TIMEOUT_SECONDSentier300Délai du sous-processus pg_restore et de chaque instruction SQL, en secondes (1 à 3600). Ce n'est pas une borne totale pour le déchiffrement et l'inventaire des lignes. Bornes : >= 1, <= 3600.
restore_max_bytesNM_RESTORE_MAX_BYTESentier268435456Taille maximale d'une sauvegarde chiffrée acceptée par une restauration, en octets (1 Kio à 1 Gio) ; un artefact plus grand est refusé avant toute écriture. Bornes : >= 1024, <= 1073741824.

Clé maîtresse et hachage des mots de passe​

CléVariable d'environnementTypeDéfautDescription
master_keyNM_MASTER_KEYchaîne ou null(aucune)Clé maîtresse donnée directement (elle scelle chaque secret enregistré). Préférez master_key_file.
master_key_fileNM_MASTER_KEY_FILEchaîne/etc/navin-manager/master.keyFichier de la clé maîtresse (32 octets aléatoires, mode 0600, propriétaire navin-manager), créé par navin-manager init-key à l'installation. Sauvegardez-le : chaque secret enregistré en dépend.
scrypt_nNM_SCRYPT_Nentier32768Paramètre de coût N de scrypt pour le hachage des mots de passe. Au moins 16384 en production.

Écoutes et adresses​

CléVariable d'environnementTypeDéfautDescription
listen_hostNM_LISTEN_HOSTchaîne127.0.0.1Adresse d'écoute des deux serveurs. Le server.yaml du paquet indique 0.0.0.0 (les agents se connectent depuis d'autres hôtes) ; un dépôt de sources écoute sur l'interface locale.
portNM_PORTentier8460Port de la console, de l'API REST /api/v1 et de l'enregistrement des agents.
agent_portNM_AGENT_PORTentier8461Port de l'API des agents /agent/v1 et du miroir local /repo/ (TLS avec certificat client).
public_urlNM_PUBLIC_URLchaîne ou null(aucune)Adresse publique de la console. Vide : https://<fqdn>:<port> (http sans TLS).
agent_urlNM_AGENT_URLchaîne ou null(aucune)Adresse de l'API des agents envoyée aux agents à l'enregistrement. Vide : https://<fqdn>:<agent_port>.
session_cookie_secureNM_SESSION_COOKIE_SECUREbooléentrueCookie de session envoyé uniquement en HTTPS. Doit rester à true en production.
cors_originsNM_CORS_ORIGINSchaîne""Origines autorisées par CORS, séparées par des virgules. Vide : aucune.

TLS​

CléVariable d'environnementTypeDéfautDescription
tls_cert_fileNM_TLS_CERT_FILEchaîne ou null(aucune)Certificat (PEM) de l'écoute de la console. Le paquet en crée un autosigné dans /etc/navin-manager/tls/server.crt ; remplacez-le par un certificat de votre PKI. Obligatoire en production.
tls_key_fileNM_TLS_KEY_FILEchaîne ou null(aucune)Clé privée (PEM) de tls_cert_file. Obligatoire en production.
agent_client_cert_requiredNM_AGENT_CLIENT_CERT_REQUIREDbooléentrueL'écoute des agents exige le certificat client délivré à l'enregistrement (TLS mutuel). Doit rester à true en production.

Catalogue, console, miroir et registre​

CléVariable d'environnementTypeDéfautDescription
catalog_dirNM_CATALOG_DIRchaîne<dépôt>/catalog s'il existe, sinon /usr/share/navin-manager/catalogRépertoire du catalogue de services (un descripteur par service).
ui_dirNM_UI_DIRchaîne<dépôt>/ui/dist s'il existe, sinon /usr/share/navin-manager/uiRépertoire de la console web construite.
docs_dirNM_DOCS_DIRchaîne<dépôt>/../website/docs-site/build s'il existe, sinon /usr/share/navin-manager/docsRépertoire du site de documentation construit, servi sans connexion sur /docs/ (français) et /docs/en/ (anglais).
agent_templates_dirNM_AGENT_TEMPLATES_DIRchaîne<dépôt>/agent-templates s'il existe, sinon /usr/share/navin-manager/agent-templatesRépertoire du registre des gabarits d'agents (un descripteur par gabarit des produits Navin, préparé ou publié), lu par GET /api/v1/agent-templates.
agent_sources_dirNM_AGENT_SOURCES_DIRchaînela racine du dépôt dans un clone, sinon /usr/share/navin-manager/agent-sourcesRépertoire auquel les chemins source et docs des descripteurs du registre sont relatifs : le manifeste du produit et la définition de service copiés quand un administrateur publie un gabarit (POST /api/v1/agent-templates/{template_id}/publish). Jamais écrit.
published_templates_dirNM_PUBLISHED_TEMPLATES_DIRchaîne/var/lib/navin-manager/published-templatesRépertoire des gabarits d'agents publiés sur ce Manager (services/<nom>.yaml et templates/<nom>/ de chaque agent validé), chargé avec le catalogue de catalog_dir par-dessus celui-ci ; catalog_dir lui-même n'est jamais écrit.
mirror_dirNM_MIRROR_DIRchaîne/var/lib/navin-manager/mirrorRépertoire du miroir local (archive hors ligne dépaquetée, manifest.json), servi sur /repo/ de l'écoute des agents.
mirror_urlNM_MIRROR_URLchaîne ou null(aucune)Adresse d'un miroir externe (Nexus, Artifactory) contenant l'arborescence du miroir. Vide : <agent_url>/repo.
mirror_signatureNM_MIRROR_SIGNATUREchaînerequiredSignature Ed25519 détachée du manifest.json du miroir (manifest.json.sig, écrite par build-bundle.py --sign-key). required : un manifeste non signé ou mal signé est refusé au chargement et à la livraison aux agents. unsigned-allowed : mode de migration explicite d'un miroir existant non signé, chaque chargement est audité avec le statut de signature unsigned.
mirror_trusted_keys_fileNM_MIRROR_TRUSTED_KEYS_FILEchaîne ou null(aucune)Fichier PEM des clés publiques Ed25519 de confiance pour la signature du manifeste du miroir, ajoutées au paramètre hub.trusted_keys_pem du Navin Trusted Hub. Vide : seulement les clés du paramètre du hub.
registryNM_REGISTRYchaîne ou null(aucune)Registre de conteneurs (Harbor, Quay, Nexus) contenant les images. Vide : les images du miroir sont chargées sur les hôtes.

Moteur d'opérations​

CléVariable d'environnementTypeDéfautDescription
engine_enabledNM_ENGINE_ENABLEDbooléentrueExécute le moteur d'opérations et le planificateur dans ce processus.
engine_tick_secondsNM_ENGINE_TICK_SECONDSnombre1.0Intervalle en secondes du cycle du moteur (démarrage des opérations en attente, tâches serveur, délais, étapes).

Installation sur les hôtes​

CléVariable d'environnementTypeDéfautDescription
podman_quadletNM_PODMAN_QUADLETbooléentrueExécute les composants Podman depuis des fichiers Quadlet (/etc/containers/systemd, tâche agent quadlet.unit) au lieu d'une unité systemd qui lance podman run (ADR-0171) : même nom d'unité et mêmes options d'isolation, unité démarrée et non activée. S'applique à tout hôte systemd dont Podman est en version 4.9 ou plus récente et dont l'agent annonce quadlet.unit dans ses faits (task_types) ; les autres hôtes gardent l'unité podman run. false : podman run partout.

Connexion et administrateur initial​

CléVariable d'environnementTypeDéfautDescription
mfa_enabledNM_MFA_ENABLEDbooléenfalseSecond facteur (TOTP) à la connexion, enrôlement imposé pour les rôles de la politique et MFA en libre service. Désactivé : nom d'utilisateur et mot de passe seulement.
admin_usernameNM_ADMIN_USERNAMEchaînenavinNom d'utilisateur de l'administrateur local initial, créé au premier démarrage de navin-manager serve.
admin_passwordNM_ADMIN_PASSWORDchaîne ou null(aucune)Mot de passe à usage unique de l'administrateur initial, à changer à la première connexion ; jamais réappliqué par un redémarrage (navin-manager reset-admin le réapplique). Placez-le dans server.env. Rien n'est créé tant qu'il est vide.

Supervision​

CléVariable d'environnementTypeDéfautDescription
metrics_tokenNM_METRICS_TOKENchaîne ou null(aucune)Jeton porteur que Prometheus envoie pour lire /metrics. Au moins 32 caractères en production ; le paquet en écrit un aléatoire.
service_health_retention_daysNM_SERVICE_HEALTH_RETENTION_DAYSentier30Jours d'échantillons de santé des services (nm.service_health_samples) conservés par la tâche retention.purge. Bornes : >= 1, <= 3650.

Télémétrie vers ClickHouse​

CléVariable d'environnementTypeDéfautDescription
clickhouse_urlNM_CLICKHOUSE_URLchaîne ou null(aucune)Adresse de ClickHouse qui reçoit la télémétrie en temps réel. Vide : télémétrie désactivée.
clickhouse_userNM_CLICKHOUSE_USERchaînenavin_managerUtilisateur ClickHouse.
clickhouse_passwordNM_CLICKHOUSE_PASSWORDchaîne ou null(aucune)Mot de passe ClickHouse (dans server.env).
clickhouse_password_fileNM_CLICKHOUSE_PASSWORD_FILEchaîne ou null(aucune)Fichier contenant le mot de passe ClickHouse.
clickhouse_databaseNM_CLICKHOUSE_DATABASEchaînenavin_managerBase ClickHouse.
clickhouse_ca_fileNM_CLICKHOUSE_CA_FILEchaîne ou null(aucune)Fichier d'autorité de certification (PEM) qui vérifie le certificat de ClickHouse.
clickhouse_timeout_secondsNM_CLICKHOUSE_TIMEOUT_SECONDSnombre10.0Délai maximal en secondes d'une requête ClickHouse. Bornes : > 0, <= 120.
clickhouse_flush_secondsNM_CLICKHOUSE_FLUSH_SECONDSnombre5.0Intervalle en secondes entre deux écritures du tampon. Bornes : > 0, <= 300.
clickhouse_buffer_rowsNM_CLICKHOUSE_BUFFER_ROWSentier200000Nombre maximal de lignes gardées en mémoire tant que ClickHouse est injoignable. Bornes : >= 1000, <= 10000000.
clickhouse_retention_daysNM_CLICKHOUSE_RETENTION_DAYSentier90Jours de télémétrie conservés dans ClickHouse. Bornes : >= 1, <= 3650.

Registre MCP​

CléVariable d'environnementTypeDéfautDescription
mcp_internal_hostsNM_MCP_INTERNAL_HOSTSchaîne ou liste de chaînes""Hôtes internes qu'une adresse de serveur MCP du registre peut nommer : une chaîne séparée par des virgules ou une liste d'hôtes exacts, hôte:port, *.suffixe ou CIDR. Vide : seules les adresses IP des plages privées (RFC 1918, IPv6 ULA).
mcp_validated_presetsNM_MCP_VALIDATED_PRESETSchaîne ou liste de chaînes""Préréglages de la bibliothèque Navin validés par l'entreprise et publiés dans son catalogue MCP (chaîne séparée par des virgules ou liste de noms de préréglages). Un serveur stdio créé depuis l'un d'eux, commande et arguments inchangés, est fiable et peut être hébergé par un mcp-host dont l'isolation est process ; tout autre serveur est non fiable et n'est hébergé que par un mcp-host dont l'isolation est container (409 mcp_untrusted_needs_container). Vide : aucun serveur n'est fiable.

Autres variables d'environnement du serveur​

Ces variables sont lues directement par le code du serveur, hors de la classe Settings. Elles n'ont pas de clé dans server.yaml.

Variable d'environnementDéfautDescription
NM_CONFIG_FILE/etc/navin-manager/server.yamlFichier YAML des paramètres (défini par l'unité systemd).
NM_PKI_DIR/var/lib/navin-manager/pkiRépertoire où le serveur écrit l'autorité de certification et le certificat de l'écoute des agents (défini par l'unité systemd).
NM_AGENT_TLS_SANS(aucune)Noms supplémentaires du certificat de l'écoute des agents, séparés par des virgules, ajoutés au FQDN de l'hôte (par exemple une IP virtuelle ou un alias DNS).
NM_BACKUP_KEYS(aucune)Clés de garde des sauvegardes chiffrées : <réf>:<base64 de 32 octets>, séparées par des virgules. Une sauvegarde scellée avec une référence inconnue échoue avec backup_key_unknown.

Paramètres enregistrés en base​

Ces paramètres se modifient dans la console (Administration > Paramètres) ou avec PUT /api/v1/settings, et sont enregistrés dans la table nm.settings (navin_manager/settings_store.py). Les champs secrets sont scellés avec la clé maîtresse et jamais renvoyés par l'API.

GroupeChampDéfautDescription
generalsite_nameNavin ManagerNom affiché dans l'en-tête de la console.
generaldefault_languageenLangue par défaut de la console (en ou fr).
installpreferred_methodbinaryMéthode d'installation présélectionnée par l'assistant (binary, podman, python, package).
installregistry""Registre de conteneurs utilisé par les installations.
installmirror_url""Adresse du miroir externe utilisé par les installations.
installmirror_ca_pem""Autorité de certification (PEM) du miroir externe.
smtphost""Serveur SMTP des notifications par courriel.
smtpport587Port SMTP.
smtpstarttlstrueUtiliser STARTTLS.
smtpusername""Nom d'utilisateur SMTP.
smtpfrom""Adresse de l'expéditeur.
sysloghost""Serveur syslog des notifications.
syslogport514Port syslog.
syslogprotocoludpudp ou tcp.
syslogfacilitylocal0Catégorie (facility) syslog.
retentionmetrics_days30Jours de métriques des hôtes conservés.
retentiontask_logs_days90Jours de journaux de tâches conservés.
retentionoperations_days365Jours d'opérations conservés.
proxyhttp_proxy""Proxy HTTP des hôtes gérés (http:// ou https://, sans identifiants ni chemin).
proxyhttps_proxy""Proxy HTTPS des hôtes gérés.
proxyno_proxy""Hôtes joints sans le proxy ; localhost, 127.0.0.1, ::1 et le Manager sont toujours ajoutés.
huburl""Adresse du Navin Trusted Hub.
hubexpected_hub""Identité du Navin Trusted Hub acceptée par ce Manager (champ hub du document signé) ; obligatoire avant toute ingestion de document. Elle ne peut pas être remplacée par un autre hub une fois un document accepté ; la vider arrête l'ingestion.
hubcustomer""Identifiant client auprès du Hub.
hubtrusted_keys_pem""Clés publiques Ed25519 épinglées (PEM) qui signent le catalogue du Hub.
hubenforcefalseN'installer que les artefacts (images, binaires, archives, fichiers wheel) dont le document signé du Hub approuve l'empreinte ; exigé par le profil banking-secure.
hubca_pem""Autorité de certification (PEM) du Hub.
smtppassword(secret, scellé)Mot de passe SMTP.
hubtoken(secret, scellé)Jeton d'accès au Hub.