Configuration du Système
OmniCRM utilise deux principaux systèmes de configuration : crm_config.yaml pour les paramètres de l'API backend et variables d'environnement pour l'interface utilisateur React. Ce guide couvre toutes les options de configuration et comment les modifier.
Aperçu des Fichiers de Configuration
Configuration de l'API Backend :
- Fichier :
OmniCRM-API/crm_config.yaml - Format : YAML
- Nécessite : Redémarrage de l'API après modifications
- Utilisé pour : Base de données, intégrations, sécurité, provisionnement
Configuration de l'Interface Utilisateur Frontend :
- Fichier :
OmniCRM-UI/.env - Format : Variables d'environnement
- Nécessite : Reconstruction de l'UI après modifications
- Utilisé pour : Branding, fonctionnalités, services externes
Configuration Backend (crm_config.yaml)
Le fichier crm_config.yaml contient tous les paramètres du système backend.
Configuration de la Base de Données
database:
username: omnitouch
password: omnitouch2024
server: localhost
Champs :
username- Nom d'utilisateur de la base de données MySQLpassword- Mot de passe de la base de données MySQLserver- Nom d'hôte ou IP du serveur de base de données (par défaut : localhost)
Connexion à la Base de Données :
- Le nom de la base de données est codé en dur comme
omnicrm - Port par défaut : 3306 (par défaut MySQL)
- Chaîne de connexion :
mysql+pymysql://username:password@server/omnicrm
Remarque de Sécurité : Ne jamais valider ce fichier avec de vraies informations d'identification dans le contrôle de version. Utilisez une configuration spécifique à l'environnement ou une gestion des secrets.
Types de Services
service_types:
- omnicharge
- mobile
- internet
- iptv
- voip
But : Définit les valeurs de type de service valides pour le champ service_type.
Types Par Défaut :
mobile- Services mobiles/ cellulairesinternet- Internet fixe (fibre, DSL, sans fil)iptv- Services de télévisionvoip- Services de voix sur IPomnicharge- Services de facturation/chargement
Ajoutez des types de services personnalisés ici pour vos cas d'utilisation spécifiques.
Configuration HSS (Home Subscriber Server)
hss:
hss_peers:
- 'http://10.179.2.140:8080'
apn_list: "1,2,3,4,5,6"
Champs :
hss_peers- Liste des URL des serveurs HSS pour la gestion des abonnésapn_list- Liste séparée par des virgules des identifiants APN (Access Point Name)
Utilisé pour : Provisionnement de réseau mobile et authentification des abonnés.
Configuration de Mailjet Email
mailjet:
api_key: your_mailjet_api_key
api_secret: your_mailjet_api_secret
api_crmCommunicationCustomerWelcome:
from_email: "support@yourcompany.com"
from_name: "Votre Support Entreprise"
template_id: 5977509
subject: "Bienvenue chez Votre Entreprise"
api_crmCommunicationCustomerInvoice:
from_email: "billing@yourcompany.com"
from_name: "Votre Facturation Entreprise"
template_id: 6759851
subject: "Votre Facture - "
Types d'Email Configurés :
api_crmCommunicationCustomerWelcome- Email de bienvenue pour les nouveaux clientsapi_crmCommunicationCustomerInvoice- Livraison de factureapi_crmCommunicationCustomerInvoiceReminder- Rappels de facture en retardapi_crmCommunicationUserWelcome- Bienvenue pour le nouvel utilisateur du personnelapi_crmCommunicationUserPasswordReset- Demandes de réinitialisation de mot de passeapi_crmCommunicationUserPasswordResetSuccess- Réinitialisation de mot de passe réussieapi_crmCommunicationUserPasswordChange- Notifications de changement de mot de passeapi_crmCommunicationEmailVerification- Vérification de l'adresse emailapi_crmCommunicationsBalanceExpired- Notifications d'expiration de serviceapi_crmCommunicationsBalanceLow- Alertes de solde faible
IDs de Modèle :
Obtenez-les depuis votre compte Mailjet après avoir créé des modèles d'email. Voir integrations_mailjet pour les détails.
Configuration de Provisionnement
provisioning:
failure_list: ['admin@yourcompany.com', 'ops@yourcompany.com']
Champs :
failure_list- Adresses email à notifier lorsque le provisionnement échoue
Lorsque les playbooks Ansible échouent pendant le provisionnement, le système envoie les détails des erreurs à ces adresses.
Configuration de Facture
invoice:
template_filename: 'your_invoice_template.html'
Champs :
template_filename- Fichier de modèle HTML pour la génération de factures
Le fichier de modèle doit exister dans le répertoire OmniCRM-API/templates/.
URL de Base du CRM
crm:
base_url: 'http://localhost:5000'
But : Utilisé par les playbooks Ansible pour effectuer des appels API vers le CRM.
Important :
- Ne PAS inclure de barre oblique à la fin
- Utilisez une URL accessible publiquement si les playbooks s'exécutent sur des serveurs différents
- Mettez à jour lors du déploiement en production (par exemple,
https://api.yourcrm.com)
Configuration OCS (Online Charging System)
ocs:
ocsApi: 'http://10.179.2.142:8080/api'
ocsTenant: 'mnc380.mcc313.3gppnetwork.org'
cgrates: 'localhost:2080'
Champs :
ocsApi- URL du point de terminaison de l'API REST OCSocsTenant- Identifiant du locataire pour les déploiements OCS multi-locatairescgrates- Point de terminaison CGRateS JSON-RPC (hôte:port)
Utilisé pour : Chargement en temps réel, gestion des soldes, suivi de l'utilisation.
Configuration SMSC (SMS Center)
smsc:
source_msisdn: 'YourCompany'
smsc_url: 'http://10.179.2.216/SMSc/'
api_key: 'your_smsc_api_key'
Champs :
source_msisdn- ID d'expéditeur pour les SMS sortants (nom de l'entreprise ou code court)smsc_url- Point de terminaison de l'API du Centre SMSapi_key- Clé d'authentification pour l'API SMSC
Utilisé pour : Envoi de notifications SMS (alertes de solde, OTP, etc.)
Configuration de Cell Broadcast
cbc_url: 'http://10.179.1.113:8080'
But : Point de terminaison de l'API du Centre de Diffusion Cellulaire (CBC) pour les alertes d'urgence.
Voir features_cell_broadcast pour les détails d'utilisation.
Clé Secrète JWT
jwt_secret: '2b93110f723db60172c8e9a1eaa80027a9a9c3f05b44e50dc3fcf38dba68d87e'
But : Clé secrète pour signer les jetons d'authentification JWT.
Sécurité :
- Générer en utilisant :
openssl rand -hex 32 - Ne jamais partager publiquement
- Changer cela invalide toutes les sessions utilisateur existantes
- Utilisez des secrets différents pour dev/staging/production
Configuration de Paiement Stripe
stripe:
secret_key: 'sk_test_...'
publishable_key: 'pk_test_...'
currency: 'usd'
statement_descriptor_suffix: 'YOURCOMPANY'
Champs :
secret_key- Clé API secrète Stripe (commence parsk_)publishable_key- Clé publiable Stripe (commence parpk_)currency- Code de devise ISO 4217 (usd, gbp, aud, eur, etc.)statement_descriptor_suffix- Texte apparaissant sur les relevés de carte de crédit des clients
Types de Clés :
- Clés de test :
sk_test_...etpk_test_...(pour le développement) - Clés en direct :
sk_live_...etpk_live_...(pour la production)
Voir integrations_stripe pour les détails de configuration.
Clés API
api_keys:
"your-secure-api-key-minimum-32-chars":
roles: ["admin"]
ips: ["127.0.0.1", "::1"]
"another-api-key-for-specific-service":
roles: ["customer_service_agent_1"]
ips: ["10.0.1.50"]
Structure :
- Clé (chaîne) : La clé API réelle (minimum 32 caractères)
- roles (liste) : Noms de rôle auxquels cette clé a accès
- ips (liste, optionnelle) : Adresses IP autorisées à utiliser cette clé
Génération de Clés API :
openssl rand -base64 48
Rôles :
admin- Accès complet à tous les points de terminaison- Rôles personnalisés définis dans le système RBAC
Voir administration_api_keys et concepts_api pour les détails.
Liste Blanche d'IP
ip_whitelist:
"10.179.2.142":
roles: ["admin"]
"192.168.1.100":
roles: ["provisioning"]
But : Permettre à des adresses IP spécifiques d'accéder à l'API sans authentification.
Structure :
- Adresse IP (chaîne) : Adresse IPv4 à mettre sur liste blanche
- roles (liste) : Rôles attribués aux demandes provenant de cette IP
Avertissement de Sécurité :
- Utiliser uniquement pour des réseaux internes de confiance
- Ne pas utiliser d'IP localhost (127.0.0.1, ::1)
- Utiliser des clés API à la place pour un accès externe
- Considérer les règles de pare-feu comme protection supplémentaire
Configuration Frontend (.env)
L'interface utilisateur React est configurée via des variables d'environnement dans OmniCRM-UI/.env.
Configuration de Branding
REACT_APP_COMPANY_NAME="VotreEntreprise"
REACT_APP_PORTAL_NAME="VotrePortail"
REACT_APP_SELF_CARE_NAME="VotreSoin"
REACT_APP_COMPANY_TAGLINE="Votre Slogan d'Entreprise"
Champs :
REACT_APP_COMPANY_NAME- Nom de l'entreprise (apparaît dans les en-têtes, emails, branding)REACT_APP_PORTAL_NAME- Nom du portail admin (titres de page, navigation)REACT_APP_SELF_CARE_NAME- Nom du portail clientREACT_APP_COMPANY_TAGLINE- Slogan marketing (apparaît sur la page de connexion)
Exemple :
Configuration Régionale
REACT_APP_DEFAULT_LOCATION="Londres, Royaume-Uni"
REACT_APP_DEFAULT_COUNTRY="Royaume-Uni"
REACT_APP_DEFAULT_LANGUAGE="en"
REACT_APP_LOCALE="en-GB"
Champs :
REACT_APP_DEFAULT_LOCATION- Emplacement par défaut pour les cartes et adressesREACT_APP_DEFAULT_COUNTRY- Pays par défaut pour les formulairesREACT_APP_DEFAULT_LANGUAGE- Langue de l'UI (ar, ch, en, fr, gr, it, ru, sp)REACT_APP_LOCALE- Locale de formatage de date/nombre (en-GB, en-US, etc.)
Langues Supportées :
ar- Arabech- Chinoisen- Anglais (par défaut)fr- Françaisgr- Grecit- Italienru- Russesp- Espagnol
Configuration de Devise
REACT_APP_CURRENCY_CODE="USD"
REACT_APP_CURRENCY_SYMBOL="$"
Champs :
REACT_APP_CURRENCY_CODE- Code de devise ISO 4217REACT_APP_CURRENCY_SYMBOL- Symbole à afficher (£, $, €, etc.)
Devises Courantes :
- USD - $ (Dollar US)
- GBP - £ (Livre Sterling)
- EUR - € (Euro)
- AUD - $ (Dollar Australien)
- CAD - $ (Dollar Canadien)
Remarque : Doit correspondre à stripe.currency dans crm_config.yaml.
Configuration de Thème de Couleur
REACT_APP_PRIMARY_COLOR=#405189
REACT_APP_SECONDARY_COLOR=#2bFFcf
REACT_APP_TERTIARY_COLOR=#1a9fbf
Couleurs Disponibles :
REACT_APP_PRIMARY_COLOR- Couleur principale de la marque (boutons, liens, surlignages)REACT_APP_SECONDARY_COLOR- Couleur d'accentREACT_APP_TERTIARY_COLOR- Accent supplémentaireREACT_APP_SUCCESS_COLOR- Messages de succès (#28a745)REACT_APP_INFO_COLOR- Messages d'information (#17a2b8)REACT_APP_WARNING_COLOR- Avertissements (#ffc107)REACT_APP_DANGER_COLOR- Erreurs (#dc3545)REACT_APP_LIGHT_COLOR- Arrière-plans clairs (#f8f9fa)REACT_APP_DARK_COLOR- Texte sombre (#343a40)REACT_APP_PRIMARY_DARK_COLOR- Variante sombre de la couleur primaire (pour le mode sombre/états de survol)
Format : Codes de couleur hexadécimaux (#RRGGBB)
Configuration de Police
REACT_APP_FONT_FAMILY=Quicksand
But : Définit la famille de police principale pour l'ensemble de l'UI.
Important : Toutes les polices sont auto-hébergées localement au sein de l'application OmniCRM-UI. Cela signifie :
- Pas de chargement de police externe - Les polices sont regroupées avec l'application
- Compatible jardin clos - Aucun accès Internet requis pour que les polices fonctionnent
- Fonctionnement hors ligne - Fonctionnalité complète dans des environnements réseau isolés ou restreints
- Confidentialité - Pas de requêtes externes vers Google Fonts, Adobe Fonts ou d'autres CDN
- Performance - Chargement plus rapide sans dépendances externes
- Sécurité - Pas de suivi tiers ou de fuite de données via des requêtes de police
Options Disponibles :
Polices Sans Serif :
- Inter
- Roboto
- Open Sans
- Lato
- Quicksand (par défaut)
- Poppins
- Nunito
- Montserrat
- Work Sans
- Source Sans Pro
- Raleway
- Ubuntu
- Josefin Sans
- HKGrotesk
Polices Serif :
- Merriweather
- Lora
- Playfair Display
Polices Système :
- Système - Utilise les polices natives de l'appareil pour une meilleure performance et une taille de bundle plus petite
Par Défaut : Quicksand
Ajout de Polices Personnalisées
Oui, vous pouvez ajouter des polices supplémentaires ! Toutes les polices sont stockées localement dans l'application.
Pour ajouter une nouvelle police personnalisée :
-
Ajoutez les fichiers de police dans
OmniCRM-UI/src/assets/fonts/your-font-name/- Utilisez le format WOFF2 pour une meilleure compression et un meilleur support des navigateurs
- Incluez plusieurs poids (300, 400, 500, 600, 700) pour un rendu approprié
- Nommez les fichiers :
your-font-name-300.woff2,your-font-name-400.woff2, etc.
-
Définissez les règles @font-face dans
OmniCRM-UI/src/assets/scss/fonts/_google-fonts.scss//
// Votre Police Personnalisée - Description
//
@font-face {
font-family: 'Votre Nom de Police';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("../../fonts/your-font-name/your-font-name-400.woff2") format('woff2');
}
@font-face {
font-family: 'Votre Nom de Police';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("../../fonts/your-font-name/your-font-name-700.woff2") format('woff2');
} -
Définissez dans le fichier .env :
REACT_APP_FONT_FAMILY=Votre Nom de Police
Directives de Poids de Police :
- 300 - Léger (optionnel, pour des titres subtils)
- 400 - Régulier (obligatoire, texte par défaut)
- 500 - Moyen (optionnel, accentuation)
- 600 - Semi-Gras (optionnel, sous-titres)
- 700 - Gras (obligatoire, titres et texte fort)
Remarque : Toutes les polices restent auto-hébergées et fonctionnent hors ligne. Aucun CDN externe ou connexion Internet requise.
Services Externes
REACT_APP_GOOGLE_API_KEY=your_google_maps_api_key
REACT_APP_STRIPE_PUBLISHABLE_KEY=pk_test_...
Champs :
REACT_APP_GOOGLE_API_KEY- Clé API Google Maps (pour les cartes, géolocalisation)REACT_APP_STRIPE_PUBLISHABLE_KEY- Clé publiable Stripe (pour les paiements)
Doit Correspondre :
REACT_APP_STRIPE_PUBLISHABLE_KEY doit correspondre à stripe.publishable_key dans crm_config.yaml.
Liens Rapides vers l'Application Web
REACT_APP_WEB_APP_1_NAME="GitHub"
REACT_APP_WEB_APP_1_URL="https://github.com"
REACT_APP_WEB_APP_1_ICON_PATH="resources/webapp_icons/github.png"
But : Configurez jusqu'à 6 liens d'accès rapide vers des applications web dans la navigation de l'UI.
Modèle :
REACT_APP_WEB_APP_N_NAME- Nom affichéREACT_APP_WEB_APP_N_URL- URL cibleREACT_APP_WEB_APP_N_ICON_PATH- Chemin du fichier d'icône (relatif à public/)
Exemples d'Icônes : GitHub, Xero, Monday.com, Gmail, MailJet, Slack
Intégration Grafana
REACT_APP_GRAFANA_URLS=http://grafana1.local/d/abc,http://grafana2.local/d/xyz
REACT_APP_GRAFANA_LABELS=Surveillance Réseau,Santé du Service
REACT_APP_GRAFANA_API_KEY=your_grafana_api_key
Champs :
REACT_APP_GRAFANA_URLS- Liste séparée par des virgules des URL de tableaux de bord GrafanaREACT_APP_GRAFANA_LABELS- Liste séparée par des virgules des noms de tableaux de bordREACT_APP_GRAFANA_API_KEY- Clé API Grafana pour l'intégration
Utilisation : Intègre les tableaux de bord Grafana dans la page de tableau de bord d'OmniCRM.
URL de Support
REACT_APP_FAQS_URL=https://support.yourcompany.com/faqs
REACT_APP_SUPPORT_URL=https://support.yourcompany.com
But : Liens vers des ressources de support externes affichées dans l'UI.
Connexions Sociales
REACT_APP_ALLOW_SOCIAL_LOGINS=yes
Options :
yes- Activer les boutons de connexion sociale (Google, Facebook, etc.)no- Désactiver les connexions sociales
Remarque : Les fournisseurs de connexion sociale doivent être configurés séparément.
Configuration de Recharge et de Remplissage
REACT_APP_TOPUP_PRICE_PER_DAY=10
But : Définit le prix par jour pour les services de recharge/remplissage dans le portail de self-care.
Champs :
REACT_APP_TOPUP_PRICE_PER_DAY- Prix quotidien pour les services de recharge (valeur numérique)
Exemple : Si défini à 10 et que la devise est USD, les clients paient $10 par jour de service.
Remarque : Cette valeur doit correspondre à la configuration des prix backend. Voir features_topup_recharge pour les détails complets de configuration.
Application des Changements de Configuration
Backend (crm_config.yaml)
- Éditez
OmniCRM-API/crm_config.yaml - Enregistrez les modifications
- Redémarrez le service API :
cd OmniCRM-API
sudo systemctl restart omnicrm-api
# ou
./restart_api.sh
Les changements prennent effet immédiatement après le redémarrage.
Frontend (.env)
- Éditez
OmniCRM-UI/.env - Enregistrez les modifications
- Reconstruisez l'UI :
cd OmniCRM-UI
npm run build
- Redémarrez le service UI ou le serveur web
Mode Développement :
Pendant le développement avec npm start, redémarrez le serveur de développement pour appliquer les changements.
Meilleures Pratiques de Configuration
Sécurité
- Ne jamais valider de secrets - Utilisez
.gitignorepour les fichiers de configuration avec des informations d'identification - Utilisez des configurations spécifiques à l'environnement - Séparez les configurations dev/staging/production
- Faites tourner les secrets régulièrement - Mettez à jour les secrets JWT, les clés API périodiquement
- Limitez les permissions des clés API - Attribuez les rôles minimaux nécessaires
- Utilisez la liste blanche d'IP avec parcimonie - Préférez les clés API pour une meilleure sécurité
Maintenance
- Documentez les changements - Gardez un changelog des modifications de configuration
- Sauvegardez les configs - Conservez des copies avant les changements majeurs
- Testez en staging - Vérifiez les changements de configuration avant le déploiement en production
- Contrôle de version - Suivez les modèles de configuration (sans secrets) dans git
Performance
- Utilisez une base de données locale - Évitez la base de données distante pour de meilleures performances
- Configurez le caching - Activez le caching OCS si disponible
- Optimisez Grafana - Limitez le nombre de tableaux de bord intégrés
Branding
- Correspondance des couleurs - Assurez-vous que les couleurs de l'UI complètent votre logo
- Testez le contraste - Vérifiez la lisibilité du texte sur des arrière-plans colorés
- Tests mobiles - Vérifiez le branding sur des appareils mobiles
- Placement du logo - Placez les logos de l'entreprise dans
OmniCRM-UI/public/resources/
Dépannage
Changements non appliqués
- Cause : Service non redémarré ou UI non reconstruite
- Solution : Redémarrez les services API/UI après les changements de configuration
Erreurs de syntaxe YAML
- Cause : Formatage YAML invalide (indentation, guillemets, etc.)
- Solution : Validez le YAML en ligne ou utilisez
yamllint crm_config.yaml
Échec de la connexion à la base de données
- Cause : Mauvaises informations d'identification ou serveur inaccessible
- Solution : Vérifiez que la base de données fonctionne, que les informations d'identification sont correctes
Les paiements Stripe ne fonctionnent pas
- Cause : Clés non correspondantes entre le backend et le frontend
- Solution : Assurez-vous que
publishable_keycorrespond dans les deux fichiers
Emails non envoyés
- Cause : Informations d'identification Mailjet invalides ou IDs de modèle
- Solution : Vérifiez la clé/secrète API Mailjet, vérifiez que les IDs de modèle existent
Documentation Connexe
administration_api_keys- Gestion des clés APIintegrations_stripe- Configuration de paiement Stripeintegrations_mailjet- Intégration d'emailconcepts_api- Authentification APIrbac- Contrôle d'accès basé sur les rôles