Frappe Framework
Configuration (site_config.json)
Chaque site a son fichier, le bench a le commun. Les clés obligatoires sont le type, le nom et le mot de passe de la base. extra_config s’exécute à chaque requête.
Deux fichiers
Plusieurs sites partagent le serveur, avec des bases et des domaines différents. site_config.json, dans le dossier du site, est créé par Frappe. L’exemple contient db_name, db_password et admin_password. Sa perte ou sa corruption est grave : les installations habituelles le sauvegardent avec la base. Les sites et set-config s’y rattachent.
common_site_config.json est commun au bench, géré par la CLI. L’exemple publié fixe workers, mode développeur, DNS multitenant, ports Redis 13000, 11000 et 12000, sentinelles, scheduler_tick_interval 120, serve_default_site, socketio 9000, web 8000, root_password, live_reload.
workers crée des workers nommés, avec timeout et, en option, background_workers. Sans ce nombre, le général s’applique. Il faut régénérer la config et redémarrer. Les sentinelles Redis, cache et file, s’activent à 1, avec la liste d’hôtes, le mot de passe, le service maître et son mot de passe. Toute autre clé du commun est disponible pour tous les sites.
Priorité
Une clé du site l’emporte sur la même clé du commun. Le commun sert de repli. Exemple : enable_frappe_logger vrai pour le bench, faux pour worker.frappe.xyz.
bench config set-common-config -c enable_frappe_logger true
bench --site worker.frappe.xyz set-config enable_frappe_logger falseDéplacer toutes les bases se résume alors à mettre à jour le commun.
Clés obligatoires
Posées dans le site, générées sauf si on les donne à la création : db_type (mariadb ou postgres), db_name (aussi l’utilisateur par défaut), db_password.
Clés facultatives
admin_password sert à l’Administrator des nouveaux sites. allow_tests autorise les tests. allow_cors prend une origine, une liste, ou * (déconseillé en production). allowed_referrers laisse passer le CSRF si le referer ou l’origine est dans la liste. backup_encryption_key chiffre les sauvegardes. data_import_batch_size. Depuis la v16, db_user sépare l’utilisateur du nom de base. deny_multiple_logins et deny_multiple_sessions. developer_mode écrit les DocTypes dans les fichiers. disable_async arrête le client Socket.IO. disable_error_snapshot, disable_global_search, disable_scheduler, disable_session_cache, disable_website_cache. encryption_key chiffre les mots de passe, créé sur un site neuf : à la restauration, il faut le remettre pour relire les mots de passe existants. enable_frappe_logger écrit ./sites/{site}/logs/frappe.web.log. error_report_email. ignore_csrf. install_apps liste les apps à installer au restore, au reinstall et à la création. host_name doit porter le protocole et le port s’il n’est pas celui par défaut, sans barre finale. Le texte écrit « his is required ». http_port. keep_backups_for_hours retient les fichiers selon leur âge. local_infile pour MySQL. logging à 2 montre requêtes et résultats. maintenance_mode. max_file_size, défaut 10 Mio. max_reports_per_user, défaut 3. monitor écrit ./logs/monitor.json.log, voir Profilage. mute_emails. pause_scheduler. rate_limit, voir Limitation de débit. robots_txt. root_login et root_password. server_script_enabled. skip_setup_wizard. socketio_backend : node par défaut, ou python. Le texte écrit « Implementaion ». socketio_port. webserver_port sert de repli à http_port. app_include_js et app_include_css sont des listes d’URL absolues injectées dans /app. disable_transaction_log coupe le journal de transaction des factures de vente et des paiements, fonction régionale ERPNext.
Base distante et réplica
Pour SSL, l’hôte doit d’abord l’accepter. Les trois fichiers doivent être posés ensemble : db_ssl_ca, db_ssl_cert, db_ssl_key, chemins complets. db_host si ce n’est pas localhost, db_port, rds_db pour des privilèges limités à la création.
Le réplica est détaillé dans Lectures depuis une base secondaire. read_from_replica vaut 1/0 ou true/false. different_credentials_for_replica vaut 1 si les identifiants diffèrent. replica_host (le texte écrit « repica »), replica_db_name, replica_db_password.
auto_email_id est l’expéditeur par défaut. mail_login est la seconde préférence, puis [email protected]. La même clé est redéfinie plus bas comme identifiant SMTP. always_use_account_email_id_as_sender, always_use_account_name_as_sender_name, email_sender_name, mail_server, mail_port (le texte écrit « STMP »), mail_password, pop_timeout, use_ssl, use_tls.
Bench
restart_supervisor_on_update, restart_systemd_on_update, release_bench (le bench ne sert qu’aux releases), background_workers, dns_multitenant (le texte écrit « multitenany »), file_watcher_port, frappe_user, gunicorn_workers (minimum par défaut 2), gunicorn_max_requests (défaut 5000), maintenance_mode (sites hors ligne, jobs arrêtés, pendant migration ou update), pause_scheduler, redis_cache, redis_queue et redis_socketio décrits ici comme des numéros de port alors que l’exemple du commun est une URL redis://, scheduler_tick_interval (le texte dit 60 secondes par défaut, l’exemple du commun met 120), socketio_port, webserver_port, live_reload.
Intégrations
Sandbox : api key, secret, password, username, publishable key, signature. Dropbox : access key, broker site, secret key. PayPal : username, password, signature. google_analytics_id. converted_rupee_to_paisa pour Razorpay.
Extension et environnement
extra_config est un chemin de méthode, ou une liste, qui renvoie un dictionnaire fusionné. L’exemple vault.vault.conf_hook renvoie db_password. À installer après la création du site. La méthode tourne à chaque requête : une latence basse est préférable.
Certaines clés cèdent à l’environnement, dans l’ordre publié : environnement, puis config du site, puis valeur par défaut. FRAPPE_REDIS_QUEUE, FRAPPE_REDIS_CACHE, FRAPPE_DB_TYPE, FRAPPE_DB_SOCKET, FRAPPE_DB_HOST, FRAPPE_DB_PORT, FRAPPE_DB_USER, FRAPPE_DB_NAME, FRAPPE_DB_PASSWORD.
Point d’attention
Sans encryption_key restaurée, les mots de passe déjà chiffrés ne se relisent pas. allow_cors à * est déconseillé en production. Le site gagne sur le commun. L’environnement, pour les clés du tableau, gagne sur le site.
