[{"data":1,"prerenderedAt":7035},["Reactive",2],{"navigation":3,"/dodock/installation/plus/installation-rhel-8-9":2071,"/dodock/installation/plus/installation-rhel-8-9-surround":7032},[4,1149,1811,1953,1979],{"title":5,"_path":6,"children":7,"icon":1148},"Dokos","/dokos",[8,11,93,121,154,215,245,284,302,394,439,467,491,738,794,806,822,875,898,902,906,1114,1116],{"title":9,"_path":6,"icon":10},"Bienvenue sur l'écosystème Dokos","i-icon-park-outline-fireworks",{"title":12,"_path":13,"children":14,"icon":92},"Paramétrage","/dokos/parametrage",[15,16,19,22,25,28,31,34],{"title":12,"_path":13},{"title":17,"_path":18},"La société","/dokos/parametrage/societe",{"title":20,"_path":21},"Le plan comptable","/dokos/parametrage/plan-comptable",{"title":23,"_path":24},"Les articles","/dokos/parametrage/articles",{"title":26,"_path":27},"Les prix","/dokos/parametrage/prix",{"title":29,"_path":30},"Les clients","/dokos/parametrage/clients",{"title":32,"_path":33},"Les fournisseurs","/dokos/parametrage/fournisseurs",{"title":35,"_path":36,"children":37},"Démarrage","/dokos/parametrage/demarrage",[38,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84],{"title":35,"_path":36},{"title":40,"_path":41},"Importateur de plans de comptes","/dokos/parametrage/demarrage/plan-comptable",{"title":43,"_path":44},"Configuration de la société","/dokos/parametrage/demarrage/societe",{"title":46,"_path":47},"Configurer les taxes","/dokos/parametrage/demarrage/taxes",{"title":49,"_path":50},"Paramètres de nommage des documents","/dokos/parametrage/demarrage/masques-numerotation",{"title":52,"_path":53},"Outil d'importation de données","/dokos/parametrage/demarrage/import-de-donnees",{"title":55,"_path":56},"Export de données","/dokos/parametrage/demarrage/export-de-donnees",{"title":58,"_path":59},"Les paramètres système","/dokos/parametrage/demarrage/parametres-systeme",{"title":61,"_path":62},"Valeurs par défaut globales","/dokos/parametrage/demarrage/valeurs-globales",{"title":64,"_path":65},"Termes et conditions","/dokos/parametrage/demarrage/termes-et-conditions",{"title":67,"_path":68},"Utilisateurs, rôles et autorisations","/dokos/parametrage/demarrage/utilisateurs-et-autorisations",{"title":70,"_path":71},"Définition de l'objectif de vente de l'entreprise","/dokos/parametrage/demarrage/objectifs-de-vente",{"title":73,"_path":74},"Téléchargement de sauvegardes","/dokos/parametrage/demarrage/sauvegardes",{"title":76,"_path":77},"Notifications","/dokos/parametrage/demarrage/notifications",{"title":79,"_path":80},"Imprimer les titres","/dokos/parametrage/demarrage/titres",{"title":82,"_path":83},"Modèle d'adresse","/dokos/parametrage/demarrage/modele-adresse",{"title":85,"_path":86,"children":87},"Flux de travail","/dokos/parametrage/demarrage/workflows",[88,89],{"title":85,"_path":86},{"title":90,"_path":91},"Règle d'attribution","/dokos/parametrage/demarrage/workflows/assignment-rule","i-icon-park-outline-ad-product",{"title":94,"_path":95,"children":96,"icon":120},"Achats","/dokos/achats",[97,99,102,105,108,111,114,117],{"title":98,"_path":95},"Introduction",{"title":100,"_path":101},"Paramètres des achats","/dokos/achats/parametres-achats",{"title":103,"_path":104},"Devis Fournisseur","/dokos/achats/devis-fournisseurs",{"title":106,"_path":107},"Commande Fournisseur","/dokos/achats/commandes-fournisseur",{"title":109,"_path":110},"Facture d'achat","/dokos/achats/factures-achats",{"title":112,"_path":113},"Appel d'offre","/dokos/achats/appel-offre",{"title":115,"_path":116},"Carte de pointage des fournisseurs","/dokos/achats/evaluation-fournisseurs",{"title":118,"_path":119},"Modèle de taxes et frais d'achat","/dokos/achats/taxes","i-icon-park-outline-buy",{"title":122,"_path":123,"children":124,"icon":153},"Immobilisations","/dokos/actifs",[125,126,129,132,135,138,141,144,147,150],{"title":98,"_path":123},{"title":127,"_path":128},"Premiers pas avec les actifs","/dokos/actifs/demarrer",{"title":130,"_path":131},"Les actifs","/dokos/actifs/actif",{"title":133,"_path":134},"Amortissement des actifs","/dokos/actifs/depreciation-actif",{"title":136,"_path":137},"Ajustement de la valeur de l'actif","/dokos/actifs/ajustment-de-la-valeur-des-actifs",{"title":139,"_path":140},"Achat d'un actif","/dokos/actifs/acheter-un-actif",{"title":142,"_path":143},"Réparation d'actifs","/dokos/actifs/reparation-actifs",{"title":145,"_path":146},"Vendre un actif","/dokos/actifs/vendre-un-actif",{"title":148,"_path":149},"Mouvement d'actif","/dokos/actifs/mouvements-actifs",{"title":151,"_path":152},"Maintenance des actifs","/dokos/actifs/maintenance-des-actifs","i-carbon-asset",{"title":155,"_path":156,"children":157,"icon":214},"Comptabilité","/dokos/comptabilite",[158,159,162,165,168,171,174,177,180,183,186,189,192,195,198],{"title":98,"_path":156},{"title":160,"_path":161},"Paramètres de comptabilité","/dokos/comptabilite/parametres-comptabilite",{"title":163,"_path":164},"Exercice fiscal","/dokos/comptabilite/exercice-fiscal",{"title":166,"_path":167},"Période comptable","/dokos/comptabilite/periode-comptable",{"title":169,"_path":170},"Journal Comptable","/dokos/comptabilite/journal-comptable",{"title":172,"_path":173},"Modes de paiement","/dokos/comptabilite/mode-de-paiement",{"title":175,"_path":176},"Compte bancaire","/dokos/comptabilite/compte-bancaire",{"title":178,"_path":179},"Dimensions comptables","/dokos/comptabilite/dimensions-comptables",{"title":181,"_path":182},"Écriture de journal","/dokos/comptabilite/ecriture-journal",{"title":184,"_path":185},"Ecriture de paiement","/dokos/comptabilite/ecriture-paiements",{"title":187,"_path":188},"Passerelles de paiement","/dokos/comptabilite/passerelles-paiements",{"title":190,"_path":191},"Rapprochement bancaire","/dokos/comptabilite/rapprochement-bancaire",{"title":193,"_path":194},"Synchronisation bancaire","/dokos/comptabilite/synchronisation-bancaire",{"title":196,"_path":197},"Prélèvement Sepa","/dokos/comptabilite/prelevement-sepa",{"title":199,"_path":200,"children":201},"Rapports","/dokos/comptabilite/rapports",[202,205,208,211],{"title":203,"_path":204},"Balance Générale","/dokos/comptabilite/rapports/balance-generale",{"title":206,"_path":207},"Bilan","/dokos/comptabilite/rapports/bilan",{"title":209,"_path":210},"Compte de résultat","/dokos/comptabilite/rapports/compte-de-resultat",{"title":212,"_path":213},"Grand Livre","/dokos/comptabilite/rapports/grand-livre","i-uil-balance-scale",{"title":216,"_path":217,"children":218,"icon":244},"CRM","/dokos/crm",[219,220,223,226,229,232,235,238,241],{"title":98,"_path":217},{"title":221,"_path":222},"Piste","/dokos/crm/piste",{"title":224,"_path":225},"Prospect","/dokos/crm/prospect",{"title":227,"_path":228},"Opportunité","/dokos/crm/opportunite",{"title":230,"_path":231},"Campagne","/dokos/crm/campagne",{"title":233,"_path":234},"Campagne d'emailing","/dokos/crm/email-campaign",{"title":236,"_path":237},"Contrat","/dokos/crm/contrat",{"title":239,"_path":240},"Newsletter","/dokos/crm/newsletter",{"title":242,"_path":243},"Rendez-vous","/dokos/crm/rendez-vous","i-carbon-chart-relationship",{"title":246,"_path":247,"children":248,"icon":283},"Ventes","/dokos/ventes",[249,250,253,256,259,262,265,268,271,274,277,280],{"title":246,"_path":247},{"title":251,"_path":252},"Paramètres de vente","/dokos/ventes/parametres-vente",{"title":254,"_path":255},"Devis Client","/dokos/ventes/devis",{"title":257,"_path":258},"Commande client","/dokos/ventes/commande-client",{"title":260,"_path":261},"Facture de vente","/dokos/ventes/facture-de-vente",{"title":263,"_path":264},"Modèle de taxes de vente et frais","/dokos/ventes/taxes",{"title":266,"_path":267},"Abonnements","/dokos/ventes/abonnements",{"title":269,"_path":270},"Partenaire commercial","/dokos/ventes/partenaire-commercial",{"title":272,"_path":273},"Code promotionnel","/dokos/ventes/code-promotionnel",{"title":275,"_path":276},"Vendeur","/dokos/ventes/commercial",{"title":278,"_path":279},"Demande de paiement","/dokos/ventes/demande-de-paiement",{"title":281,"_path":282},"Faq","/dokos/ventes/faq","i-ep-sell",{"title":285,"_path":286,"children":287,"icon":301},"Projets","/dokos/projets",[288,289,292,295,298],{"title":98,"_path":286},{"title":290,"_path":291},"Projet","/dokos/projets/projets",{"title":293,"_path":294},"Tâche","/dokos/projets/taches",{"title":296,"_path":297},"Feuille de temps","/dokos/projets/feuilles-de-temps",{"title":299,"_path":300},"Type d'activité","/dokos/projets/types-activite","i-eos-icons-project-outlined",{"title":303,"_path":304,"children":305,"icon":393},"Stocks","/dokos/stocks",[306,307,310,312,318,321,324,327,330,333,336,339,342,345,348,351,354,357,360,363,366,369,372,375,378,381,384,387,390],{"title":98,"_path":304},{"title":308,"_path":309},"Reçu d'achat","/dokos/stocks/recus-achats",{"title":281,"_path":311},"/dokos/stocks/faq",{"title":199,"_path":313,"children":314},"/dokos/stocks/rapports",[315],{"title":316,"_path":317},"Solde du stock","/dokos/stocks/rapports/solde-du-stock",{"title":319,"_path":320},"Remise supplémentaire","/dokos/stocks/applying-discount",{"title":322,"_path":323},"N° de Lot","/dokos/stocks/batch",{"title":325,"_path":326},"Bordereau de colis","/dokos/stocks/bordereau-colis",{"title":328,"_path":329},"Bon de livraison","/dokos/stocks/delivery-note",{"title":331,"_path":332},"Demande de matériel","/dokos/stocks/demande-materiel",{"title":334,"_path":335},"Ensemble de produit","/dokos/stocks/ensembles-de-produits",{"title":337,"_path":338},"Fabricant","/dokos/stocks/fabricant",{"title":340,"_path":341},"Attribut d'article","/dokos/stocks/item-attribute",{"title":343,"_path":344},"Groupe d'article","/dokos/stocks/item-group",{"title":346,"_path":347},"Informations sur les articles","/dokos/stocks/item-info",{"title":349,"_path":350},"Variantes d'article","/dokos/stocks/item-variants",{"title":352,"_path":353},"Stock d'ouverture","/dokos/stocks/opening-stock",{"title":355,"_path":356},"Retour d'achat","/dokos/stocks/purchase-return",{"title":358,"_path":359},"Inspection de la qualité","/dokos/stocks/quality-inspection",{"title":361,"_path":362},"Règle de livraison","/dokos/stocks/regle-de-livraison",{"title":364,"_path":365},"Règles de prix","/dokos/stocks/regles-de-prix",{"title":367,"_path":368},"Conservation du stock d'échantillons","/dokos/stocks/retain-sample-stock",{"title":370,"_path":371},"Retour des ventes","/dokos/stocks/sales-return",{"title":373,"_path":374},"Schéma promotionnel","/dokos/stocks/schemas-promotionnels",{"title":376,"_path":377},"Numéro de série","/dokos/stocks/serial-no",{"title":379,"_path":380},"Écriture de stock","/dokos/stocks/stock-entry",{"title":382,"_path":383},"Rapport sur le niveau de stock","/dokos/stocks/stock-level-report",{"title":385,"_path":386},"Paramètres de stock","/dokos/stocks/stock-settings",{"title":388,"_path":389},"Unité de mesure (UDM)","/dokos/stocks/uom",{"title":391,"_path":392},"Entrepôt","/dokos/stocks/warehouse","i-vaadin-stock",{"title":395,"_path":396,"children":397,"icon":438},"Production","/dokos/production",[398,399,402,405,411,414,417,420,423,426,429,432,435],{"title":98,"_path":396},{"title":400,"_path":401},"Paramètres de production","/dokos/production/parametres-de-production",{"title":403,"_path":404},"Introduction à la production","/dokos/production/demarrer",{"title":199,"_path":406,"children":407},"/dokos/production/rapports",[408],{"title":409,"_path":410},"Tableau de bord de production","/dokos/production/rapports/manufacturing",{"title":412,"_path":413},"Écriture de temps d'arrêt","/dokos/production/arret-de-production",{"title":415,"_path":416},"Carte de travail","/dokos/production/carte-travail",{"title":418,"_path":419},"Nomenclature","/dokos/production/nomenclature",{"title":421,"_path":422},"Opération","/dokos/production/operation",{"title":424,"_path":425},"Ordre de travail","/dokos/production/ordre-de-travail",{"title":427,"_path":428},"Plan de production","/dokos/production/plan-production",{"title":430,"_path":431},"Routage","/dokos/production/routage",{"title":433,"_path":434},"Sous-traitance","/dokos/production/sous-traitance",{"title":436,"_path":437},"Station de travail","/dokos/production/station-de-travail","i-fluent-manufacturer-24-regular",{"title":440,"_path":441,"children":442,"icon":466},"Qualité","/dokos/qualite",[443,445,448,451,454,457,460,463],{"title":444,"_path":441},"Gestion de la qualité",{"title":446,"_path":447},"Action de qualité","/dokos/qualite/action-de-qualite",{"title":449,"_path":450},"Non-conformité","/dokos/qualite/non-conformite",{"title":452,"_path":453},"Objectif de qualité","/dokos/qualite/objectif-de-qualite",{"title":455,"_path":456},"Procédure de qualité","/dokos/qualite/procedure-de-qualite",{"title":458,"_path":459},"Retours de qualité","/dokos/qualite/retour-experience-qualite",{"title":461,"_path":462},"Réunion qualité","/dokos/qualite/reunion-de-qualite",{"title":464,"_path":465},"Revue de la qualité","/dokos/qualite/revue-de-qualite","i-carbon-rule-data-quality",{"title":468,"_path":469,"children":470,"icon":490},"Support","/dokos/support",[471,472,475,478,481,484,487],{"title":98,"_path":469},{"title":473,"_path":474},"Paramètres du support","/dokos/support/parametres-du-support",{"title":476,"_path":477},"Ticket","/dokos/support/ticket",{"title":479,"_path":480},"Échéancier d'entretien","/dokos/support/calendrier-de-maintenance",{"title":482,"_path":483},"Accord de niveau de service","/dokos/support/garantie-de-niveau-de-service",{"title":485,"_path":486},"Réclamation de garantie","/dokos/support/garantie",{"title":488,"_path":489},"Visite d'entretien","/dokos/support/visites-de-maintenance","i-ri-customer-service-2-line",{"title":492,"_path":493,"children":494,"icon":737},"Ressources Humaines","/dokos/hrms",[495,497,500,512,515,550,603,622,625,651,654,719,723],{"title":496,"_path":493,"icon":10},"Bienvenue",{"title":498,"_path":499},"Paramètres RH","/dokos/hrms/parametres-rh",{"title":12,"_path":501,"children":502},"/dokos/hrms/parametrage",[503,506,509],{"title":504,"_path":505},"Département","/dokos/hrms/parametrage/departement",{"title":507,"_path":508},"Branche","/dokos/hrms/parametrage/branche",{"title":510,"_path":511},"Désignation","/dokos/hrms/parametrage/poste",{"title":513,"_path":514},"Évaluations","/dokos/hrms/evaluations",{"title":516,"_path":517,"children":518},"Quarts et présences","/dokos/hrms/quarts-et-presences",[519,520,523,526,529,532,535,538,541,544,547],{"title":516,"_path":517},{"title":521,"_path":522},"Gestion des présences","/dokos/hrms/quarts-et-presences/attendance",{"title":524,"_path":525},"Demande de validation de présence","/dokos/hrms/quarts-et-presences/attendance-request",{"title":527,"_path":528},"Outil de gestion des présences des employés","/dokos/hrms/quarts-et-presences/employee-attendance-tool",{"title":530,"_path":531},"Enregistrement des employés","/dokos/hrms/quarts-et-presences/employee-checkin",{"title":533,"_path":534},"Outil de présence des employés","/dokos/hrms/quarts-et-presences/employment-attendance-tool",{"title":536,"_path":537},"Affectation de quart","/dokos/hrms/quarts-et-presences/shift-assignment",{"title":539,"_path":540},"Sélection de quart","/dokos/hrms/quarts-et-presences/shift-request",{"title":542,"_path":543},"Type de quart","/dokos/hrms/quarts-et-presences/shift-type",{"title":545,"_path":546},"Plan de dotation","/dokos/hrms/quarts-et-presences/staffing-plan",{"title":548,"_path":549},"Outil de chargement de présence","/dokos/hrms/quarts-et-presences/upload-attendance",{"title":551,"_path":552,"children":553},"Cycle de vie des employés","/dokos/hrms/cycle-de-vie",[554,555,558,561,564,567,570,573,576,579,582,585,588,591,594,597,600],{"title":551,"_path":552},{"title":556,"_path":557},"Chauffeur","/dokos/hrms/cycle-de-vie/driver",{"title":559,"_path":560},"Employé","/dokos/hrms/cycle-de-vie/employee",{"title":562,"_path":563},"Échelon de l'employé","/dokos/hrms/cycle-de-vie/employee-grade",{"title":565,"_path":566},"Groupe d'employés","/dokos/hrms/cycle-de-vie/employee-group",{"title":568,"_path":569},"Assurance maladie des employés","/dokos/hrms/cycle-de-vie/employee-health-insurance",{"title":571,"_path":572},"Promotion des employés","/dokos/hrms/cycle-de-vie/employee-promotion",{"title":574,"_path":575},"Départ des employés","/dokos/hrms/cycle-de-vie/employee-separation",{"title":577,"_path":578},"Carte des compétences des employés","/dokos/hrms/cycle-de-vie/employee-skill-map",{"title":580,"_path":581},"Transfert des employés","/dokos/hrms/cycle-de-vie/employee-transfer",{"title":583,"_path":584},"Type d'emploi","/dokos/hrms/cycle-de-vie/employment-type",{"title":586,"_path":587},"Événement de la formation","/dokos/hrms/cycle-de-vie/training-event",{"title":589,"_path":590},"Programme de formation","/dokos/hrms/cycle-de-vie/training-program",{"title":592,"_path":593},"Résultat de la formation","/dokos/hrms/cycle-de-vie/training-result",{"title":595,"_path":596},"Demande de déplacement","/dokos/hrms/cycle-de-vie/travel-request",{"title":598,"_path":599},"Véhicule","/dokos/hrms/cycle-de-vie/vehicle",{"title":601,"_path":602},"Journal du véhicule","/dokos/hrms/cycle-de-vie/vehicle-log",{"title":604,"_path":605,"children":606},"Recrutement","/dokos/hrms/recrutement",[607,610,613,616,619],{"title":608,"_path":609},"Entretiens","/dokos/hrms/recrutement/job-interview",{"title":611,"_path":612},"Candidatures et recommandations","/dokos/hrms/recrutement/job-applicant",{"title":614,"_path":615},"Promesse d'embauche et proposition de poste","/dokos/hrms/recrutement/job-offer",{"title":617,"_path":618},"Offre d'emploi","/dokos/hrms/recrutement/job-opening",{"title":620,"_path":621},"Gestion des plans de dotation et des demandes de création de poste","/dokos/hrms/recrutement/staffing-plan",{"title":623,"_path":624},"Notes de frais","/dokos/hrms/notes-de-frais",{"title":626,"_path":627,"children":628},"Congés","/dokos/hrms/conges",[629,630,633,636,639,642,645,648],{"title":626,"_path":627},{"title":631,"_path":632},"Paramètres des congés","/dokos/hrms/conges/parametres-des-conges",{"title":634,"_path":635},"Allocation de congé","/dokos/hrms/conges/allocation-conges",{"title":637,"_path":638},"Demande de congé","/dokos/hrms/conges/demande-conges",{"title":640,"_path":641},"Demande de congé compensatoire","/dokos/hrms/conges/conges-compensatoires",{"title":643,"_path":644},"Période de congés","/dokos/hrms/conges/periode-conges",{"title":646,"_path":647},"Politique de congés","/dokos/hrms/conges/politique-conges",{"title":649,"_path":650},"Congés accumulés à encaisser","/dokos/hrms/conges/encaissement-conges",{"title":652,"_path":653},"Application mobile RH","/dokos/hrms/application-mobile-rh",{"title":655,"_path":656,"children":657},"Paie","/dokos/hrms/paie",[658,659,662,665,668,671,674,677,680,683,686,689,692,695,698,701,704,707,710,713,716],{"title":655,"_path":656},{"title":660,"_path":661},"Salaire supplémentaire","/dokos/hrms/paie/additional-salary",{"title":663,"_path":664},"Avance versées aux employés","/dokos/hrms/paie/employee-advance",{"title":666,"_path":667},"Demande d'avantages sociaux","/dokos/hrms/paie/employee-benefit-application",{"title":669,"_path":670},"Requête d'avantages sociaux","/dokos/hrms/paie/employee-benefit-claim",{"title":672,"_path":673},"Intéressement des employés","/dokos/hrms/paie/employee-incentive",{"title":675,"_path":676},"Autres revenus de l'employé","/dokos/hrms/paie/employee-other-income",{"title":678,"_path":679},"Catégorie d'exonération fiscale des employés","/dokos/hrms/paie/employee-tax-exemption-category",{"title":681,"_path":682},"Déclaration d'exemption de taxe","/dokos/hrms/paie/employee-tax-exemption-declaration",{"title":684,"_path":685},"Soumission d'une preuve d'exemption de taxe","/dokos/hrms/paie/employee-tax-exemption-proof-submission",{"title":687,"_path":688},"Sous-catégorie d'exonération de taxe","/dokos/hrms/paie/employee-tax-exemption-sub-category",{"title":690,"_path":691},"Tranche d'impôt sur le revenu","/dokos/hrms/paie/income-tax-slab",{"title":693,"_path":694},"Entrée de la paie","/dokos/hrms/paie/payroll-entry",{"title":696,"_path":697},"Gestion de la paie","/dokos/hrms/paie/payroll-intro",{"title":699,"_path":700},"Période de paie","/dokos/hrms/paie/payroll-period",{"title":702,"_path":703},"Paramètres de Paie","/dokos/hrms/paie/payroll-settings",{"title":705,"_path":706},"Prime de fidélisation","/dokos/hrms/paie/retention-bonus",{"title":708,"_path":709},"Composante salariale","/dokos/hrms/paie/salary-component",{"title":711,"_path":712},"Fiche de paie","/dokos/hrms/paie/salary-slip",{"title":714,"_path":715},"Grille des salaires","/dokos/hrms/paie/salary-structure",{"title":717,"_path":718},"Attribution de la structure salariale","/dokos/hrms/paie/salary-structure-assignment",{"title":720,"_path":721,"icon":722},"API","/dokos/hrms/api","i-carbon-api-1",{"title":724,"_path":725,"children":726},"Versions","/dokos/hrms/versions",[727],{"title":728,"_path":729,"children":730},"Version 4","/dokos/hrms/versions/v2.x.x",[731,734],{"title":732,"_path":733},"v2.0.0","/dokos/hrms/versions/v2.x.x/v2_0_0",{"title":735,"_path":736},"v2.1.0","/dokos/hrms/versions/v2.x.x/v2_1_0","i-mdi-human-capacity-increase",{"title":739,"_path":740,"children":741,"icon":793},"Lieu","/dokos/lieu",[742,744,747,758,761,764,767,770,773,776,790],{"title":743,"_path":740},"Gestion d'un lieu",{"title":745,"_path":746},"Paramètres du lieu","/dokos/lieu/parametres-lieu",{"title":748,"_path":749,"children":750},"Réservations","/dokos/lieu/reservations",[751,752,755],{"title":748,"_path":749},{"title":753,"_path":754},"Réservations de ressources","/dokos/lieu/reservations/reservations-articles",{"title":756,"_path":757},"Contrats","/dokos/lieu/reservations/contrats-bookings",{"title":759,"_path":760},"Crédits de réservation","/dokos/lieu/credit-reservation",{"title":762,"_path":763},"Événements","/dokos/lieu/evenements",{"title":765,"_path":766},"Poste d'événement","/dokos/lieu/poste-evenement",{"title":768,"_path":769},"Badges","/dokos/lieu/badges",{"title":771,"_path":772},"Abonnements et réservations limitées","/dokos/lieu/abonnement-reservation",{"title":774,"_path":775},"Gestion de lieux multiples","/dokos/lieu/multi-societe",{"title":777,"_path":778,"children":779},"Portail utilisateur","/dokos/lieu/portails",[780,781,784,787],{"title":777,"_path":778},{"title":782,"_path":783},"Formulaire Inscription Lieu","/dokos/lieu/portails/formulaire-inscription-lieu",{"title":785,"_path":786},"Trombinoscope","/dokos/lieu/portails/trombinoscope",{"title":788,"_path":789},"Formulaire d'adhésion à une association","/dokos/lieu/portails/formulaire-adhesion",{"title":791,"_path":792},"Exemple de cas d'usage","/dokos/lieu/cas-usage","i-material-symbols-location-on-outline-rounded",{"title":795,"_path":796,"children":797,"icon":805},"Portail & eCommerce","/dokos/e-commerce",[798,799,802],{"title":98,"_path":796},{"title":800,"_path":801},"Site e-commerce","/dokos/e-commerce/parametres",{"title":803,"_path":804},"Portail","/dokos/e-commerce/portal-settings","i-gg-website",{"title":807,"_path":808,"children":809,"icon":821},"Chantiers","/dokos/chantiers",[810,812,815,818],{"title":811,"_path":808},"Gestion de chantiers",{"title":813,"_path":814},"Vue Chantiers dédiée pour les tables d'articles","/dokos/chantiers/vue-chantiers",{"title":816,"_path":817},"Factures de situation","/dokos/chantiers/factures-situation",{"title":819,"_path":820},"Outils","/dokos/chantiers/outils","i-healthicons-construction-worker",{"title":823,"_path":824,"children":825,"icon":874},"Intégrations","/dokos/integrations",[826,829,832,835,838,841,844,847,850,853,856,859,862,865,868,871],{"title":827,"_path":824,"icon":828},"Intégrations Dokos","i-mdi-star-outline",{"title":830,"_path":831},"Intégration Agicap","/dokos/integrations/agicap",{"title":833,"_path":834},"Amazon MWS","/dokos/integrations/amazon-mws",{"title":836,"_path":837},"Amazon S3","/dokos/integrations/amazon-s3",{"title":839,"_path":840},"Discord","/dokos/integrations/discord",{"title":842,"_path":843},"Dropbox","/dokos/integrations/dropbox",{"title":845,"_path":846},"Google","/dokos/integrations/google",{"title":848,"_path":849},"Google Agenda","/dokos/integrations/google-calendar",{"title":851,"_path":852},"Google Chat","/dokos/integrations/google-chat",{"title":854,"_path":855},"Google Contacts","/dokos/integrations/google-contacts",{"title":857,"_path":858},"Google Drive","/dokos/integrations/google-drive",{"title":860,"_path":861},"Mattermost","/dokos/integrations/mattermost",{"title":863,"_path":864},"Rocket Chat","/dokos/integrations/rocket-chat",{"title":866,"_path":867},"Shopify","/dokos/integrations/shopify",{"title":869,"_path":870},"Slack","/dokos/integrations/slack",{"title":872,"_path":873},"Zapier","/dokos/integrations/zapier","i-mdi-connection",{"title":876,"_path":877,"children":878,"icon":897},"Cas d'usage","/dokos/cas-usage",[879,882,885,888,891,894],{"title":880,"_path":881},"Ajouter / Masquer un champ dans un formulaire","/dokos/cas-usage/customization-form",{"title":883,"_path":884},"Ajouter un champ -- Statut envoi d'email","/dokos/cas-usage/email-sent",{"title":886,"_path":887},"Exonération de TVA","/dokos/cas-usage/exemption-vat",{"title":889,"_path":890},"Rapports SQL","/dokos/cas-usage/query-report",{"title":892,"_path":893},"Revue de Presse","/dokos/cas-usage/revue-de-presse",{"title":895,"_path":896},"Rapport de type Script","/dokos/cas-usage/script-report","i-iconoir-cinema-old",{"title":899,"_path":900,"icon":901},"Tutoriels en vidéo","/dokos/tutoriels","i-ic-round-ondemand-video",{"title":903,"_path":904,"icon":905},"Comparaison entre Dokos et ERPNext","/dokos/comparaison-erpnext","i-mdi-vector-difference",{"title":724,"_path":907,"children":908,"icon":1113},"/dokos/versions",[909,921,1033,1094],{"title":728,"_path":910,"children":911},"/dokos/versions/v4.x.x",[912,915,918],{"title":913,"_path":914},"v4.0.0","/dokos/versions/v4.x.x/v4_0_0",{"title":916,"_path":917},"v4.1.0","/dokos/versions/v4.x.x/v4_1_0",{"title":919,"_path":920},"v4.2.0","/dokos/versions/v4.x.x/v4_2_0",{"title":922,"_path":923,"children":924},"Version 3","/dokos/versions/v3.x.x",[925,928,931,934,937,940,943,946,949,952,955,958,961,964,967,970,973,976,979,982,985,988,991,994,997,1000,1003,1006,1009,1012,1015,1018,1021,1024,1027,1030],{"title":926,"_path":927},"v3.0.0","/dokos/versions/v3.x.x/v3_0_0",{"title":929,"_path":930},"v3.1.0","/dokos/versions/v3.x.x/v3_1_0",{"title":932,"_path":933},"v3.2.0","/dokos/versions/v3.x.x/v3_2_0",{"title":935,"_path":936},"v3.3.0","/dokos/versions/v3.x.x/v3_3_0",{"title":938,"_path":939},"v3.4.0","/dokos/versions/v3.x.x/v3_4_0",{"title":941,"_path":942},"v3.5.0","/dokos/versions/v3.x.x/v3_5_0",{"title":944,"_path":945},"v3.6.0","/dokos/versions/v3.x.x/v3_6_0",{"title":947,"_path":948},"v3.7.0","/dokos/versions/v3.x.x/v3_7_0",{"title":950,"_path":951},"v3.8.0","/dokos/versions/v3.x.x/v3_8_0",{"title":953,"_path":954},"v3.9.0","/dokos/versions/v3.x.x/v3_9_0",{"title":956,"_path":957},"v3.10.0","/dokos/versions/v3.x.x/v3_10_0",{"title":959,"_path":960},"v3.11.0","/dokos/versions/v3.x.x/v3_11_0",{"title":962,"_path":963},"v3.12.0","/dokos/versions/v3.x.x/v3_12_0",{"title":965,"_path":966},"v3.13.0","/dokos/versions/v3.x.x/v3_13_0",{"title":968,"_path":969},"v3.14.0","/dokos/versions/v3.x.x/v3_14_0",{"title":971,"_path":972},"v3.15.0","/dokos/versions/v3.x.x/v3_15_0",{"title":974,"_path":975},"v3.16.0","/dokos/versions/v3.x.x/v3_16_0",{"title":977,"_path":978},"v3.17.0","/dokos/versions/v3.x.x/v3_17_0",{"title":980,"_path":981},"v3.18.0","/dokos/versions/v3.x.x/v3_18_0",{"title":983,"_path":984},"v3.19.0","/dokos/versions/v3.x.x/v3_19_0",{"title":986,"_path":987},"v3.20.0","/dokos/versions/v3.x.x/v3_20_0",{"title":989,"_path":990},"v3.21.0","/dokos/versions/v3.x.x/v3_21_0",{"title":992,"_path":993},"v3.22.0","/dokos/versions/v3.x.x/v3_22_0",{"title":995,"_path":996},"v3.23.0","/dokos/versions/v3.x.x/v3_23_0",{"title":998,"_path":999},"v3.24.0","/dokos/versions/v3.x.x/v3_24_0",{"title":1001,"_path":1002},"v3.25.0","/dokos/versions/v3.x.x/v3_25_0",{"title":1004,"_path":1005},"v3.26.0","/dokos/versions/v3.x.x/v3_26_0",{"title":1007,"_path":1008},"v3.27.0","/dokos/versions/v3.x.x/v3_27_0",{"title":1010,"_path":1011},"v3.28.0","/dokos/versions/v3.x.x/v3_28_0",{"title":1013,"_path":1014},"v3.29.0","/dokos/versions/v3.x.x/v3_29_0",{"title":1016,"_path":1017},"v3.30.0","/dokos/versions/v3.x.x/v3_30_0",{"title":1019,"_path":1020},"v3.31.0","/dokos/versions/v3.x.x/v3_31_0",{"title":1022,"_path":1023},"v3.32.0","/dokos/versions/v3.x.x/v3_32_0",{"title":1025,"_path":1026},"v3.33.0","/dokos/versions/v3.x.x/v3_33_0",{"title":1028,"_path":1029},"v3.34.0","/dokos/versions/v3.x.x/v3_34_0",{"title":1031,"_path":1032},"v3.35.0","/dokos/versions/v3.x.x/v3_35_0",{"title":1034,"_path":1035,"children":1036},"Version 2","/dokos/versions/v2.x.x",[1037,1040,1043,1046,1049,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085,1088,1091],{"title":1038,"_path":1039},"V2.0.0","/dokos/versions/v2.x.x/v2_0_0",{"title":1041,"_path":1042},"V2.1.0","/dokos/versions/v2.x.x/v2_1_0",{"title":1044,"_path":1045},"V2.2.0","/dokos/versions/v2.x.x/v2_2_0",{"title":1047,"_path":1048},"V2.3.0","/dokos/versions/v2.x.x/v2_3_0",{"title":1050,"_path":1051},"V2.4.0","/dokos/versions/v2.x.x/v2_4_0",{"title":1053,"_path":1054},"V2.5.0","/dokos/versions/v2.x.x/v2_5_0",{"title":1056,"_path":1057},"V2.6.0","/dokos/versions/v2.x.x/v2_6_0",{"title":1059,"_path":1060},"V2.7.0","/dokos/versions/v2.x.x/v2_7_0",{"title":1062,"_path":1063},"V2.8.0","/dokos/versions/v2.x.x/v2_8_0",{"title":1065,"_path":1066},"V2.9.0","/dokos/versions/v2.x.x/v2_9_0",{"title":1068,"_path":1069},"V2.10.0","/dokos/versions/v2.x.x/v2_10_0",{"title":1071,"_path":1072},"V2.11.0","/dokos/versions/v2.x.x/v2_11_0",{"title":1074,"_path":1075},"V2.12.0","/dokos/versions/v2.x.x/v2_12_0",{"title":1077,"_path":1078},"V2.13.0","/dokos/versions/v2.x.x/v2_13_0",{"title":1080,"_path":1081},"V2.14.0","/dokos/versions/v2.x.x/v2_14_0",{"title":1083,"_path":1084},"V2.15.0","/dokos/versions/v2.x.x/v2_15_0",{"title":1086,"_path":1087},"V2.16.0","/dokos/versions/v2.x.x/v2_16_0",{"title":1089,"_path":1090},"V2.17.0","/dokos/versions/v2.x.x/v2_17_0",{"title":1092,"_path":1093},"V2.18.0","/dokos/versions/v2.x.x/v2_18_0",{"title":1095,"_path":1096,"children":1097},"Version 1","/dokos/versions/v1.x.x",[1098,1101,1104,1107,1110],{"title":1099,"_path":1100},"v1.0.0","/dokos/versions/v1.x.x/v1_0_0",{"title":1102,"_path":1103},"v1.1.0","/dokos/versions/v1.x.x/v1_1_0",{"title":1105,"_path":1106},"v1.2.0","/dokos/versions/v1.x.x/v1_2_0",{"title":1108,"_path":1109},"v1.3.0","/dokos/versions/v1.x.x/v1_3_0",{"title":1111,"_path":1112},"v1.4.0","/dokos/versions/v1.x.x/v1_4_0","i-system-uicons-versions",{"title":720,"_path":1115,"icon":722},"/dokos/api",{"title":1117,"_path":1118,"children":1119},"Généralités","/dokos/generalites",[1120,1121,1124,1127,1130,1133,1136,1139,1142,1145],{"title":1117,"_path":1118},{"title":1122,"_path":1123},"Les outils pratiques","/dokos/generalites/administration_outils_pratiques",{"title":1125,"_path":1126},"Les documents","/dokos/generalites/les_documents",{"title":1128,"_path":1129},"Les espaces de travail","/dokos/generalites/les_espaces_de_travail",{"title":1131,"_path":1132},"Les outils diagnostic","/dokos/generalites/les_outils_diagnostic",{"title":1134,"_path":1135},"Les paramètres systèmes","/dokos/generalites/les_parametres_systemes",{"title":1137,"_path":1138},"Les utilisateurs","/dokos/generalites/les_utilisateurs",{"title":1140,"_path":1141},"Personnalisation de l'interface","/dokos/generalites/personnaliser_l_interface",{"title":1143,"_path":1144},"La gestion des utilisateurs","/dokos/generalites/roles_et_autorisations",{"title":1146,"_path":1147},"Le tableau de bord Administratif","/dokos/generalites/tableau_de_bord_administratif","i-ic-twotone-area-chart",{"title":1150,"_path":1151,"children":1152,"icon":1482},"Framework","/dodock",[1153,1154,1158,1187,1226,1483,1582,1595,1778],{"title":496,"_path":1151,"icon":10},{"title":1155,"_path":1156,"icon":1157},"Architecture","/dodock/architecture","i-icon-park-outline-building-four",{"title":1159,"_path":1160,"children":1161,"icon":1186},"Installation","/dodock/installation",[1162,1163,1166,1169,1172],{"title":1159,"_path":1160},{"title":1164,"_path":1165},"Installation standard","/dodock/installation/manuelle",{"title":1167,"_path":1168},"Installation Docker","/dodock/installation/docker",{"title":1170,"_path":1171},"Installation Ubuntu 22","/dodock/installation/ubuntu-22",{"title":1173,"_path":1174,"children":1175,"icon":1185},"Plus de méthodes","/dodock/installation/plus",[1176,1179,1182],{"title":1177,"_path":1178},"Docker personnalisé","/dodock/installation/plus/docker-personnalise",{"title":1180,"_path":1181},"Installation sur RHEL","/dodock/installation/plus/installation-rhel-8-9",{"title":1183,"_path":1184},"Installation par script","/dodock/installation/plus/script-bash","i-icon-park-outline-add-four","i-icon-park-outline-install",{"title":1188,"_path":1189,"children":1190,"icon":1225},"Administration","/dodock/administration",[1191,1192,1195,1198,1201,1204,1207,1210,1213,1216,1219,1222],{"title":1188,"_path":1189},{"title":1193,"_path":1194},"Bench","/dodock/administration/bench",{"title":1196,"_path":1197},"Multi-tenant","/dodock/administration/domaine",{"title":1199,"_path":1200},"Installer une application","/dodock/administration/installer-une-application",{"title":1202,"_path":1203},"Mises à jour","/dodock/administration/mises-a-jour",{"title":1205,"_path":1206},"Configuration des emails","/dodock/administration/emails",{"title":1208,"_path":1209},"Certificat SSL","/dodock/administration/certificat",{"title":1211,"_path":1212},"Migrer vers la version 3 de Dokos","/dodock/administration/migration-v3",{"title":1214,"_path":1215},"Migrer vers la version 4 de Dokos","/dodock/administration/migration-v4",{"title":1217,"_path":1218},"Migrer vers la version 5 de Dokos","/dodock/administration/migration-v5",{"title":1220,"_path":1221},"Migrer depuis ERPNext","/dodock/administration/migration-erpnext",{"title":1223,"_path":1224},"Commandes","/dodock/administration/commandes","i-clarity-administrator-line",{"title":1227,"_path":1228,"children":1229,"icon":1482},"Fonctionnalités","/dodock/fonctionnalites",[1230,1232,1262,1264,1298,1332,1362,1396,1412,1415,1435,1458,1461,1463,1466],{"title":1231,"_path":1228},"Fonctionnalités de base",{"title":1233,"_path":1234,"children":1235},"Utilisateurs","/dodock/fonctionnalites/utilisateurs",[1236,1238,1241,1244,1247,1250,1253,1256,1259],{"title":1233,"_path":1237},"/dodock/fonctionnalites/utilisateurs/utilisateurs",{"title":1239,"_path":1240},"Rôle et profil de rôle","/dodock/fonctionnalites/utilisateurs/roles",{"title":1242,"_path":1243},"Autorisations basées sur les rôles","/dodock/fonctionnalites/utilisateurs/role-et-autorisations",{"title":1245,"_path":1246},"Autorisations des utilisateurs","/dodock/fonctionnalites/utilisateurs/autorisations-utilisateur",{"title":1248,"_path":1249},"Autorisation de rôle pour la page et le rapport","/dodock/fonctionnalites/utilisateurs/autorisations-pages-rapports",{"title":1251,"_path":1252},"Administrateur","/dodock/fonctionnalites/utilisateurs/administrateur",{"title":1254,"_path":1255},"Configurer l'authentification à double facteur","/dodock/fonctionnalites/utilisateurs/2fa",{"title":1257,"_path":1258},"Partager un document","/dodock/fonctionnalites/utilisateurs/partager-un-document",{"title":1260,"_path":1261},"Utilisateur limité","/dodock/fonctionnalites/utilisateurs/utilisateurs-limites",{"title":85,"_path":1263},"/dodock/fonctionnalites/workflows",{"title":1265,"_path":1266,"children":1267},"Personnalisations","/dodock/fonctionnalites/personnalisations",[1268,1271,1274,1277,1280,1283,1286,1289,1292,1295],{"title":1269,"_path":1270},"Personnalisation des documents","/dodock/fonctionnalites/personnalisations/doctype",{"title":1272,"_path":1273},"Workspaces","/dodock/fonctionnalites/personnalisations/workspaces",{"title":1275,"_path":1276},"Tableau de bord","/dodock/fonctionnalites/personnalisations/dashboard",{"title":1278,"_path":1279},"Scripts Python","/dodock/fonctionnalites/personnalisations/server_script",{"title":1281,"_path":1282},"Scripts Client","/dodock/fonctionnalites/personnalisations/client_script",{"title":1284,"_path":1285},"Modèles Jinja","/dodock/fonctionnalites/personnalisations/jinja_templates",{"title":1287,"_path":1288},"Packages","/dodock/fonctionnalites/personnalisations/packages",{"title":1290,"_path":1291},"Vue du Calendrier","/dodock/fonctionnalites/personnalisations/vue-calendrier",{"title":1293,"_path":1294},"Traductions personnalisées","/dodock/fonctionnalites/personnalisations/traductions-personnalisees",{"title":1296,"_path":1297},"Paquets","/dodock/fonctionnalites/personnalisations/paquets",{"title":819,"_path":1299,"children":1300},"/dodock/fonctionnalites/outils",[1301,1304,1307,1309,1312,1315,1317,1320,1323,1326,1329],{"title":1302,"_path":1303},"Liste à faire","/dodock/fonctionnalites/outils/todo",{"title":1305,"_path":1306},"Notes","/dodock/fonctionnalites/outils/note",{"title":762,"_path":1308},"/dodock/fonctionnalites/outils/evenement",{"title":1310,"_path":1311},"Fichier","/dodock/fonctionnalites/outils/fichier",{"title":1313,"_path":1314},"Groupe Email","/dodock/fonctionnalites/outils/groupe-email",{"title":239,"_path":1316},"/dodock/fonctionnalites/outils/newsletter",{"title":1318,"_path":1319},"Répétition automatique","/dodock/fonctionnalites/outils/repetition-automatique",{"title":1321,"_path":1322},"Regle Attribution","/dodock/fonctionnalites/outils/regle-attribution",{"title":1324,"_path":1325},"Jalons","/dodock/fonctionnalites/outils/jalons",{"title":1327,"_path":1328},"Mise à jour en masse","/dodock/fonctionnalites/outils/mise-a-jour-en-masse",{"title":1330,"_path":1331},"Points d'énergie","/dodock/fonctionnalites/outils/points-energie",{"title":1333,"_path":1334,"children":1335},"Site Web","/dodock/fonctionnalites/site-web",[1336,1339,1342,1345,1348,1351,1354,1357,1359],{"title":1337,"_path":1338},"Paramètres du site web","/dodock/fonctionnalites/site-web/parametres-site-web",{"title":1340,"_path":1341},"Page web","/dodock/fonctionnalites/site-web/page-web",{"title":1343,"_path":1344},"Thème du site web","/dodock/fonctionnalites/site-web/theme-site-web",{"title":1346,"_path":1347},"Formulaires web","/dodock/fonctionnalites/site-web/formulaire-web",{"title":1349,"_path":1350},"Pages \"À Propos\" et \"Formulaire de Contact\"","/dodock/fonctionnalites/site-web/pages-standard",{"title":1352,"_path":1353},"Blog","/dodock/fonctionnalites/site-web/blog",{"title":1355,"_path":1356},"Articles Aide","/dodock/fonctionnalites/site-web/articles-aide",{"title":803,"_path":1358},"/dodock/fonctionnalites/site-web/portail",{"title":1360,"_path":1361},"Donnees Personnelles","/dodock/fonctionnalites/site-web/donnees-personnelles",{"title":1363,"_path":1364,"children":1365},"Bureau","/dodock/fonctionnalites/bureau",[1366,1369,1381,1384,1387,1390,1393],{"title":1367,"_path":1368},"Espaces Travail","/dodock/fonctionnalites/bureau/espaces-travail",{"title":1370,"_path":1371,"children":1372},"Tableaux de bord","/dodock/fonctionnalites/bureau/tableaux-de-bord",[1373,1375,1378],{"title":1275,"_path":1374},"/dodock/fonctionnalites/bureau/tableaux-de-bord/vue-tableau-bord",{"title":1376,"_path":1377},"Graphiques Tableau Bord","/dodock/fonctionnalites/bureau/tableaux-de-bord/graphiques-tableau-bord",{"title":1379,"_path":1380},"Cartes Statistiques","/dodock/fonctionnalites/bureau/tableaux-de-bord/cartes-statistiques",{"title":1382,"_path":1383},"Onboarding","/dodock/fonctionnalites/bureau/onboarding",{"title":1385,"_path":1386},"Vue Calendrier","/dodock/fonctionnalites/bureau/vue-calendrier",{"title":1388,"_path":1389},"Console Systeme","/dodock/fonctionnalites/bureau/console-systeme",{"title":1391,"_path":1392},"Cartes de résumé","/dodock/fonctionnalites/bureau/carte-de-resume",{"title":1394,"_path":1395},"Visites Guidées","/dodock/fonctionnalites/bureau/visites-guidees",{"title":1397,"_path":1398,"children":1399},"Adresses & Contacts","/dodock/fonctionnalites/contacts-adresses",[1400,1403,1406,1409],{"title":1401,"_path":1402},"Contact","/dodock/fonctionnalites/contacts-adresses/contacts",{"title":1404,"_path":1405},"Genres","/dodock/fonctionnalites/contacts-adresses/genres",{"title":1407,"_path":1408},"Salutation","/dodock/fonctionnalites/contacts-adresses/salutation",{"title":1410,"_path":1411},"Adresses","/dodock/fonctionnalites/contacts-adresses/addresses",{"title":1413,"_path":1414},"Référentiel","/dodock/fonctionnalites/referentiel-pays-et-devises",{"title":1416,"_path":1417,"children":1418},"Impressions","/dodock/fonctionnalites/impression",[1419,1420,1423,1426,1429,1432],{"title":1416,"_path":1417},{"title":1421,"_path":1422},"Formats d'impression","/dodock/fonctionnalites/impression/format-impression",{"title":1424,"_path":1425},"En-tête de lettre","/dodock/fonctionnalites/impression/en-tete",{"title":1427,"_path":1428},"Paramètres d'impression","/dodock/fonctionnalites/impression/parametres-impression",{"title":1430,"_path":1431},"Style d'impression","/dodock/fonctionnalites/impression/style-impression",{"title":1433,"_path":1434},"Impression Brute","/dodock/fonctionnalites/impression/impression-brute",{"title":823,"_path":1436,"children":1437},"/dodock/fonctionnalites/integrations",[1438,1439,1442,1445,1448,1451,1453,1456],{"title":823,"_path":1436},{"title":1440,"_path":1441},"Oauth","/dodock/fonctionnalites/integrations/oauth",{"title":1443,"_path":1444},"Connecteurs Sociaux","/dodock/fonctionnalites/integrations/connecteurs-sociaux",{"title":1446,"_path":1447},"Ldap","/dodock/fonctionnalites/integrations/ldap",{"title":1449,"_path":1450},"Demandes Integrations","/dodock/fonctionnalites/integrations/demandes-integrations",{"title":845,"_path":1452},"/dodock/fonctionnalites/integrations/google",{"title":1454,"_path":1455},"S3","/dodock/fonctionnalites/integrations/s3",{"title":842,"_path":1457},"/dodock/fonctionnalites/integrations/dropbox",{"title":1459,"_path":1460},"Webhooks","/dodock/fonctionnalites/webhooks",{"title":76,"_path":1462},"/dodock/fonctionnalites/notifications",{"title":1464,"_path":1465},"Nommage des Documents","/dodock/fonctionnalites/nommage",{"title":1467,"_path":1468,"children":1469},"Concepts","/dodock/fonctionnalites/concepts",[1470,1473,1476,1479],{"title":1471,"_path":1472},"Espace de travail","/dodock/fonctionnalites/concepts/espace-de-travail",{"title":1474,"_path":1475},"Page","/dodock/fonctionnalites/concepts/page",{"title":1477,"_path":1478},"Rapport","/dodock/fonctionnalites/concepts/rapport",{"title":1480,"_path":1481},"Type De Document","/dodock/fonctionnalites/concepts/type-de-document","i-carbon-container-software",{"title":1484,"_path":1485,"children":1486,"icon":1581},"Développement","/dodock/ressources",[1487,1541,1552,1563,1571,1578],{"title":720,"_path":1488,"children":1489},"/dodock/ressources/api",[1490,1493,1496,1499,1502,1538],{"title":1491,"_path":1492},"API de documents","/dodock/ressources/api/document_api",{"title":1494,"_path":1495},"API Base de données","/dodock/ressources/api/database_api",{"title":1497,"_path":1498},"API Rest","/dodock/ressources/api/rest_api",{"title":1500,"_path":1501},"API Jinja","/dodock/ressources/api/jinja_api",{"title":1503,"_path":1504,"children":1505},"Exemples","/dodock/ressources/api/exemples",[1506,1509,1512,1515,1518,1521,1524,1527,1529,1532,1535],{"title":1507,"_path":1508},"Créer une réservation d'article via l'API avec Postman","/dodock/ressources/api/exemples/order_item",{"title":1510,"_path":1511},"Créer une commande client via l'API avec Postman","/dodock/ressources/api/exemples/make_order",{"title":1513,"_path":1514},"Contacts","/dodock/ressources/api/exemples/get_contact_list",{"title":1516,"_path":1517},"Récupérer la liste des contacts et adresses associées à un client","/dodock/ressources/api/exemples/get-contacts-addresses",{"title":1519,"_path":1520},"Créer une réservation d'article via l'API","/dodock/ressources/api/exemples/item-booking-call",{"title":1522,"_path":1523},"Python Database API","/dodock/ressources/api/exemples/python-database-api",{"title":1525,"_path":1526},"Python Documents API","/dodock/ressources/api/exemples/python-documents-api",{"title":1500,"_path":1528},"/dodock/ressources/api/exemples/python-jinja-api",{"title":1530,"_path":1531},"Table of content","/dodock/ressources/api/exemples/readme",{"title":1533,"_path":1534},"REST API","/dodock/ressources/api/exemples/rest-api",{"title":1536,"_path":1537},"Création d'une commande client via l'API","/dodock/ressources/api/exemples/sales-order-call",{"title":1539,"_path":1540,"icon":722},"Ressources","/dodock/ressources/api/ressources",{"title":1467,"_path":1542,"children":1543},"/dodock/ressources/concepts",[1544,1547,1549],{"title":1545,"_path":1546},"Type de document","/dodock/ressources/concepts/doctype",{"title":1284,"_path":1548},"/dodock/ressources/concepts/modeles-jinja",{"title":1550,"_path":1551},"Scripts serveur Python","/dodock/ressources/concepts/scripts-python",{"title":1553,"_path":1554,"children":1555},"Champs (DocField)","/dodock/ressources/docfield",[1556,1559],{"title":1557,"_path":1558},"Joindre/Joindre une image","/dodock/ressources/docfield/attach",{"title":1560,"_path":1561,"icon":1562},"Tous les DocFields","/dodock/ressources/docfield/frappe","i-mdi-arrow-up-right",{"title":1564,"_path":1565,"children":1566},"Applications personnalisées","/dodock/ressources/custom-app",[1567,1568],{"title":1564,"_path":1565},{"title":1569,"_path":1570},"Champs additionels","/dodock/ressources/custom-app/custom-fields",{"title":1572,"_path":1573,"children":1574},"Questions fréquentes","/dodock/ressources/faq",[1575],{"title":1576,"_path":1577},"Filtres","/dodock/ressources/faq/filtres",{"title":1579,"_path":1580},"Frappe","/dodock/ressources/frappe","i-heroicons-code-bracket-16-solid",{"title":1583,"_path":1584,"children":1585,"icon":1594},"Contribuer","/dodock/contribuer",[1586,1588,1591],{"title":1587,"_path":1584},"Un logiciel Open-source",{"title":1589,"_path":1590},"Traductions","/dodock/contribuer/traductions",{"title":1592,"_path":1593},"Documentation","/dodock/contribuer/documentation","i-mdi-open-source-initiative",{"title":724,"_path":1596,"children":1597,"icon":1113},"/dodock/versions",[1598,1613,1730,1765],{"title":728,"_path":1599,"children":1600},"/dodock/versions/v4.x.x",[1601,1603,1605,1607,1610],{"title":913,"_path":1602},"/dodock/versions/v4.x.x/v4_0_0",{"title":916,"_path":1604},"/dodock/versions/v4.x.x/v4_1_0",{"title":919,"_path":1606},"/dodock/versions/v4.x.x/v4_2_0",{"title":1608,"_path":1609},"v4.3.0","/dodock/versions/v4.x.x/v4_3_0",{"title":1611,"_path":1612},"v4.4.0","/dodock/versions/v4.x.x/v4_4_0",{"title":922,"_path":1614,"children":1615},"/dodock/versions/v3.x.x",[1616,1619,1622,1625,1628,1631,1634,1637,1640,1643,1646,1649,1652,1655,1658,1661,1664,1667,1670,1673,1676,1679,1682,1685,1688,1691,1694,1697,1700,1703,1706,1709,1712,1715,1718,1721,1724,1727],{"title":1617,"_path":1618},"V3.0.0","/dodock/versions/v3.x.x/v3_0_0",{"title":1620,"_path":1621},"V3.1.0","/dodock/versions/v3.x.x/v3_1_0",{"title":1623,"_path":1624},"V3.2.0","/dodock/versions/v3.x.x/v3_2_0",{"title":1626,"_path":1627},"V3.3.0","/dodock/versions/v3.x.x/v3_3_0",{"title":1629,"_path":1630},"V3.4.0","/dodock/versions/v3.x.x/v3_4_0",{"title":1632,"_path":1633},"V3.5.0","/dodock/versions/v3.x.x/v3_5_0",{"title":1635,"_path":1636},"V3.6.0","/dodock/versions/v3.x.x/v3_6_0",{"title":1638,"_path":1639},"V3.7.0","/dodock/versions/v3.x.x/v3_7_0",{"title":1641,"_path":1642},"V3.8.0","/dodock/versions/v3.x.x/v3_8_0",{"title":1644,"_path":1645},"V3.9.0","/dodock/versions/v3.x.x/v3_9_0",{"title":1647,"_path":1648},"V3.10.0","/dodock/versions/v3.x.x/v3_10_0",{"title":1650,"_path":1651},"V3.11.0","/dodock/versions/v3.x.x/v3_11_0",{"title":1653,"_path":1654},"V3.12.0","/dodock/versions/v3.x.x/v3_12_0",{"title":1656,"_path":1657},"V3.13.0","/dodock/versions/v3.x.x/v3_13_0",{"title":1659,"_path":1660},"V3.14.0","/dodock/versions/v3.x.x/v3_14_0",{"title":1662,"_path":1663},"V3.15.0","/dodock/versions/v3.x.x/v3_15_0",{"title":1665,"_path":1666},"V3.16.0","/dodock/versions/v3.x.x/v3_16_0",{"title":1668,"_path":1669},"V3.17.0","/dodock/versions/v3.x.x/v3_17_0",{"title":1671,"_path":1672},"V3.18.0","/dodock/versions/v3.x.x/v3_18_0",{"title":1674,"_path":1675},"V3.19.0","/dodock/versions/v3.x.x/v3_19_0",{"title":1677,"_path":1678},"V3.20.0","/dodock/versions/v3.x.x/v3_20_0",{"title":1680,"_path":1681},"V3.21.0","/dodock/versions/v3.x.x/v3_21_0",{"title":1683,"_path":1684},"V3.22.0","/dodock/versions/v3.x.x/v3_22_0",{"title":1686,"_path":1687},"V3.23.0","/dodock/versions/v3.x.x/v3_23_0",{"title":1689,"_path":1690},"V3.24.0","/dodock/versions/v3.x.x/v3_24_0",{"title":1692,"_path":1693},"V3.25.0","/dodock/versions/v3.x.x/v3_25_0",{"title":1695,"_path":1696},"V3.26.0","/dodock/versions/v3.x.x/v3_26_0",{"title":1698,"_path":1699},"V3.27.0","/dodock/versions/v3.x.x/v3_27_0",{"title":1701,"_path":1702},"V3.28.0","/dodock/versions/v3.x.x/v3_28_0",{"title":1704,"_path":1705},"V3.29.0","/dodock/versions/v3.x.x/v3_29_0",{"title":1707,"_path":1708},"V3.30.0","/dodock/versions/v3.x.x/v3_30_0",{"title":1710,"_path":1711},"V3.31.0","/dodock/versions/v3.x.x/v3_31_0",{"title":1713,"_path":1714},"V3.32.0","/dodock/versions/v3.x.x/v3_32_0",{"title":1716,"_path":1717},"V3.33.0","/dodock/versions/v3.x.x/v3_33_0",{"title":1719,"_path":1720},"V3.34.0","/dodock/versions/v3.x.x/v3_34_0",{"title":1722,"_path":1723},"V3.35.0","/dodock/versions/v3.x.x/v3_35_0",{"title":1725,"_path":1726},"V3.36.0","/dodock/versions/v3.x.x/v3_36_0",{"title":1728,"_path":1729},"V3.37.0","/dodock/versions/v3.x.x/v3_37_0",{"title":1034,"_path":1731,"children":1732},"/dodock/versions/v2.x.x",[1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763],{"title":1038,"_path":1734},"/dodock/versions/v2.x.x/v2_0_0",{"title":1041,"_path":1736},"/dodock/versions/v2.x.x/v2_1_0",{"title":1044,"_path":1738},"/dodock/versions/v2.x.x/v2_2_0",{"title":1047,"_path":1740},"/dodock/versions/v2.x.x/v2_3_0",{"title":1050,"_path":1742},"/dodock/versions/v2.x.x/v2_4_0",{"title":1053,"_path":1744},"/dodock/versions/v2.x.x/v2_5_0",{"title":1056,"_path":1746},"/dodock/versions/v2.x.x/v2_6_0",{"title":1059,"_path":1748},"/dodock/versions/v2.x.x/v2_7_0",{"title":1062,"_path":1750},"/dodock/versions/v2.x.x/v2_8_0",{"title":1065,"_path":1752},"/dodock/versions/v2.x.x/v2_9_0",{"title":1068,"_path":1754},"/dodock/versions/v2.x.x/v2_10_0",{"title":1071,"_path":1756},"/dodock/versions/v2.x.x/v2_11_0",{"title":1077,"_path":1758},"/dodock/versions/v2.x.x/v2_13_0",{"title":1080,"_path":1760},"/dodock/versions/v2.x.x/v2_14_0",{"title":1083,"_path":1762},"/dodock/versions/v2.x.x/v2_15_0",{"title":1086,"_path":1764},"/dodock/versions/v2.x.x/v2_16_0",{"title":1095,"_path":1766,"children":1767},"/dodock/versions/v1.x.x",[1768,1770,1772,1774,1776],{"title":1099,"_path":1769},"/dodock/versions/v1.x.x/v1_0_0",{"title":1102,"_path":1771},"/dodock/versions/v1.x.x/v1_1_0",{"title":1105,"_path":1773},"/dodock/versions/v1.x.x/v1_2_0",{"title":1108,"_path":1775},"/dodock/versions/v1.x.x/v1_3_0",{"title":1111,"_path":1777},"/dodock/versions/v1.x.x/v1_4_0",{"title":1779,"_path":1780,"children":1781,"icon":1784},"Ecosystème Frappe","/dodock/frappe-products",[1782,1785,1789,1793,1796,1799,1802,1805,1808],{"title":1783,"_path":1780,"icon":1784},"Applications et compatibilité","i-icon-park-outline-reverse-rotation",{"title":1786,"_path":1787,"icon":1788},"Frappe Builder","/dodock/frappe-products/builder","i-icon-park-outline-application-two",{"title":1790,"_path":1791,"icon":1792},"Frappe CRM","/dodock/frappe-products/crm","flowbite:chart-solid",{"title":1794,"_path":1795},"Frappe Helpdesk","/dodock/frappe-products/helpdesk",{"title":1797,"_path":1798},"Frappe Insights","/dodock/frappe-products/insights",{"title":1800,"_path":1801},"Frappe Learning","/dodock/frappe-products/learning",{"title":1803,"_path":1804},"Print Designer","/dodock/frappe-products/print-designer",{"title":1806,"_path":1807},"Frappe Wiki","/dodock/frappe-products/wiki",{"title":1809,"_path":1810},"Raven","/dodock/frappe-products/raven",{"title":823,"_path":1812,"children":1813,"icon":874},"/integrations",[1814,1815,1854,1875,1907,1927,1943,1946],{"title":823,"_path":1812},{"title":1816,"_path":1817,"children":1818,"icon":1853},"Paiements","/integrations/payments",[1819,1821,1825,1829,1833,1837,1840,1842],{"title":1820,"_path":1817},"Payments",{"title":1822,"_path":1823,"icon":1824},"Stripe","/integrations/payments/stripe","i-fa6-brands-cc-stripe",{"title":1826,"_path":1827,"icon":1828},"Paypal","/integrations/payments/paypal","i-fa6-brands-cc-paypal",{"title":1830,"_path":1831,"icon":1832},"GoCardless","/integrations/payments/gocardless","i-simple-icons-sepa",{"title":1834,"_path":1835,"icon":1836},"Stancer","/integrations/payments/stancer","i-simple-icons-contactlesspayment",{"title":1838,"_path":1839,"icon":1836},"HelloAsso","/integrations/payments/helloasso",{"title":720,"_path":1841,"icon":722},"/integrations/payments/api",{"title":724,"_path":1843,"children":1844,"icon":1113},"/integrations/payments/versions",[1845],{"title":1095,"_path":1846,"children":1847},"/integrations/payments/versions/v1.x.x",[1848,1851],{"title":1849,"_path":1850},"v1.0.1","/integrations/payments/versions/v1.x.x/v1_0_0",{"title":1102,"_path":1852},"/integrations/payments/versions/v1.x.x/v1_1_0","i-fluent-payment-20-filled",{"title":1855,"_path":1856,"children":1857,"icon":1874},"Signature Electronique","/integrations/esignature",[1858,1860,1864,1866],{"title":1859,"_path":1856},"eSignature",{"title":1861,"_path":1862,"icon":1863},"Adobe Sign","/integrations/esignature/adobe-sign","i-ic-outline-adobe",{"title":720,"_path":1865,"icon":722},"/integrations/esignature/api",{"title":724,"_path":1867,"children":1868,"icon":1113},"/integrations/esignature/versions",[1869],{"title":1095,"_path":1870,"children":1871},"/integrations/esignature/versions/v1.x.x",[1872],{"title":1099,"_path":1873},"/integrations/esignature/versions/v1.x.x/v1_0_0","i-fluent-signature-20-filled",{"title":1876,"_path":1877,"children":1878,"icon":1906},"WooCommerce","/integrations/woocommerce",[1879,1880,1882,1885,1887],{"title":98,"_path":1877},{"title":12,"_path":1881},"/integrations/woocommerce/woocommerce_settings",{"title":1883,"_path":1884},"WooCommerce Bookings","/integrations/woocommerce/woocommerce-bookings",{"title":720,"_path":1886,"icon":722},"/integrations/woocommerce/api",{"title":724,"_path":1888,"children":1889,"icon":1113},"/integrations/woocommerce/versions",[1890],{"title":1095,"_path":1891,"children":1892},"/integrations/woocommerce/versions/v1.x.x",[1893,1895,1897,1899,1901,1903],{"title":1099,"_path":1894},"/integrations/woocommerce/versions/v1.x.x/v1_0_0",{"title":1102,"_path":1896},"/integrations/woocommerce/versions/v1.x.x/v1_1_0",{"title":1105,"_path":1898},"/integrations/woocommerce/versions/v1.x.x/v1_2_0",{"title":1108,"_path":1900},"/integrations/woocommerce/versions/v1.x.x/v1_3_0",{"title":1111,"_path":1902},"/integrations/woocommerce/versions/v1.x.x/v1_4_0",{"title":1904,"_path":1905},"v1.5.0","/integrations/woocommerce/versions/v1.x.x/v1_5_0","i-devicon-plain-woocommerce",{"title":1908,"_path":1909,"children":1910,"icon":1926},"Hiboutik","/integrations/hiboutik",[1911,1912,1914],{"title":1908,"_path":1909},{"title":720,"_path":1913,"icon":722},"/integrations/hiboutik/api",{"title":724,"_path":1915,"children":1916,"icon":1113},"/integrations/hiboutik/versions",[1917],{"title":1095,"_path":1918,"children":1919},"/integrations/hiboutik/versions/v1.x.x",[1920,1922,1924],{"title":1099,"_path":1921},"/integrations/hiboutik/versions/v1.x.x/v1_0_0",{"title":1102,"_path":1923},"/integrations/hiboutik/versions/v1.x.x/v1_1_0",{"title":1105,"_path":1925},"/integrations/hiboutik/versions/v1.x.x/v1_2_0","i-material-symbols-point-of-sale-rounded",{"title":1928,"_path":1929,"children":1930,"icon":1942},"Banques","/integrations/banks",[1931,1934,1938],{"title":1932,"_path":1929,"icon":1933},"Open Banking","i-fluent-building-bank-16-filled",{"title":1935,"_path":1936,"icon":1937},"Bank","/integrations/banks/bank","i-fluent-building-bank-toolbox-24-regular",{"title":1939,"_path":1940,"icon":1941},"Bank API","/integrations/banks/bank-api","i-fluent-building-bank-link-16-filled","i-fa6-solid-bridge-lock",{"title":872,"_path":1944,"icon":1945},"/integrations/zapier","i-cib-zapier",{"title":1947,"_path":1948,"children":1949,"icon":1952},"Extraction de données","/integrations/extraction-donnees",[1950],{"title":1951,"_path":1948},"Extraction de données (OCR)","i-mdi-ocr",{"title":1954,"_path":1955,"children":1956,"icon":1978},"Badge inter-lieux","/federation-lieux",[1957,1959,1968],{"title":1958,"_path":1955},"Badge Inter-Lieux",{"title":1960,"_path":1961,"children":1962},"Fédération","/federation-lieux/federation-de-lieux",[1963,1966],{"title":1964,"_path":1965},"Annuaire","/federation-lieux/federation-de-lieux/annuaire",{"title":720,"_path":1967},"/federation-lieux/federation-de-lieux/api",{"title":1969,"_path":1970,"children":1971},"Lieux","/federation-lieux/lieux",[1972,1975],{"title":1973,"_path":1974},"Lieux utilisant Dokos","/federation-lieux/lieux/application-dokos",{"title":1976,"_path":1977},"Participation sans Dokos","/federation-lieux/lieux/autres-applications","i-material-symbols-add-location-alt-outline",{"title":1980,"_path":1981,"children":1982,"icon":2070},"Toobibpro","/toobibpro",[1983,1984,1987,2000,2019,2043,2052,2055,2058,2061,2064,2067],{"title":496,"_path":1981,"icon":10},{"title":1985,"_path":1986},"Démarrer rapidement","/toobibpro/demarrer-rapidement",{"title":1988,"_path":1989,"children":1990},"Dossiers","/toobibpro/dossiers",[1991,1994,1997],{"title":1992,"_path":1993},"La consultation de grossesse","/toobibpro/dossiers/consultation-grossesse",{"title":1995,"_path":1996},"Le dossier de grossesse","/toobibpro/dossiers/dossier-grossesse",{"title":1998,"_path":1999},"Le dossier patient·e","/toobibpro/dossiers/dossier-patiente",{"title":2001,"_path":2002,"children":2003},"Rendez Vous","/toobibpro/rendez-vous",[2004,2007,2010,2013,2016],{"title":2005,"_path":2006},"Comment vos patientes prennent-elles rendez-vous ?","/toobibpro/rendez-vous/comment-vos-patientes-prennent-rendez-vous",{"title":2008,"_path":2009},"Configurer la plateforme de prise de rendez-vous en ligne","/toobibpro/rendez-vous/configurer-la-plateforme-en-ligne",{"title":2011,"_path":2012},"Créer des ateliers","/toobibpro/rendez-vous/creer-des-ateliers",{"title":2014,"_path":2015},"Donner accès à votre plateforme en ligne à vos patientes","/toobibpro/rendez-vous/donner-acces-a-vos-patientes",{"title":2017,"_path":2018},"Prendre un rendez-vous","/toobibpro/rendez-vous/rendez-vous",{"title":2020,"_path":2021,"children":2022},"Gestion","/toobibpro/gestion",[2023,2025,2028,2031,2034,2037,2040],{"title":94,"_path":2024},"/toobibpro/gestion/achats",{"title":2026,"_path":2027},"Dépôt d'espèces","/toobibpro/gestion/depot-especes",{"title":2029,"_path":2030},"Enregistrer une recette","/toobibpro/gestion/enregistrer-une-recette",{"title":2032,"_path":2033},"Les codifications","/toobibpro/gestion/les-codifications",{"title":2035,"_path":2036},"Enregistrer un paiement","/toobibpro/gestion/paiements",{"title":2038,"_path":2039},"Prélèvements et apports personnels","/toobibpro/gestion/prelevement-apport-personnel",{"title":2041,"_path":2042},"Réconcilier un paiement avec son relevé bancaire","/toobibpro/gestion/reconciliation-bancaire",{"title":2044,"_path":2045,"children":2046},"Remplacements","/toobibpro/remplacements",[2047,2049],{"title":2044,"_path":2048},"/toobibpro/remplacements/remplacements",{"title":2050,"_path":2051},"Rétrocession d'Honoraires","/toobibpro/remplacements/retrocessions-honoraires",{"title":2053,"_path":2054},"Lettres Types","/toobibpro/lettres-types",{"title":2056,"_path":2057},"Modifier un champ existant","/toobibpro/modifier-un-champ-existant",{"title":2059,"_path":2060},"Les ordonnances","/toobibpro/ordonnances",{"title":2062,"_path":2063},"Personnaliser ses dossiers et fiches de consultation","/toobibpro/personnaliser-ses-dossiers-et-consultations",{"title":2065,"_path":2066},"Créer son site web","/toobibpro/site-web",{"title":2068,"_path":2069},"Synchronisation avec Google Agenda","/toobibpro/synchronisation_avec_google_agenda","i-healthicons-doctor-female-outline",{"_path":1181,"_dir":2072,"_draft":2073,"_partial":2073,"_locale":2074,"title":1180,"description":2075,"body":2076,"_type":7027,"_id":7028,"_source":7029,"_file":7030,"_extension":7031},"plus",false,"fr","Guide de configuration complet d'un serveur Dokos sur plateformes Redhat et clones",{"type":2077,"children":2078,"toc":7006},"root",[2079,2084,2092,2098,2103,2143,2150,2157,2162,2227,2232,2299,2305,2312,2317,2330,2335,2413,2418,2423,2429,2434,2482,2488,2493,2540,2546,2551,2575,2581,2586,2624,2629,2686,2692,2698,2703,2727,2732,2797,2803,2822,3057,3073,3134,3139,3169,3174,3188,3193,3198,3211,3261,3267,3272,3277,3359,3365,3370,3375,3380,3460,3466,3472,3477,3482,3487,3548,3553,3580,3586,3591,3619,3625,3630,3635,3641,3646,3651,3748,3754,3767,4048,4054,4069,4197,4202,4207,4246,4254,4259,4267,4273,4294,4300,4305,4310,4386,4392,4397,4474,4491,4497,4551,4556,4897,4903,4908,4977,4983,4988,5041,5046,5270,5275,5304,5310,5315,5320,5325,5477,5490,5613,5618,5667,5673,5747,5751,5779,5785,5790,5813,5818,5824,5870,5883,5888,5915,5920,5946,5957,5963,5969,5975,5980,6044,6050,6104,6110,6115,6120,6183,6188,6224,6229,6621,6627,6633,6638,6680,6686,6715,6720,6793,6799,6804,6840,6846,6852,6857,6923,6929,6934,7000],{"type":2080,"tag":2081,"props":2082,"children":2083},"element","community-tutorial-notice",{},[],{"type":2080,"tag":2085,"props":2086,"children":2088},"h1",{"id":2087},"installation-de-dokos-sur-plateformes-rhel-centos-almalinux-rockylinux-8-et-9",[2089],{"type":2090,"value":2091},"text","Installation de Dokos sur plateformes RHEL (CentOS, AlmaLinux, RockyLinux) 8 et 9",{"type":2080,"tag":2093,"props":2094,"children":2095},"p",{},[2096],{"type":2090,"value":2097},"Ce guide explique comment installer Dokos v2 ou v3 sur les plateformes Redhat (RHEL, AlmaLinux, CentOS, RockyLinux) EL8 ou EL9.",{"type":2080,"tag":2093,"props":2099,"children":2100},{},[2101],{"type":2090,"value":2102},"Bien qu'en dehors du scope du présent document, il convient de préparer le système hôte pour l'ERP Dokos comme suit:",{"type":2080,"tag":2104,"props":2105,"children":2106},"ul",{},[2107,2113,2118,2123,2128,2133,2138],{"type":2080,"tag":2108,"props":2109,"children":2110},"li",{},[2111],{"type":2090,"value":2112},"Le chemin /var contiendra les fichiers de l'ERP, une partition dédiée est souhaitable",{"type":2080,"tag":2108,"props":2114,"children":2115},{},[2116],{"type":2090,"value":2117},"Configurer les éventuels guest tools s'il s'agit d'une machine virtuelle (VMWare, Qemu, HyperV...)",{"type":2080,"tag":2108,"props":2119,"children":2120},{},[2121],{"type":2090,"value":2122},"Configurer un serveur NTP de préférence intra-réseau",{"type":2080,"tag":2108,"props":2124,"children":2125},{},[2126],{"type":2090,"value":2127},"Configurer la sécurité, les accès, ainsi que la traçabilité (voir guide sécurité dédié ainsi que guide OpenSCAP)",{"type":2080,"tag":2108,"props":2129,"children":2130},{},[2131],{"type":2090,"value":2132},"Configurer le tuning machine (voir guide dédié tuned-adm avec profil dédié NPF-APP et valeurs thread siblings)",{"type":2080,"tag":2108,"props":2134,"children":2135},{},[2136],{"type":2090,"value":2137},"Installer les outils de diagnostics habituels (net-tools bind-utils nano sysstat iotop htop iftop atop nmon telnet lsof traceroute) disponibles essentiellement sur le depot EPEL",{"type":2080,"tag":2108,"props":2139,"children":2140},{},[2141],{"type":2090,"value":2142},"Configurer la supervision (Prometheus ou SNMPd)",{"type":2080,"tag":2144,"props":2145,"children":2147},"h2",{"id":2146},"installation-des-prérequis",[2148],{"type":2090,"value":2149},"Installation des prérequis",{"type":2080,"tag":2151,"props":2152,"children":2154},"h3",{"id":2153},"prérequis-standards",[2155],{"type":2090,"value":2156},"Prérequis standards",{"type":2080,"tag":2093,"props":2158,"children":2159},{},[2160],{"type":2090,"value":2161},"Installer les paquets permettant la compilation des modules yarn",{"type":2080,"tag":2163,"props":2164,"children":2169},"pre",{"code":2165,"language":2166,"meta":2167,"className":2168,"style":2167},"dnf install -y git tar bzip2 openssl-devel libffi-devel gcc\n","sh","","language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight",[2170],{"type":2080,"tag":2171,"props":2172,"children":2173},"code",{"__ignoreMap":2167},[2174],{"type":2080,"tag":2175,"props":2176,"children":2179},"span",{"class":2177,"line":2178},"line",1,[2180,2186,2192,2197,2202,2207,2212,2217,2222],{"type":2080,"tag":2175,"props":2181,"children":2183},{"style":2182},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[2184],{"type":2090,"value":2185},"dnf",{"type":2080,"tag":2175,"props":2187,"children":2189},{"style":2188},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[2190],{"type":2090,"value":2191}," install",{"type":2080,"tag":2175,"props":2193,"children":2194},{"style":2188},[2195],{"type":2090,"value":2196}," -y",{"type":2080,"tag":2175,"props":2198,"children":2199},{"style":2188},[2200],{"type":2090,"value":2201}," git",{"type":2080,"tag":2175,"props":2203,"children":2204},{"style":2188},[2205],{"type":2090,"value":2206}," tar",{"type":2080,"tag":2175,"props":2208,"children":2209},{"style":2188},[2210],{"type":2090,"value":2211}," bzip2",{"type":2080,"tag":2175,"props":2213,"children":2214},{"style":2188},[2215],{"type":2090,"value":2216}," openssl-devel",{"type":2080,"tag":2175,"props":2218,"children":2219},{"style":2188},[2220],{"type":2090,"value":2221}," libffi-devel",{"type":2080,"tag":2175,"props":2223,"children":2224},{"style":2188},[2225],{"type":2090,"value":2226}," gcc\n",{"type":2080,"tag":2093,"props":2228,"children":2229},{},[2230],{"type":2090,"value":2231},"Pour la mise en production, il faudra en outre installer l'outil d'automatisation ansible:",{"type":2080,"tag":2163,"props":2233,"children":2235},{"code":2234,"language":2166,"meta":2167,"className":2168,"style":2167},"# Pour RHEL 8 et clones\ndnf -y install ansible\n# Pour RHEL 9 et clones\ndnf -y install ansible-core\n",[2236],{"type":2080,"tag":2171,"props":2237,"children":2238},{"__ignoreMap":2167},[2239,2248,2269,2278],{"type":2080,"tag":2175,"props":2240,"children":2241},{"class":2177,"line":2178},[2242],{"type":2080,"tag":2175,"props":2243,"children":2245},{"style":2244},"--shiki-light:#90A4AE;--shiki-default:#546E7A;--shiki-dark:#676E95;--shiki-light-font-style:italic;--shiki-default-font-style:italic;--shiki-dark-font-style:italic",[2246],{"type":2090,"value":2247},"# Pour RHEL 8 et clones\n",{"type":2080,"tag":2175,"props":2249,"children":2251},{"class":2177,"line":2250},2,[2252,2256,2260,2264],{"type":2080,"tag":2175,"props":2253,"children":2254},{"style":2182},[2255],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":2257,"children":2258},{"style":2188},[2259],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":2261,"children":2262},{"style":2188},[2263],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":2265,"children":2266},{"style":2188},[2267],{"type":2090,"value":2268}," ansible\n",{"type":2080,"tag":2175,"props":2270,"children":2272},{"class":2177,"line":2271},3,[2273],{"type":2080,"tag":2175,"props":2274,"children":2275},{"style":2244},[2276],{"type":2090,"value":2277},"# Pour RHEL 9 et clones\n",{"type":2080,"tag":2175,"props":2279,"children":2281},{"class":2177,"line":2280},4,[2282,2286,2290,2294],{"type":2080,"tag":2175,"props":2283,"children":2284},{"style":2182},[2285],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":2287,"children":2288},{"style":2188},[2289],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":2291,"children":2292},{"style":2188},[2293],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":2295,"children":2296},{"style":2188},[2297],{"type":2090,"value":2298}," ansible-core\n",{"type":2080,"tag":2151,"props":2300,"children":2302},{"id":2301},"configuration-spécifique-du-système",[2303],{"type":2090,"value":2304},"Configuration spécifique du système",{"type":2080,"tag":2306,"props":2307,"children":2309},"h4",{"id":2308},"modèle-inotify-mode-développement-uniquement",[2310],{"type":2090,"value":2311},"Modèle Inotify (mode développement uniquement)",{"type":2080,"tag":2093,"props":2313,"children":2314},{},[2315],{"type":2090,"value":2316},"Lors de l'exécution de Dokos en mode développement, le kernel hook inotify est utilisé par le framework JS pour surveiller les changements de fichiers. Par défaut, la limite de fichiers que RHEL 8 surveille est fixé à 8192 pour des raisons de performances, et les logs du framework peuvent contenir des erreurs de type",{"type":2080,"tag":2318,"props":2319,"children":2320},"blockquote",{},[2321],{"type":2080,"tag":2093,"props":2322,"children":2323},{},[2324],{"type":2080,"tag":2171,"props":2325,"children":2327},{"className":2326},[],[2328],{"type":2090,"value":2329},"UnhandledPromiseRejectionWarning: Error: ENOSPC: System limit for number of file watchers reached, watch '/var/dokos/dokos-erp/apps/frappe/frappe/public/scss/common/quill.scss' 23:53:21 watch.1     |   at FSWatcher.\u003Ccomputed> (internal/fs/watchers.js:243:19)",{"type":2080,"tag":2093,"props":2331,"children":2332},{},[2333],{"type":2090,"value":2334},"Pour un environnement de développement, il est possible de lever cette limite comme suit:",{"type":2080,"tag":2163,"props":2336,"children":2338},{"code":2337,"language":2166,"meta":2167,"className":2168,"style":2167},"echo \"fs.inotify.max_user_watches=$((1024*512))\" | sudo tee -a /etc/sysctl.d/90-dokos.conf\n",[2339],{"type":2080,"tag":2171,"props":2340,"children":2341},{"__ignoreMap":2167},[2342],{"type":2080,"tag":2175,"props":2343,"children":2344},{"class":2177,"line":2178},[2345,2351,2357,2362,2367,2373,2378,2383,2388,2393,2398,2403,2408],{"type":2080,"tag":2175,"props":2346,"children":2348},{"style":2347},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[2349],{"type":2090,"value":2350},"echo",{"type":2080,"tag":2175,"props":2352,"children":2354},{"style":2353},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[2355],{"type":2090,"value":2356}," \"",{"type":2080,"tag":2175,"props":2358,"children":2359},{"style":2188},[2360],{"type":2090,"value":2361},"fs.inotify.max_user_watches=",{"type":2080,"tag":2175,"props":2363,"children":2364},{"style":2353},[2365],{"type":2090,"value":2366},"$((",{"type":2080,"tag":2175,"props":2368,"children":2370},{"style":2369},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[2371],{"type":2090,"value":2372},"1024",{"type":2080,"tag":2175,"props":2374,"children":2375},{"style":2353},[2376],{"type":2090,"value":2377},"*",{"type":2080,"tag":2175,"props":2379,"children":2380},{"style":2369},[2381],{"type":2090,"value":2382},"512",{"type":2080,"tag":2175,"props":2384,"children":2385},{"style":2353},[2386],{"type":2090,"value":2387},"))\"",{"type":2080,"tag":2175,"props":2389,"children":2390},{"style":2353},[2391],{"type":2090,"value":2392}," |",{"type":2080,"tag":2175,"props":2394,"children":2395},{"style":2182},[2396],{"type":2090,"value":2397}," sudo",{"type":2080,"tag":2175,"props":2399,"children":2400},{"style":2188},[2401],{"type":2090,"value":2402}," tee",{"type":2080,"tag":2175,"props":2404,"children":2405},{"style":2188},[2406],{"type":2090,"value":2407}," -a",{"type":2080,"tag":2175,"props":2409,"children":2410},{"style":2188},[2411],{"type":2090,"value":2412}," /etc/sysctl.d/90-dokos.conf\n",{"type":2080,"tag":2093,"props":2414,"children":2415},{},[2416],{"type":2090,"value":2417},"Chaque fichier surveillé consomme 1Ko de mémoire, dans notre exemple, pour surveiller 512Ko fichiers, il faudra 512Mo de mémoire vive.",{"type":2080,"tag":2093,"props":2419,"children":2420},{},[2421],{"type":2090,"value":2422},"Dans un environnement de production, il faut penser à vider les caches de fichiers précédents de nodejs afin de réduire cette quantité de fichiers à surveiller.",{"type":2080,"tag":2306,"props":2424,"children":2426},{"id":2425},"mémoire-vm",[2427],{"type":2090,"value":2428},"Mémoire VM",{"type":2080,"tag":2093,"props":2430,"children":2431},{},[2432],{"type":2090,"value":2433},"Afin d'éviter que les enregistrements en tâche de fond échouent si la mémoire vive est faible:",{"type":2080,"tag":2163,"props":2435,"children":2437},{"code":2436,"language":2166,"meta":2167,"className":2168,"style":2167},"echo \"vm.overcommit_memory=1\" | sudo tee -a /etc/sysctl.d/90-dokos.conf\n",[2438],{"type":2080,"tag":2171,"props":2439,"children":2440},{"__ignoreMap":2167},[2441],{"type":2080,"tag":2175,"props":2442,"children":2443},{"class":2177,"line":2178},[2444,2448,2452,2457,2462,2466,2470,2474,2478],{"type":2080,"tag":2175,"props":2445,"children":2446},{"style":2347},[2447],{"type":2090,"value":2350},{"type":2080,"tag":2175,"props":2449,"children":2450},{"style":2353},[2451],{"type":2090,"value":2356},{"type":2080,"tag":2175,"props":2453,"children":2454},{"style":2188},[2455],{"type":2090,"value":2456},"vm.overcommit_memory=1",{"type":2080,"tag":2175,"props":2458,"children":2459},{"style":2353},[2460],{"type":2090,"value":2461},"\"",{"type":2080,"tag":2175,"props":2463,"children":2464},{"style":2353},[2465],{"type":2090,"value":2392},{"type":2080,"tag":2175,"props":2467,"children":2468},{"style":2182},[2469],{"type":2090,"value":2397},{"type":2080,"tag":2175,"props":2471,"children":2472},{"style":2188},[2473],{"type":2090,"value":2402},{"type":2080,"tag":2175,"props":2475,"children":2476},{"style":2188},[2477],{"type":2090,"value":2407},{"type":2080,"tag":2175,"props":2479,"children":2480},{"style":2188},[2481],{"type":2090,"value":2412},{"type":2080,"tag":2306,"props":2483,"children":2485},{"id":2484},"tcp-backlog",[2486],{"type":2090,"value":2487},"TCP Backlog",{"type":2080,"tag":2093,"props":2489,"children":2490},{},[2491],{"type":2090,"value":2492},"Pour optimiser les performances de redis, il faudra modifier le paramètre suivant:",{"type":2080,"tag":2163,"props":2494,"children":2496},{"code":2495,"language":2166,"meta":2167,"className":2168,"style":2167},"echo \"net.core.somaxconn=65535\" | sudo tee -a /etc/sysctl.d/90-dokos.conf\n",[2497],{"type":2080,"tag":2171,"props":2498,"children":2499},{"__ignoreMap":2167},[2500],{"type":2080,"tag":2175,"props":2501,"children":2502},{"class":2177,"line":2178},[2503,2507,2511,2516,2520,2524,2528,2532,2536],{"type":2080,"tag":2175,"props":2504,"children":2505},{"style":2347},[2506],{"type":2090,"value":2350},{"type":2080,"tag":2175,"props":2508,"children":2509},{"style":2353},[2510],{"type":2090,"value":2356},{"type":2080,"tag":2175,"props":2512,"children":2513},{"style":2188},[2514],{"type":2090,"value":2515},"net.core.somaxconn=65535",{"type":2080,"tag":2175,"props":2517,"children":2518},{"style":2353},[2519],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":2521,"children":2522},{"style":2353},[2523],{"type":2090,"value":2392},{"type":2080,"tag":2175,"props":2525,"children":2526},{"style":2182},[2527],{"type":2090,"value":2397},{"type":2080,"tag":2175,"props":2529,"children":2530},{"style":2188},[2531],{"type":2090,"value":2402},{"type":2080,"tag":2175,"props":2533,"children":2534},{"style":2188},[2535],{"type":2090,"value":2407},{"type":2080,"tag":2175,"props":2537,"children":2538},{"style":2188},[2539],{"type":2090,"value":2412},{"type":2080,"tag":2306,"props":2541,"children":2543},{"id":2542},"chargement-paramètres",[2544],{"type":2090,"value":2545},"Chargement paramètres",{"type":2080,"tag":2093,"props":2547,"children":2548},{},[2549],{"type":2090,"value":2550},"Il faudra recharger les paramètres à la volée pour une application sans attendre le redémarrage.",{"type":2080,"tag":2163,"props":2552,"children":2554},{"code":2553,"language":2166,"meta":2167,"className":2168,"style":2167},"sysctl --load /etc/sysctl.d/90-dokos.conf\n",[2555],{"type":2080,"tag":2171,"props":2556,"children":2557},{"__ignoreMap":2167},[2558],{"type":2080,"tag":2175,"props":2559,"children":2560},{"class":2177,"line":2178},[2561,2566,2571],{"type":2080,"tag":2175,"props":2562,"children":2563},{"style":2182},[2564],{"type":2090,"value":2565},"sysctl",{"type":2080,"tag":2175,"props":2567,"children":2568},{"style":2188},[2569],{"type":2090,"value":2570}," --load",{"type":2080,"tag":2175,"props":2572,"children":2573},{"style":2188},[2574],{"type":2090,"value":2412},{"type":2080,"tag":2306,"props":2576,"children":2578},{"id":2577},"désactivation-des-transparent-huge-pages-thp-via-le-mode-opt-in-par-processus-en-utilisant-la-directive-madvise",[2579],{"type":2090,"value":2580},"Désactivation des Transparent Huge Pages (THP) via le mode opt-in par processus en utilisant la directive « madvise »",{"type":2080,"tag":2093,"props":2582,"children":2583},{},[2584],{"type":2090,"value":2585},"Il faudra changer les arguments kernel dans /etc/default/grub comme suit en ajoutant « transparent_hugepage=madvise ». Exemple:",{"type":2080,"tag":2318,"props":2587,"children":2588},{},[2589],{"type":2080,"tag":2163,"props":2590,"children":2592},{"code":2591,"language":2166,"meta":2167,"className":2168,"style":2167},"GRUB_CMDLINE_LINUX=\"crashkernel=auto resume=UUID=598eec09-15a8-4cc9-b1ed-17d2b41b5594 transparent_hugepage=madvise\"\n",[2593],{"type":2080,"tag":2171,"props":2594,"children":2595},{"__ignoreMap":2167},[2596],{"type":2080,"tag":2175,"props":2597,"children":2598},{"class":2177,"line":2178},[2599,2605,2610,2614,2619],{"type":2080,"tag":2175,"props":2600,"children":2602},{"style":2601},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[2603],{"type":2090,"value":2604},"GRUB_CMDLINE_LINUX",{"type":2080,"tag":2175,"props":2606,"children":2607},{"style":2353},[2608],{"type":2090,"value":2609},"=",{"type":2080,"tag":2175,"props":2611,"children":2612},{"style":2353},[2613],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":2615,"children":2616},{"style":2188},[2617],{"type":2090,"value":2618},"crashkernel=auto resume=UUID=598eec09-15a8-4cc9-b1ed-17d2b41b5594 transparent_hugepage=madvise",{"type":2080,"tag":2175,"props":2620,"children":2621},{"style":2353},[2622],{"type":2090,"value":2623},"\"\n",{"type":2080,"tag":2093,"props":2625,"children":2626},{},[2627],{"type":2090,"value":2628},"Une fois enregistré, il faudra recréer une configuration de boot",{"type":2080,"tag":2163,"props":2630,"children":2632},{"code":2631,"language":2166,"meta":2167,"className":2168,"style":2167},"find /boot -iname \"grub.cfg\" | xargs grub2-mkconfig -o\n",[2633],{"type":2080,"tag":2171,"props":2634,"children":2635},{"__ignoreMap":2167},[2636],{"type":2080,"tag":2175,"props":2637,"children":2638},{"class":2177,"line":2178},[2639,2644,2649,2654,2658,2663,2667,2671,2676,2681],{"type":2080,"tag":2175,"props":2640,"children":2641},{"style":2182},[2642],{"type":2090,"value":2643},"find",{"type":2080,"tag":2175,"props":2645,"children":2646},{"style":2188},[2647],{"type":2090,"value":2648}," /boot",{"type":2080,"tag":2175,"props":2650,"children":2651},{"style":2188},[2652],{"type":2090,"value":2653}," -iname",{"type":2080,"tag":2175,"props":2655,"children":2656},{"style":2353},[2657],{"type":2090,"value":2356},{"type":2080,"tag":2175,"props":2659,"children":2660},{"style":2188},[2661],{"type":2090,"value":2662},"grub.cfg",{"type":2080,"tag":2175,"props":2664,"children":2665},{"style":2353},[2666],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":2668,"children":2669},{"style":2353},[2670],{"type":2090,"value":2392},{"type":2080,"tag":2175,"props":2672,"children":2673},{"style":2182},[2674],{"type":2090,"value":2675}," xargs",{"type":2080,"tag":2175,"props":2677,"children":2678},{"style":2188},[2679],{"type":2090,"value":2680}," grub2-mkconfig",{"type":2080,"tag":2175,"props":2682,"children":2683},{"style":2188},[2684],{"type":2090,"value":2685}," -o\n",{"type":2080,"tag":2151,"props":2687,"children":2689},{"id":2688},"préparation-du-service-de-base-de-données-mysql",[2690],{"type":2090,"value":2691},"Préparation du service de base de données MySQL",{"type":2080,"tag":2306,"props":2693,"children":2695},{"id":2694},"installation-et-préparation-de-la-base-de-données-mariadb",[2696],{"type":2090,"value":2697},"Installation et préparation de la base de données MariaDB",{"type":2080,"tag":2093,"props":2699,"children":2700},{},[2701],{"type":2090,"value":2702},"S'assurer que la version de MariaDB soit >= 10.3.x via la commande suivante:",{"type":2080,"tag":2163,"props":2704,"children":2706},{"code":2705,"language":2166,"meta":2167,"className":2168,"style":2167},"dnf list mariadb-server\n",[2707],{"type":2080,"tag":2171,"props":2708,"children":2709},{"__ignoreMap":2167},[2710],{"type":2080,"tag":2175,"props":2711,"children":2712},{"class":2177,"line":2178},[2713,2717,2722],{"type":2080,"tag":2175,"props":2714,"children":2715},{"style":2182},[2716],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":2718,"children":2719},{"style":2188},[2720],{"type":2090,"value":2721}," list",{"type":2080,"tag":2175,"props":2723,"children":2724},{"style":2188},[2725],{"type":2090,"value":2726}," mariadb-server\n",{"type":2080,"tag":2093,"props":2728,"children":2729},{},[2730],{"type":2090,"value":2731},"Lancer l'installation via la commandes suivantes:",{"type":2080,"tag":2163,"props":2733,"children":2735},{"code":2734,"language":2166,"meta":2167,"className":2168,"style":2167},"# Pour RHEL 8 et clones\ndnf -y install mariadb-server mariadb-devel\n# Pour RHEL 9 et clones\ndnf -y install mariadb-server\n",[2736],{"type":2080,"tag":2171,"props":2737,"children":2738},{"__ignoreMap":2167},[2739,2746,2771,2778],{"type":2080,"tag":2175,"props":2740,"children":2741},{"class":2177,"line":2178},[2742],{"type":2080,"tag":2175,"props":2743,"children":2744},{"style":2244},[2745],{"type":2090,"value":2247},{"type":2080,"tag":2175,"props":2747,"children":2748},{"class":2177,"line":2250},[2749,2753,2757,2761,2766],{"type":2080,"tag":2175,"props":2750,"children":2751},{"style":2182},[2752],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":2754,"children":2755},{"style":2188},[2756],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":2758,"children":2759},{"style":2188},[2760],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":2762,"children":2763},{"style":2188},[2764],{"type":2090,"value":2765}," mariadb-server",{"type":2080,"tag":2175,"props":2767,"children":2768},{"style":2188},[2769],{"type":2090,"value":2770}," mariadb-devel\n",{"type":2080,"tag":2175,"props":2772,"children":2773},{"class":2177,"line":2271},[2774],{"type":2080,"tag":2175,"props":2775,"children":2776},{"style":2244},[2777],{"type":2090,"value":2277},{"type":2080,"tag":2175,"props":2779,"children":2780},{"class":2177,"line":2280},[2781,2785,2789,2793],{"type":2080,"tag":2175,"props":2782,"children":2783},{"style":2182},[2784],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":2786,"children":2787},{"style":2188},[2788],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":2790,"children":2791},{"style":2188},[2792],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":2794,"children":2795},{"style":2188},[2796],{"type":2090,"value":2726},{"type":2080,"tag":2306,"props":2798,"children":2800},{"id":2799},"configuration-du-serveur-et-du-client",[2801],{"type":2090,"value":2802},"Configuration du serveur et du client",{"type":2080,"tag":2093,"props":2804,"children":2805},{},[2806,2808,2814,2816],{"type":2090,"value":2807},"Ajouter les directives suivantes dans la section ",{"type":2080,"tag":2171,"props":2809,"children":2811},{"className":2810},[],[2812],{"type":2090,"value":2813},"[mysql]",{"type":2090,"value":2815}," du fichier ",{"type":2080,"tag":2171,"props":2817,"children":2819},{"className":2818},[],[2820],{"type":2090,"value":2821},"/etc/my.cnf.d/mariadb-server.cnf",{"type":2080,"tag":2163,"props":2823,"children":2825},{"code":2824,"language":2166,"meta":2167,"className":2168,"style":2167},"# NETPERFECT-BZ012: Optimisation des performances mono serveur\ntable_cache             = 1000\n# NETPERFECT-BZ131: Permet l'import de fichiers SQL disposant de INSERT statements trop longs (ERROR 2006 (HY000) at line 696: MySQL server has gone away)\nmax_allowed_packet      = 128M\n# NETPERFECT-BZ065: Augmenter la taille du fichier log INNODB pour permetttre de jouer de plus grandes requêtes (info: MySQL server has gone away.). Additional info: https://jira.kopano.io/browse/KC-1053\ninnodb_log_file_size    = 128M\n# NETPERFECT-BZ213: Augmenter la durée maximale d'absence de requête pour éviter l'erreur (MySQL server has gone away)\nwait_timeout            = 288000\n# NETPERFECT-BZ003: Chaque table INNODB doit posséder son propre fichier afin de faciliter la récuperation de données en cas de crash\ninnodb-file-per-table   = 1\n\n# NETPERFECT-BZ401: Do not set client handshake (dokos)\ncharacter-set-client-handshake = FALSE\n# NETPERFECT-BZ232: Set default collation for most applications\ncharacter-set-server           = utf8mb4\n# NETPERFECT-BZ232: Set default collation for most applications\ncollation-server               = utf8mb4_unicode_ci\n",[2826],{"type":2080,"tag":2171,"props":2827,"children":2828},{"__ignoreMap":2167},[2829,2837,2855,2863,2881,2890,2908,2917,2936,2945,2964,2974,2983,3002,3011,3030,3038],{"type":2080,"tag":2175,"props":2830,"children":2831},{"class":2177,"line":2178},[2832],{"type":2080,"tag":2175,"props":2833,"children":2834},{"style":2244},[2835],{"type":2090,"value":2836},"# NETPERFECT-BZ012: Optimisation des performances mono serveur\n",{"type":2080,"tag":2175,"props":2838,"children":2839},{"class":2177,"line":2250},[2840,2845,2850],{"type":2080,"tag":2175,"props":2841,"children":2842},{"style":2182},[2843],{"type":2090,"value":2844},"table_cache",{"type":2080,"tag":2175,"props":2846,"children":2847},{"style":2188},[2848],{"type":2090,"value":2849},"             =",{"type":2080,"tag":2175,"props":2851,"children":2852},{"style":2369},[2853],{"type":2090,"value":2854}," 1000\n",{"type":2080,"tag":2175,"props":2856,"children":2857},{"class":2177,"line":2271},[2858],{"type":2080,"tag":2175,"props":2859,"children":2860},{"style":2244},[2861],{"type":2090,"value":2862},"# NETPERFECT-BZ131: Permet l'import de fichiers SQL disposant de INSERT statements trop longs (ERROR 2006 (HY000) at line 696: MySQL server has gone away)\n",{"type":2080,"tag":2175,"props":2864,"children":2865},{"class":2177,"line":2280},[2866,2871,2876],{"type":2080,"tag":2175,"props":2867,"children":2868},{"style":2182},[2869],{"type":2090,"value":2870},"max_allowed_packet",{"type":2080,"tag":2175,"props":2872,"children":2873},{"style":2188},[2874],{"type":2090,"value":2875},"      =",{"type":2080,"tag":2175,"props":2877,"children":2878},{"style":2188},[2879],{"type":2090,"value":2880}," 128M\n",{"type":2080,"tag":2175,"props":2882,"children":2884},{"class":2177,"line":2883},5,[2885],{"type":2080,"tag":2175,"props":2886,"children":2887},{"style":2244},[2888],{"type":2090,"value":2889},"# NETPERFECT-BZ065: Augmenter la taille du fichier log INNODB pour permetttre de jouer de plus grandes requêtes (info: MySQL server has gone away.). Additional info: https://jira.kopano.io/browse/KC-1053\n",{"type":2080,"tag":2175,"props":2891,"children":2893},{"class":2177,"line":2892},6,[2894,2899,2904],{"type":2080,"tag":2175,"props":2895,"children":2896},{"style":2182},[2897],{"type":2090,"value":2898},"innodb_log_file_size",{"type":2080,"tag":2175,"props":2900,"children":2901},{"style":2188},[2902],{"type":2090,"value":2903},"    =",{"type":2080,"tag":2175,"props":2905,"children":2906},{"style":2188},[2907],{"type":2090,"value":2880},{"type":2080,"tag":2175,"props":2909,"children":2911},{"class":2177,"line":2910},7,[2912],{"type":2080,"tag":2175,"props":2913,"children":2914},{"style":2244},[2915],{"type":2090,"value":2916},"# NETPERFECT-BZ213: Augmenter la durée maximale d'absence de requête pour éviter l'erreur (MySQL server has gone away)\n",{"type":2080,"tag":2175,"props":2918,"children":2920},{"class":2177,"line":2919},8,[2921,2926,2931],{"type":2080,"tag":2175,"props":2922,"children":2923},{"style":2182},[2924],{"type":2090,"value":2925},"wait_timeout",{"type":2080,"tag":2175,"props":2927,"children":2928},{"style":2188},[2929],{"type":2090,"value":2930},"            =",{"type":2080,"tag":2175,"props":2932,"children":2933},{"style":2369},[2934],{"type":2090,"value":2935}," 288000\n",{"type":2080,"tag":2175,"props":2937,"children":2939},{"class":2177,"line":2938},9,[2940],{"type":2080,"tag":2175,"props":2941,"children":2942},{"style":2244},[2943],{"type":2090,"value":2944},"# NETPERFECT-BZ003: Chaque table INNODB doit posséder son propre fichier afin de faciliter la récuperation de données en cas de crash\n",{"type":2080,"tag":2175,"props":2946,"children":2948},{"class":2177,"line":2947},10,[2949,2954,2959],{"type":2080,"tag":2175,"props":2950,"children":2951},{"style":2182},[2952],{"type":2090,"value":2953},"innodb-file-per-table",{"type":2080,"tag":2175,"props":2955,"children":2956},{"style":2188},[2957],{"type":2090,"value":2958},"   =",{"type":2080,"tag":2175,"props":2960,"children":2961},{"style":2369},[2962],{"type":2090,"value":2963}," 1\n",{"type":2080,"tag":2175,"props":2965,"children":2967},{"class":2177,"line":2966},11,[2968],{"type":2080,"tag":2175,"props":2969,"children":2971},{"emptyLinePlaceholder":2970},true,[2972],{"type":2090,"value":2973},"\n",{"type":2080,"tag":2175,"props":2975,"children":2977},{"class":2177,"line":2976},12,[2978],{"type":2080,"tag":2175,"props":2979,"children":2980},{"style":2244},[2981],{"type":2090,"value":2982},"# NETPERFECT-BZ401: Do not set client handshake (dokos)\n",{"type":2080,"tag":2175,"props":2984,"children":2986},{"class":2177,"line":2985},13,[2987,2992,2997],{"type":2080,"tag":2175,"props":2988,"children":2989},{"style":2182},[2990],{"type":2090,"value":2991},"character-set-client-handshake",{"type":2080,"tag":2175,"props":2993,"children":2994},{"style":2188},[2995],{"type":2090,"value":2996}," =",{"type":2080,"tag":2175,"props":2998,"children":2999},{"style":2188},[3000],{"type":2090,"value":3001}," FALSE\n",{"type":2080,"tag":2175,"props":3003,"children":3005},{"class":2177,"line":3004},14,[3006],{"type":2080,"tag":2175,"props":3007,"children":3008},{"style":2244},[3009],{"type":2090,"value":3010},"# NETPERFECT-BZ232: Set default collation for most applications\n",{"type":2080,"tag":2175,"props":3012,"children":3014},{"class":2177,"line":3013},15,[3015,3020,3025],{"type":2080,"tag":2175,"props":3016,"children":3017},{"style":2182},[3018],{"type":2090,"value":3019},"character-set-server",{"type":2080,"tag":2175,"props":3021,"children":3022},{"style":2188},[3023],{"type":2090,"value":3024},"           =",{"type":2080,"tag":2175,"props":3026,"children":3027},{"style":2188},[3028],{"type":2090,"value":3029}," utf8mb4\n",{"type":2080,"tag":2175,"props":3031,"children":3033},{"class":2177,"line":3032},16,[3034],{"type":2080,"tag":2175,"props":3035,"children":3036},{"style":2244},[3037],{"type":2090,"value":3010},{"type":2080,"tag":2175,"props":3039,"children":3041},{"class":2177,"line":3040},17,[3042,3047,3052],{"type":2080,"tag":2175,"props":3043,"children":3044},{"style":2182},[3045],{"type":2090,"value":3046},"collation-server",{"type":2080,"tag":2175,"props":3048,"children":3049},{"style":2188},[3050],{"type":2090,"value":3051},"               =",{"type":2080,"tag":2175,"props":3053,"children":3054},{"style":2188},[3055],{"type":2090,"value":3056}," utf8mb4_unicode_ci\n",{"type":2080,"tag":2093,"props":3058,"children":3059},{},[3060,3061,3066,3067],{"type":2090,"value":2807},{"type":2080,"tag":2171,"props":3062,"children":3064},{"className":3063},[],[3065],{"type":2090,"value":2813},{"type":2090,"value":2815},{"type":2080,"tag":2171,"props":3068,"children":3070},{"className":3069},[],[3071],{"type":2090,"value":3072},"etc/my.cnf.d/mysql-clients.cnf",{"type":2080,"tag":2163,"props":3074,"children":3076},{"code":3075,"language":2166,"meta":2167,"className":2168,"style":2167},"NETPERFECT-BZ232: Set default collation for most applications\ndefault-character-set = utf8mb4\n",[3077],{"type":2080,"tag":2171,"props":3078,"children":3079},{"__ignoreMap":2167},[3080,3118],{"type":2080,"tag":2175,"props":3081,"children":3082},{"class":2177,"line":2178},[3083,3088,3093,3098,3103,3108,3113],{"type":2080,"tag":2175,"props":3084,"children":3085},{"style":2182},[3086],{"type":2090,"value":3087},"NETPERFECT-BZ232:",{"type":2080,"tag":2175,"props":3089,"children":3090},{"style":2188},[3091],{"type":2090,"value":3092}," Set",{"type":2080,"tag":2175,"props":3094,"children":3095},{"style":2188},[3096],{"type":2090,"value":3097}," default",{"type":2080,"tag":2175,"props":3099,"children":3100},{"style":2188},[3101],{"type":2090,"value":3102}," collation",{"type":2080,"tag":2175,"props":3104,"children":3105},{"style":2188},[3106],{"type":2090,"value":3107}," for",{"type":2080,"tag":2175,"props":3109,"children":3110},{"style":2188},[3111],{"type":2090,"value":3112}," most",{"type":2080,"tag":2175,"props":3114,"children":3115},{"style":2188},[3116],{"type":2090,"value":3117}," applications\n",{"type":2080,"tag":2175,"props":3119,"children":3120},{"class":2177,"line":2250},[3121,3126,3130],{"type":2080,"tag":2175,"props":3122,"children":3123},{"style":2182},[3124],{"type":2090,"value":3125},"default-character-set",{"type":2080,"tag":2175,"props":3127,"children":3128},{"style":2188},[3129],{"type":2090,"value":2996},{"type":2080,"tag":2175,"props":3131,"children":3132},{"style":2188},[3133],{"type":2090,"value":3029},{"type":2080,"tag":2093,"props":3135,"children":3136},{},[3137],{"type":2090,"value":3138},"Une fois configuré, vous pourrez lancer le service MariaDB avec la commande suivante",{"type":2080,"tag":2163,"props":3140,"children":3142},{"code":3141,"language":2166,"meta":2167,"className":2168,"style":2167},"systemctl enable --now mariadb\n",[3143],{"type":2080,"tag":2171,"props":3144,"children":3145},{"__ignoreMap":2167},[3146],{"type":2080,"tag":2175,"props":3147,"children":3148},{"class":2177,"line":2178},[3149,3154,3159,3164],{"type":2080,"tag":2175,"props":3150,"children":3151},{"style":2182},[3152],{"type":2090,"value":3153},"systemctl",{"type":2080,"tag":2175,"props":3155,"children":3156},{"style":2188},[3157],{"type":2090,"value":3158}," enable",{"type":2080,"tag":2175,"props":3160,"children":3161},{"style":2188},[3162],{"type":2090,"value":3163}," --now",{"type":2080,"tag":2175,"props":3165,"children":3166},{"style":2188},[3167],{"type":2090,"value":3168}," mariadb\n",{"type":2080,"tag":2093,"props":3170,"children":3171},{},[3172],{"type":2090,"value":3173},"la configuration de sécurité se fera en lançant la commande",{"type":2080,"tag":2163,"props":3175,"children":3177},{"code":3176,"language":2166,"meta":2167,"className":2168,"style":2167},"mariadb-secure-installation\n",[3178],{"type":2080,"tag":2171,"props":3179,"children":3180},{"__ignoreMap":2167},[3181],{"type":2080,"tag":2175,"props":3182,"children":3183},{"class":2177,"line":2178},[3184],{"type":2080,"tag":2175,"props":3185,"children":3186},{"style":2182},[3187],{"type":2090,"value":3176},{"type":2080,"tag":2093,"props":3189,"children":3190},{},[3191],{"type":2090,"value":3192},"La configuration est légèrement différente entre RHEL 8 et RHEL 9. Depuis RHEL 9, les connexions en tant qu'utilisateur root sont possibles sans mot de passe en utilisant un socket unix.",{"type":2080,"tag":2093,"props":3194,"children":3195},{},[3196],{"type":2090,"value":3197},"Sous RHEL 8, il faudra ajouter un fichier de mot de passe afin d'arriver à un résultat identique.",{"type":2080,"tag":2093,"props":3199,"children":3200},{},[3201,3203,3209],{"type":2090,"value":3202},"Créer le fichier ",{"type":2080,"tag":2171,"props":3204,"children":3206},{"className":3205},[],[3207],{"type":2090,"value":3208},"/root/.my.cnf",{"type":2090,"value":3210}," suivant",{"type":2080,"tag":2163,"props":3212,"children":3214},{"code":3213,"language":2166,"meta":2167,"className":2168,"style":2167},"[client]\npassword=\"VotreMotDePasseSuperSécuriséMySQL\"\n",[3215],{"type":2080,"tag":2171,"props":3216,"children":3217},{"__ignoreMap":2167},[3218,3236],{"type":2080,"tag":2175,"props":3219,"children":3220},{"class":2177,"line":2178},[3221,3226,3231],{"type":2080,"tag":2175,"props":3222,"children":3223},{"style":2353},[3224],{"type":2090,"value":3225},"[",{"type":2080,"tag":2175,"props":3227,"children":3228},{"style":2601},[3229],{"type":2090,"value":3230},"client",{"type":2080,"tag":2175,"props":3232,"children":3233},{"style":2353},[3234],{"type":2090,"value":3235},"]\n",{"type":2080,"tag":2175,"props":3237,"children":3238},{"class":2177,"line":2250},[3239,3244,3248,3252,3257],{"type":2080,"tag":2175,"props":3240,"children":3241},{"style":2601},[3242],{"type":2090,"value":3243},"password",{"type":2080,"tag":2175,"props":3245,"children":3246},{"style":2353},[3247],{"type":2090,"value":2609},{"type":2080,"tag":2175,"props":3249,"children":3250},{"style":2353},[3251],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":3253,"children":3254},{"style":2188},[3255],{"type":2090,"value":3256},"VotreMotDePasseSuperSécuriséMySQL",{"type":2080,"tag":2175,"props":3258,"children":3259},{"style":2353},[3260],{"type":2090,"value":2623},{"type":2080,"tag":2151,"props":3262,"children":3264},{"id":3263},"préparation-de-la-base-de-données-redis",[3265],{"type":2090,"value":3266},"Préparation de la base de données redis",{"type":2080,"tag":2093,"props":3268,"children":3269},{},[3270],{"type":2090,"value":3271},"Depuis le Framework Frappe v13 (dokos v2.x), le prérequis minimal est redis 6.x.",{"type":2080,"tag":2093,"props":3273,"children":3274},{},[3275],{"type":2090,"value":3276},"RHEL 8 est fourni avec redis 5.x par défaut et RHEL 9 est fourni avec redis 6.x par défaut.",{"type":2080,"tag":2163,"props":3278,"children":3280},{"code":3279,"language":2166,"meta":2167,"className":2168,"style":2167},"# Pour RHEL 8 et clones\ndnf module enable redis:6\ndnf install redis -y\n# Pour RHEL 9 et clones\ndnf install redis -y\n",[3281],{"type":2080,"tag":2171,"props":3282,"children":3283},{"__ignoreMap":2167},[3284,3291,3312,3333,3340],{"type":2080,"tag":2175,"props":3285,"children":3286},{"class":2177,"line":2178},[3287],{"type":2080,"tag":2175,"props":3288,"children":3289},{"style":2244},[3290],{"type":2090,"value":2247},{"type":2080,"tag":2175,"props":3292,"children":3293},{"class":2177,"line":2250},[3294,3298,3303,3307],{"type":2080,"tag":2175,"props":3295,"children":3296},{"style":2182},[3297],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3299,"children":3300},{"style":2188},[3301],{"type":2090,"value":3302}," module",{"type":2080,"tag":2175,"props":3304,"children":3305},{"style":2188},[3306],{"type":2090,"value":3158},{"type":2080,"tag":2175,"props":3308,"children":3309},{"style":2188},[3310],{"type":2090,"value":3311}," redis:6\n",{"type":2080,"tag":2175,"props":3313,"children":3314},{"class":2177,"line":2271},[3315,3319,3323,3328],{"type":2080,"tag":2175,"props":3316,"children":3317},{"style":2182},[3318],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3320,"children":3321},{"style":2188},[3322],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3324,"children":3325},{"style":2188},[3326],{"type":2090,"value":3327}," redis",{"type":2080,"tag":2175,"props":3329,"children":3330},{"style":2188},[3331],{"type":2090,"value":3332}," -y\n",{"type":2080,"tag":2175,"props":3334,"children":3335},{"class":2177,"line":2280},[3336],{"type":2080,"tag":2175,"props":3337,"children":3338},{"style":2244},[3339],{"type":2090,"value":2277},{"type":2080,"tag":2175,"props":3341,"children":3342},{"class":2177,"line":2883},[3343,3347,3351,3355],{"type":2080,"tag":2175,"props":3344,"children":3345},{"style":2182},[3346],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3348,"children":3349},{"style":2188},[3350],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3352,"children":3353},{"style":2188},[3354],{"type":2090,"value":3327},{"type":2080,"tag":2175,"props":3356,"children":3357},{"style":2188},[3358],{"type":2090,"value":3332},{"type":2080,"tag":2151,"props":3360,"children":3362},{"id":3361},"préparation-de-lenvironnement-nodejs",[3363],{"type":2090,"value":3364},"Préparation de l'environnement nodeJS",{"type":2080,"tag":2093,"props":3366,"children":3367},{},[3368],{"type":2090,"value":3369},"Depuis le Framework Frappe v13 (dokos v2.x), le prérequis minimal est nodejs 14.x.",{"type":2080,"tag":2093,"props":3371,"children":3372},{},[3373],{"type":2090,"value":3374},"Depuis le Framework Frappe v14 (dokos v3.x), le prérequis minimal est nodejs 16.x",{"type":2080,"tag":2093,"props":3376,"children":3377},{},[3378],{"type":2090,"value":3379},"RHEL 8 est fourni avec nodejs 14.x par défaut et RHEL 9 est fourni avec nodejs 16.x par défaut.",{"type":2080,"tag":2163,"props":3381,"children":3383},{"code":3382,"language":2166,"meta":2167,"className":2168,"style":2167},"# Pour RHEL 8 et clones\ndnf module enable nodejs:14\ndnf install nodejs -y\n# Pour RHEL 9 et clones\ndnf install nodejs -y\n",[3384],{"type":2080,"tag":2171,"props":3385,"children":3386},{"__ignoreMap":2167},[3387,3394,3414,3434,3441],{"type":2080,"tag":2175,"props":3388,"children":3389},{"class":2177,"line":2178},[3390],{"type":2080,"tag":2175,"props":3391,"children":3392},{"style":2244},[3393],{"type":2090,"value":2247},{"type":2080,"tag":2175,"props":3395,"children":3396},{"class":2177,"line":2250},[3397,3401,3405,3409],{"type":2080,"tag":2175,"props":3398,"children":3399},{"style":2182},[3400],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3402,"children":3403},{"style":2188},[3404],{"type":2090,"value":3302},{"type":2080,"tag":2175,"props":3406,"children":3407},{"style":2188},[3408],{"type":2090,"value":3158},{"type":2080,"tag":2175,"props":3410,"children":3411},{"style":2188},[3412],{"type":2090,"value":3413}," nodejs:14\n",{"type":2080,"tag":2175,"props":3415,"children":3416},{"class":2177,"line":2271},[3417,3421,3425,3430],{"type":2080,"tag":2175,"props":3418,"children":3419},{"style":2182},[3420],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3422,"children":3423},{"style":2188},[3424],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3426,"children":3427},{"style":2188},[3428],{"type":2090,"value":3429}," nodejs",{"type":2080,"tag":2175,"props":3431,"children":3432},{"style":2188},[3433],{"type":2090,"value":3332},{"type":2080,"tag":2175,"props":3435,"children":3436},{"class":2177,"line":2280},[3437],{"type":2080,"tag":2175,"props":3438,"children":3439},{"style":2244},[3440],{"type":2090,"value":2277},{"type":2080,"tag":2175,"props":3442,"children":3443},{"class":2177,"line":2883},[3444,3448,3452,3456],{"type":2080,"tag":2175,"props":3445,"children":3446},{"style":2182},[3447],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3449,"children":3450},{"style":2188},[3451],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3453,"children":3454},{"style":2188},[3455],{"type":2090,"value":3429},{"type":2080,"tag":2175,"props":3457,"children":3458},{"style":2188},[3459],{"type":2090,"value":3332},{"type":2080,"tag":2151,"props":3461,"children":3463},{"id":3462},"installation-du-manager-de-packages-js-yarn",[3464],{"type":2090,"value":3465},"Installation du manager de packages JS yarn",{"type":2080,"tag":2306,"props":3467,"children":3469},{"id":3468},"solution-dinstallation-en-tant-que-paquet-rpm",[3470],{"type":2090,"value":3471},"Solution d'installation en tant que paquet RPM",{"type":2080,"tag":2093,"props":3473,"children":3474},{},[3475],{"type":2090,"value":3476},"Cette solution à l'avantage de mettre à jour automatiquement yarn avec le système.",{"type":2080,"tag":2093,"props":3478,"children":3479},{},[3480],{"type":2090,"value":3481},"Depuis le framework Frappe v13, le prérequis minimal est yarn 1.12.",{"type":2080,"tag":2093,"props":3483,"children":3484},{},[3485],{"type":2090,"value":3486},"Installation du dépôt yarn",{"type":2080,"tag":2163,"props":3488,"children":3490},{"code":3489,"language":2166,"meta":2167,"className":2168,"style":2167},"curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo\nrpm --import https://dl.yarnpkg.com/rpm/pubkey.gpg\n",[3491],{"type":2080,"tag":2171,"props":3492,"children":3493},{"__ignoreMap":2167},[3494,3530],{"type":2080,"tag":2175,"props":3495,"children":3496},{"class":2177,"line":2178},[3497,3502,3507,3512,3517,3521,3525],{"type":2080,"tag":2175,"props":3498,"children":3499},{"style":2182},[3500],{"type":2090,"value":3501},"curl",{"type":2080,"tag":2175,"props":3503,"children":3504},{"style":2188},[3505],{"type":2090,"value":3506}," --silent",{"type":2080,"tag":2175,"props":3508,"children":3509},{"style":2188},[3510],{"type":2090,"value":3511}," --location",{"type":2080,"tag":2175,"props":3513,"children":3514},{"style":2188},[3515],{"type":2090,"value":3516}," https://dl.yarnpkg.com/rpm/yarn.repo",{"type":2080,"tag":2175,"props":3518,"children":3519},{"style":2353},[3520],{"type":2090,"value":2392},{"type":2080,"tag":2175,"props":3522,"children":3523},{"style":2182},[3524],{"type":2090,"value":2402},{"type":2080,"tag":2175,"props":3526,"children":3527},{"style":2188},[3528],{"type":2090,"value":3529}," /etc/yum.repos.d/yarn.repo\n",{"type":2080,"tag":2175,"props":3531,"children":3532},{"class":2177,"line":2250},[3533,3538,3543],{"type":2080,"tag":2175,"props":3534,"children":3535},{"style":2182},[3536],{"type":2090,"value":3537},"rpm",{"type":2080,"tag":2175,"props":3539,"children":3540},{"style":2188},[3541],{"type":2090,"value":3542}," --import",{"type":2080,"tag":2175,"props":3544,"children":3545},{"style":2188},[3546],{"type":2090,"value":3547}," https://dl.yarnpkg.com/rpm/pubkey.gpg\n",{"type":2080,"tag":2093,"props":3549,"children":3550},{},[3551],{"type":2090,"value":3552},"Installation de yarn",{"type":2080,"tag":2163,"props":3554,"children":3556},{"code":3555,"language":2166,"meta":2167,"className":2168,"style":2167},"dnf install -y yarn\n",[3557],{"type":2080,"tag":2171,"props":3558,"children":3559},{"__ignoreMap":2167},[3560],{"type":2080,"tag":2175,"props":3561,"children":3562},{"class":2177,"line":2178},[3563,3567,3571,3575],{"type":2080,"tag":2175,"props":3564,"children":3565},{"style":2182},[3566],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3568,"children":3569},{"style":2188},[3570],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3572,"children":3573},{"style":2188},[3574],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":3576,"children":3577},{"style":2188},[3578],{"type":2090,"value":3579}," yarn\n",{"type":2080,"tag":2306,"props":3581,"children":3583},{"id":3582},"solujtion-dinstallation-via-npm",[3584],{"type":2090,"value":3585},"Solujtion d'installation via npm",{"type":2080,"tag":2093,"props":3587,"children":3588},{},[3589],{"type":2090,"value":3590},"Alternativement, il est possible d'installer yarn via le gestionnaire de packages nodejs:",{"type":2080,"tag":2163,"props":3592,"children":3594},{"code":3593,"language":2166,"meta":2167,"className":2168,"style":2167},"npm install -g yarn\n",[3595],{"type":2080,"tag":2171,"props":3596,"children":3597},{"__ignoreMap":2167},[3598],{"type":2080,"tag":2175,"props":3599,"children":3600},{"class":2177,"line":2178},[3601,3606,3610,3615],{"type":2080,"tag":2175,"props":3602,"children":3603},{"style":2182},[3604],{"type":2090,"value":3605},"npm",{"type":2080,"tag":2175,"props":3607,"children":3608},{"style":2188},[3609],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3611,"children":3612},{"style":2188},[3613],{"type":2090,"value":3614}," -g",{"type":2080,"tag":2175,"props":3616,"children":3617},{"style":2188},[3618],{"type":2090,"value":3579},{"type":2080,"tag":2151,"props":3620,"children":3622},{"id":3621},"préparation-de-lenvironnement-python",[3623],{"type":2090,"value":3624},"Préparation de l'environnement Python",{"type":2080,"tag":2093,"props":3626,"children":3627},{},[3628],{"type":2090,"value":3629},"Depuis le Framework Frappe v13 (dokos v2.x), le prérequis minimal est python 3.8.x",{"type":2080,"tag":2093,"props":3631,"children":3632},{},[3633],{"type":2090,"value":3634},"Depuis le Framework Frappe v14 (dokos v3.x), le prérequis minimal est python 3.10.x",{"type":2080,"tag":2306,"props":3636,"children":3638},{"id":3637},"configuration-de-python-pour-dokos-v2x",[3639],{"type":2090,"value":3640},"Configuration de python pour dokos v2.x",{"type":2080,"tag":2093,"props":3642,"children":3643},{},[3644],{"type":2090,"value":3645},"RHEL 8 est fourni avec python 3.8. RHEL 9 est fourni avec python 3.9.",{"type":2080,"tag":2093,"props":3647,"children":3648},{},[3649],{"type":2090,"value":3650},"Pour dokos v2.x, il sera donc possible d'utiliser l'interpréteur système",{"type":2080,"tag":2163,"props":3652,"children":3654},{"code":3653,"language":2166,"meta":2167,"className":2168,"style":2167},"dnf install -y python-pip\npython3 -m pip install --upgrade pip\npython3 -m pip install --upgrade setuptools wheel virtualenv\n",[3655],{"type":2080,"tag":2171,"props":3656,"children":3657},{"__ignoreMap":2167},[3658,3678,3710],{"type":2080,"tag":2175,"props":3659,"children":3660},{"class":2177,"line":2178},[3661,3665,3669,3673],{"type":2080,"tag":2175,"props":3662,"children":3663},{"style":2182},[3664],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3666,"children":3667},{"style":2188},[3668],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3670,"children":3671},{"style":2188},[3672],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":3674,"children":3675},{"style":2188},[3676],{"type":2090,"value":3677}," python-pip\n",{"type":2080,"tag":2175,"props":3679,"children":3680},{"class":2177,"line":2250},[3681,3686,3691,3696,3700,3705],{"type":2080,"tag":2175,"props":3682,"children":3683},{"style":2182},[3684],{"type":2090,"value":3685},"python3",{"type":2080,"tag":2175,"props":3687,"children":3688},{"style":2188},[3689],{"type":2090,"value":3690}," -m",{"type":2080,"tag":2175,"props":3692,"children":3693},{"style":2188},[3694],{"type":2090,"value":3695}," pip",{"type":2080,"tag":2175,"props":3697,"children":3698},{"style":2188},[3699],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3701,"children":3702},{"style":2188},[3703],{"type":2090,"value":3704}," --upgrade",{"type":2080,"tag":2175,"props":3706,"children":3707},{"style":2188},[3708],{"type":2090,"value":3709}," pip\n",{"type":2080,"tag":2175,"props":3711,"children":3712},{"class":2177,"line":2271},[3713,3717,3721,3725,3729,3733,3738,3743],{"type":2080,"tag":2175,"props":3714,"children":3715},{"style":2182},[3716],{"type":2090,"value":3685},{"type":2080,"tag":2175,"props":3718,"children":3719},{"style":2188},[3720],{"type":2090,"value":3690},{"type":2080,"tag":2175,"props":3722,"children":3723},{"style":2188},[3724],{"type":2090,"value":3695},{"type":2080,"tag":2175,"props":3726,"children":3727},{"style":2188},[3728],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3730,"children":3731},{"style":2188},[3732],{"type":2090,"value":3704},{"type":2080,"tag":2175,"props":3734,"children":3735},{"style":2188},[3736],{"type":2090,"value":3737}," setuptools",{"type":2080,"tag":2175,"props":3739,"children":3740},{"style":2188},[3741],{"type":2090,"value":3742}," wheel",{"type":2080,"tag":2175,"props":3744,"children":3745},{"style":2188},[3746],{"type":2090,"value":3747}," virtualenv\n",{"type":2080,"tag":2306,"props":3749,"children":3751},{"id":3750},"configuration-de-python-pour-dokos-v3x",[3752],{"type":2090,"value":3753},"Configuration de python pour dokos v3.x",{"type":2080,"tag":2093,"props":3755,"children":3756},{},[3757,3759,3765],{"type":2090,"value":3758},"Dokos v3.x utilise python 3.10+. Au 12/12/2022, aucune dépot officiel de python 3.10 n'existe pour RHEL. Il faudra donc compiler manuellement Python et l'installer dans un chemin alternatif ",{"type":2080,"tag":2171,"props":3760,"children":3762},{"className":3761},[],[3763],{"type":2090,"value":3764},"/usr/local/bin/python3",{"type":2090,"value":3766}," pour ne pas interférer avec l'interpréteur python fourni par le système.",{"type":2080,"tag":2163,"props":3768,"children":3770},{"code":3769,"language":2166,"meta":2167,"className":2168,"style":2167},"# Dépendances de compilation python\ndnf install -y wget yum-utils make gcc openssl-devel bzip2-devel libffi-devel zlib-devel\n# Dépendances de compilation de modules python nécessaires pour le framework Frappe\ndnf install -y libpq-devel gcc-c++ libjpeg-turbo-devel libjpeg-turbo-utils\nmkdir /opt/python310 && cd /opt/python310\n# Attention: Vérifier sur python.org s'il existe une archive plus récente\ncurl -OL https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz\ntar xvf Python-3.10.9.tgz\ncd Python-3.10.9\n./configure --with-system-ffi --with-computed-gotos --enable-loadable-sqlite-extensions\nmake -j ${nproc}\nmake altinstall\nalias python3=/usr/local/bin/python3\n",[3771],{"type":2080,"tag":2171,"props":3772,"children":3773},{"__ignoreMap":2167},[3774,3782,3835,3843,3878,3906,3914,3931,3949,3962,3985,4013,4025],{"type":2080,"tag":2175,"props":3775,"children":3776},{"class":2177,"line":2178},[3777],{"type":2080,"tag":2175,"props":3778,"children":3779},{"style":2244},[3780],{"type":2090,"value":3781},"# Dépendances de compilation python\n",{"type":2080,"tag":2175,"props":3783,"children":3784},{"class":2177,"line":2250},[3785,3789,3793,3797,3802,3807,3812,3817,3821,3826,3830],{"type":2080,"tag":2175,"props":3786,"children":3787},{"style":2182},[3788],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3790,"children":3791},{"style":2188},[3792],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3794,"children":3795},{"style":2188},[3796],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":3798,"children":3799},{"style":2188},[3800],{"type":2090,"value":3801}," wget",{"type":2080,"tag":2175,"props":3803,"children":3804},{"style":2188},[3805],{"type":2090,"value":3806}," yum-utils",{"type":2080,"tag":2175,"props":3808,"children":3809},{"style":2188},[3810],{"type":2090,"value":3811}," make",{"type":2080,"tag":2175,"props":3813,"children":3814},{"style":2188},[3815],{"type":2090,"value":3816}," gcc",{"type":2080,"tag":2175,"props":3818,"children":3819},{"style":2188},[3820],{"type":2090,"value":2216},{"type":2080,"tag":2175,"props":3822,"children":3823},{"style":2188},[3824],{"type":2090,"value":3825}," bzip2-devel",{"type":2080,"tag":2175,"props":3827,"children":3828},{"style":2188},[3829],{"type":2090,"value":2221},{"type":2080,"tag":2175,"props":3831,"children":3832},{"style":2188},[3833],{"type":2090,"value":3834}," zlib-devel\n",{"type":2080,"tag":2175,"props":3836,"children":3837},{"class":2177,"line":2271},[3838],{"type":2080,"tag":2175,"props":3839,"children":3840},{"style":2244},[3841],{"type":2090,"value":3842},"# Dépendances de compilation de modules python nécessaires pour le framework Frappe\n",{"type":2080,"tag":2175,"props":3844,"children":3845},{"class":2177,"line":2280},[3846,3850,3854,3858,3863,3868,3873],{"type":2080,"tag":2175,"props":3847,"children":3848},{"style":2182},[3849],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":3851,"children":3852},{"style":2188},[3853],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":3855,"children":3856},{"style":2188},[3857],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":3859,"children":3860},{"style":2188},[3861],{"type":2090,"value":3862}," libpq-devel",{"type":2080,"tag":2175,"props":3864,"children":3865},{"style":2188},[3866],{"type":2090,"value":3867}," gcc-c++",{"type":2080,"tag":2175,"props":3869,"children":3870},{"style":2188},[3871],{"type":2090,"value":3872}," libjpeg-turbo-devel",{"type":2080,"tag":2175,"props":3874,"children":3875},{"style":2188},[3876],{"type":2090,"value":3877}," libjpeg-turbo-utils\n",{"type":2080,"tag":2175,"props":3879,"children":3880},{"class":2177,"line":2883},[3881,3886,3891,3896,3901],{"type":2080,"tag":2175,"props":3882,"children":3883},{"style":2182},[3884],{"type":2090,"value":3885},"mkdir",{"type":2080,"tag":2175,"props":3887,"children":3888},{"style":2188},[3889],{"type":2090,"value":3890}," /opt/python310",{"type":2080,"tag":2175,"props":3892,"children":3893},{"style":2353},[3894],{"type":2090,"value":3895}," &&",{"type":2080,"tag":2175,"props":3897,"children":3898},{"style":2347},[3899],{"type":2090,"value":3900}," cd",{"type":2080,"tag":2175,"props":3902,"children":3903},{"style":2188},[3904],{"type":2090,"value":3905}," /opt/python310\n",{"type":2080,"tag":2175,"props":3907,"children":3908},{"class":2177,"line":2892},[3909],{"type":2080,"tag":2175,"props":3910,"children":3911},{"style":2244},[3912],{"type":2090,"value":3913},"# Attention: Vérifier sur python.org s'il existe une archive plus récente\n",{"type":2080,"tag":2175,"props":3915,"children":3916},{"class":2177,"line":2910},[3917,3921,3926],{"type":2080,"tag":2175,"props":3918,"children":3919},{"style":2182},[3920],{"type":2090,"value":3501},{"type":2080,"tag":2175,"props":3922,"children":3923},{"style":2188},[3924],{"type":2090,"value":3925}," -OL",{"type":2080,"tag":2175,"props":3927,"children":3928},{"style":2188},[3929],{"type":2090,"value":3930}," https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz\n",{"type":2080,"tag":2175,"props":3932,"children":3933},{"class":2177,"line":2919},[3934,3939,3944],{"type":2080,"tag":2175,"props":3935,"children":3936},{"style":2182},[3937],{"type":2090,"value":3938},"tar",{"type":2080,"tag":2175,"props":3940,"children":3941},{"style":2188},[3942],{"type":2090,"value":3943}," xvf",{"type":2080,"tag":2175,"props":3945,"children":3946},{"style":2188},[3947],{"type":2090,"value":3948}," Python-3.10.9.tgz\n",{"type":2080,"tag":2175,"props":3950,"children":3951},{"class":2177,"line":2938},[3952,3957],{"type":2080,"tag":2175,"props":3953,"children":3954},{"style":2347},[3955],{"type":2090,"value":3956},"cd",{"type":2080,"tag":2175,"props":3958,"children":3959},{"style":2188},[3960],{"type":2090,"value":3961}," Python-3.10.9\n",{"type":2080,"tag":2175,"props":3963,"children":3964},{"class":2177,"line":2947},[3965,3970,3975,3980],{"type":2080,"tag":2175,"props":3966,"children":3967},{"style":2182},[3968],{"type":2090,"value":3969},"./configure",{"type":2080,"tag":2175,"props":3971,"children":3972},{"style":2188},[3973],{"type":2090,"value":3974}," --with-system-ffi",{"type":2080,"tag":2175,"props":3976,"children":3977},{"style":2188},[3978],{"type":2090,"value":3979}," --with-computed-gotos",{"type":2080,"tag":2175,"props":3981,"children":3982},{"style":2188},[3983],{"type":2090,"value":3984}," --enable-loadable-sqlite-extensions\n",{"type":2080,"tag":2175,"props":3986,"children":3987},{"class":2177,"line":2966},[3988,3993,3998,4003,4008],{"type":2080,"tag":2175,"props":3989,"children":3990},{"style":2182},[3991],{"type":2090,"value":3992},"make",{"type":2080,"tag":2175,"props":3994,"children":3995},{"style":2188},[3996],{"type":2090,"value":3997}," -j",{"type":2080,"tag":2175,"props":3999,"children":4000},{"style":2353},[4001],{"type":2090,"value":4002}," ${",{"type":2080,"tag":2175,"props":4004,"children":4005},{"style":2601},[4006],{"type":2090,"value":4007},"nproc",{"type":2080,"tag":2175,"props":4009,"children":4010},{"style":2353},[4011],{"type":2090,"value":4012},"}\n",{"type":2080,"tag":2175,"props":4014,"children":4015},{"class":2177,"line":2976},[4016,4020],{"type":2080,"tag":2175,"props":4017,"children":4018},{"style":2182},[4019],{"type":2090,"value":3992},{"type":2080,"tag":2175,"props":4021,"children":4022},{"style":2188},[4023],{"type":2090,"value":4024}," altinstall\n",{"type":2080,"tag":2175,"props":4026,"children":4027},{"class":2177,"line":2985},[4028,4034,4039,4043],{"type":2080,"tag":2175,"props":4029,"children":4031},{"style":4030},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[4032],{"type":2090,"value":4033},"alias",{"type":2080,"tag":2175,"props":4035,"children":4036},{"style":2601},[4037],{"type":2090,"value":4038}," python3",{"type":2080,"tag":2175,"props":4040,"children":4041},{"style":2353},[4042],{"type":2090,"value":2609},{"type":2080,"tag":2175,"props":4044,"children":4045},{"style":2601},[4046],{"type":2090,"value":4047},"/usr/local/bin/python3\n",{"type":2080,"tag":2151,"props":4049,"children":4051},{"id":4050},"installation-de-wkhtmltopdf",[4052],{"type":2090,"value":4053},"Installation de wkhtmltopdf",{"type":2080,"tag":2093,"props":4055,"children":4056},{},[4057,4059,4067],{"type":2090,"value":4058},"Il faut se rendre sur la page « ",{"type":2080,"tag":4060,"props":4061,"children":4065},"a",{"href":4062,"rel":4063},"https://github.com/wkhtmltopdf/packaging/releases",[4064],"nofollow",[4066],{"type":2090,"value":4062},{"type":2090,"value":4068}," pour télécharger la dernière version.",{"type":2080,"tag":2163,"props":4070,"children":4072},{"code":4071,"language":2166,"meta":2167,"className":2168,"style":2167},"# Pour RHEL 8 et clones\ncd /opt\ncurl -OL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm\ndnf localinstall wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm\ndnf install nodejs -y\n# Pour RHEL 9 et clones\ncd /opt\ncurl -OL https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm\ndnf localinstall wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm\n",[4073],{"type":2080,"tag":2171,"props":4074,"children":4075},{"__ignoreMap":2167},[4076,4083,4095,4111,4128,4147,4154,4165,4181],{"type":2080,"tag":2175,"props":4077,"children":4078},{"class":2177,"line":2178},[4079],{"type":2080,"tag":2175,"props":4080,"children":4081},{"style":2244},[4082],{"type":2090,"value":2247},{"type":2080,"tag":2175,"props":4084,"children":4085},{"class":2177,"line":2250},[4086,4090],{"type":2080,"tag":2175,"props":4087,"children":4088},{"style":2347},[4089],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":4091,"children":4092},{"style":2188},[4093],{"type":2090,"value":4094}," /opt\n",{"type":2080,"tag":2175,"props":4096,"children":4097},{"class":2177,"line":2271},[4098,4102,4106],{"type":2080,"tag":2175,"props":4099,"children":4100},{"style":2182},[4101],{"type":2090,"value":3501},{"type":2080,"tag":2175,"props":4103,"children":4104},{"style":2188},[4105],{"type":2090,"value":3925},{"type":2080,"tag":2175,"props":4107,"children":4108},{"style":2188},[4109],{"type":2090,"value":4110}," https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm\n",{"type":2080,"tag":2175,"props":4112,"children":4113},{"class":2177,"line":2280},[4114,4118,4123],{"type":2080,"tag":2175,"props":4115,"children":4116},{"style":2182},[4117],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":4119,"children":4120},{"style":2188},[4121],{"type":2090,"value":4122}," localinstall",{"type":2080,"tag":2175,"props":4124,"children":4125},{"style":2188},[4126],{"type":2090,"value":4127}," wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm\n",{"type":2080,"tag":2175,"props":4129,"children":4130},{"class":2177,"line":2883},[4131,4135,4139,4143],{"type":2080,"tag":2175,"props":4132,"children":4133},{"style":2182},[4134],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":4136,"children":4137},{"style":2188},[4138],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":4140,"children":4141},{"style":2188},[4142],{"type":2090,"value":3429},{"type":2080,"tag":2175,"props":4144,"children":4145},{"style":2188},[4146],{"type":2090,"value":3332},{"type":2080,"tag":2175,"props":4148,"children":4149},{"class":2177,"line":2892},[4150],{"type":2080,"tag":2175,"props":4151,"children":4152},{"style":2244},[4153],{"type":2090,"value":2277},{"type":2080,"tag":2175,"props":4155,"children":4156},{"class":2177,"line":2910},[4157,4161],{"type":2080,"tag":2175,"props":4158,"children":4159},{"style":2347},[4160],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":4162,"children":4163},{"style":2188},[4164],{"type":2090,"value":4094},{"type":2080,"tag":2175,"props":4166,"children":4167},{"class":2177,"line":2919},[4168,4172,4176],{"type":2080,"tag":2175,"props":4169,"children":4170},{"style":2182},[4171],{"type":2090,"value":3501},{"type":2080,"tag":2175,"props":4173,"children":4174},{"style":2188},[4175],{"type":2090,"value":3925},{"type":2080,"tag":2175,"props":4177,"children":4178},{"style":2188},[4179],{"type":2090,"value":4180}," https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm\n",{"type":2080,"tag":2175,"props":4182,"children":4183},{"class":2177,"line":2938},[4184,4188,4192],{"type":2080,"tag":2175,"props":4185,"children":4186},{"style":2182},[4187],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":4189,"children":4190},{"style":2188},[4191],{"type":2090,"value":4122},{"type":2080,"tag":2175,"props":4193,"children":4194},{"style":2188},[4195],{"type":2090,"value":4196}," wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm\n",{"type":2080,"tag":2093,"props":4198,"children":4199},{},[4200],{"type":2090,"value":4201},"La version de wkhtmlpdf doit avoir été compilée avec le support de la librairie qt.",{"type":2080,"tag":2093,"props":4203,"children":4204},{},[4205],{"type":2090,"value":4206},"Il est possible de vérifier que le patch QT soit appliqué avec la commande suivante",{"type":2080,"tag":2163,"props":4208,"children":4210},{"code":4209,"language":2166,"meta":2167,"className":2168,"style":2167},"wkhtmltopdf -v 2>&1 | grep qt\n",[4211],{"type":2080,"tag":2171,"props":4212,"children":4213},{"__ignoreMap":2167},[4214],{"type":2080,"tag":2175,"props":4215,"children":4216},{"class":2177,"line":2178},[4217,4222,4227,4232,4236,4241],{"type":2080,"tag":2175,"props":4218,"children":4219},{"style":2182},[4220],{"type":2090,"value":4221},"wkhtmltopdf",{"type":2080,"tag":2175,"props":4223,"children":4224},{"style":2188},[4225],{"type":2090,"value":4226}," -v",{"type":2080,"tag":2175,"props":4228,"children":4229},{"style":2353},[4230],{"type":2090,"value":4231}," 2>&1",{"type":2080,"tag":2175,"props":4233,"children":4234},{"style":2353},[4235],{"type":2090,"value":2392},{"type":2080,"tag":2175,"props":4237,"children":4238},{"style":2182},[4239],{"type":2090,"value":4240}," grep",{"type":2080,"tag":2175,"props":4242,"children":4243},{"style":2188},[4244],{"type":2090,"value":4245}," qt\n",{"type":2080,"tag":2318,"props":4247,"children":4248},{},[4249],{"type":2080,"tag":2093,"props":4250,"children":4251},{},[4252],{"type":2090,"value":4253},"wkhtmltopdf 0.12.6 (with patched qt)",{"type":2080,"tag":2093,"props":4255,"children":4256},{},[4257],{"type":2090,"value":4258},"Afin que les documents PDF générés par Dokos soient conformes à leur version HTML, il conviendra également d'installer les polices Truetype Microsoft avec la commande suivante:",{"type":2080,"tag":2163,"props":4260,"children":4262},{"code":4261},"dnf localinstall https://www.itzgeek.com/msttcore-fonts-2.0-3.noarch.rpm\n",[4263],{"type":2080,"tag":2171,"props":4264,"children":4265},{"__ignoreMap":2167},[4266],{"type":2090,"value":4261},{"type":2080,"tag":2144,"props":4268,"children":4270},{"id":4269},"installation-de-lerp-dokos",[4271],{"type":2090,"value":4272},"Installation de l'ERP Dokos",{"type":2080,"tag":2093,"props":4274,"children":4275},{},[4276,4278,4284,4286,4292],{"type":2090,"value":4277},"L'ERP Dokos est un fork de erpnext, lui même basé sur le framework Frappe. Le framework Frappe s'administre avec l'outil ",{"type":2080,"tag":2171,"props":4279,"children":4281},{"className":4280},[],[4282],{"type":2090,"value":4283},"bench",{"type":2090,"value":4285}," (aussi nommé ",{"type":2080,"tag":2171,"props":4287,"children":4289},{"className":4288},[],[4290],{"type":2090,"value":4291},"docli",{"type":2090,"value":4293}," chez Dokos).",{"type":2080,"tag":2151,"props":4295,"children":4297},{"id":4296},"création-de-lutilisateur-dédié",[4298],{"type":2090,"value":4299},"Création de l'utilisateur dédié",{"type":2080,"tag":2093,"props":4301,"children":4302},{},[4303],{"type":2090,"value":4304},"Afin d'améliorer la sécurité, dokos devrait être installé en tant qu'utilisateur non root.",{"type":2080,"tag":2093,"props":4306,"children":4307},{},[4308],{"type":2090,"value":4309},"Création d'un utilisateur dédié dont le dossier utilisateur sera stocké dans /var/dokos",{"type":2080,"tag":2163,"props":4311,"children":4313},{"code":4312,"language":2166,"meta":2167,"className":2168,"style":2167},"user-add --home-dir /var/dokos -G wheel dokos\n# Création d'un mot de passe pour l'utilisateur dokos\npasswd dokos\nsu - dokos\n",[4314],{"type":2080,"tag":2171,"props":4315,"children":4316},{"__ignoreMap":2167},[4317,4349,4357,4369],{"type":2080,"tag":2175,"props":4318,"children":4319},{"class":2177,"line":2178},[4320,4325,4330,4335,4340,4344],{"type":2080,"tag":2175,"props":4321,"children":4322},{"style":2182},[4323],{"type":2090,"value":4324},"user-add",{"type":2080,"tag":2175,"props":4326,"children":4327},{"style":2188},[4328],{"type":2090,"value":4329}," --home-dir",{"type":2080,"tag":2175,"props":4331,"children":4332},{"style":2188},[4333],{"type":2090,"value":4334}," /var/dokos",{"type":2080,"tag":2175,"props":4336,"children":4337},{"style":2188},[4338],{"type":2090,"value":4339}," -G",{"type":2080,"tag":2175,"props":4341,"children":4342},{"style":2188},[4343],{"type":2090,"value":3742},{"type":2080,"tag":2175,"props":4345,"children":4346},{"style":2188},[4347],{"type":2090,"value":4348}," dokos\n",{"type":2080,"tag":2175,"props":4350,"children":4351},{"class":2177,"line":2250},[4352],{"type":2080,"tag":2175,"props":4353,"children":4354},{"style":2244},[4355],{"type":2090,"value":4356},"# Création d'un mot de passe pour l'utilisateur dokos\n",{"type":2080,"tag":2175,"props":4358,"children":4359},{"class":2177,"line":2271},[4360,4365],{"type":2080,"tag":2175,"props":4361,"children":4362},{"style":2182},[4363],{"type":2090,"value":4364},"passwd",{"type":2080,"tag":2175,"props":4366,"children":4367},{"style":2188},[4368],{"type":2090,"value":4348},{"type":2080,"tag":2175,"props":4370,"children":4371},{"class":2177,"line":2280},[4372,4377,4382],{"type":2080,"tag":2175,"props":4373,"children":4374},{"style":2182},[4375],{"type":2090,"value":4376},"su",{"type":2080,"tag":2175,"props":4378,"children":4379},{"style":2188},[4380],{"type":2090,"value":4381}," -",{"type":2080,"tag":2175,"props":4383,"children":4384},{"style":2188},[4385],{"type":2090,"value":4348},{"type":2080,"tag":2151,"props":4387,"children":4389},{"id":4388},"installation-du-framework-docli-frappe-bench",[4390],{"type":2090,"value":4391},"Installation du Framework docli (Frappe Bench)",{"type":2080,"tag":2093,"props":4393,"children":4394},{},[4395],{"type":2090,"value":4396},"Afin que l'installation se déroule avec succès, il est conseillé de régler temporairement les variables linguistiques sur le standard C, afin que les scripts d'installations automatisés reçoivent des sorties standards des commandes telles que date sans se soucier de la langue.",{"type":2080,"tag":2163,"props":4398,"children":4400},{"code":4399,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\nexport LC_ALL=C.UTF-8\ncd /var/dokos && sudo python3 -m pip install dokos-cli\n",[4401],{"type":2080,"tag":2171,"props":4402,"children":4403},{"__ignoreMap":2167},[4404,4412,4434],{"type":2080,"tag":2175,"props":4405,"children":4406},{"class":2177,"line":2178},[4407],{"type":2080,"tag":2175,"props":4408,"children":4409},{"style":2244},[4410],{"type":2090,"value":4411},"# En tant qu'utilisateur dokos\n",{"type":2080,"tag":2175,"props":4413,"children":4414},{"class":2177,"line":2250},[4415,4420,4425,4429],{"type":2080,"tag":2175,"props":4416,"children":4417},{"style":4030},[4418],{"type":2090,"value":4419},"export",{"type":2080,"tag":2175,"props":4421,"children":4422},{"style":2601},[4423],{"type":2090,"value":4424}," LC_ALL",{"type":2080,"tag":2175,"props":4426,"children":4427},{"style":2353},[4428],{"type":2090,"value":2609},{"type":2080,"tag":2175,"props":4430,"children":4431},{"style":2601},[4432],{"type":2090,"value":4433},"C.UTF-8\n",{"type":2080,"tag":2175,"props":4435,"children":4436},{"class":2177,"line":2271},[4437,4441,4445,4449,4453,4457,4461,4465,4469],{"type":2080,"tag":2175,"props":4438,"children":4439},{"style":2347},[4440],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":4442,"children":4443},{"style":2188},[4444],{"type":2090,"value":4334},{"type":2080,"tag":2175,"props":4446,"children":4447},{"style":2353},[4448],{"type":2090,"value":3895},{"type":2080,"tag":2175,"props":4450,"children":4451},{"style":2182},[4452],{"type":2090,"value":2397},{"type":2080,"tag":2175,"props":4454,"children":4455},{"style":2188},[4456],{"type":2090,"value":4038},{"type":2080,"tag":2175,"props":4458,"children":4459},{"style":2188},[4460],{"type":2090,"value":3690},{"type":2080,"tag":2175,"props":4462,"children":4463},{"style":2188},[4464],{"type":2090,"value":3695},{"type":2080,"tag":2175,"props":4466,"children":4467},{"style":2188},[4468],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":4470,"children":4471},{"style":2188},[4472],{"type":2090,"value":4473}," dokos-cli\n",{"type":2080,"tag":2093,"props":4475,"children":4476},{},[4477,4479,4484,4486],{"type":2090,"value":4478},"Cette opération installera une copie locale de ",{"type":2080,"tag":2171,"props":4480,"children":4482},{"className":4481},[],[4483],{"type":2090,"value":4291},{"type":2090,"value":4485}," qui est un alias de ",{"type":2080,"tag":2171,"props":4487,"children":4489},{"className":4488},[],[4490],{"type":2090,"value":4283},{"type":2080,"tag":2306,"props":4492,"children":4494},{"id":4493},"création-dune-nouvelle-instance-dodock-frappe-framework",[4495],{"type":2090,"value":4496},"Création d'une nouvelle instance Dodock (Frappe framework)",{"type":2080,"tag":2163,"props":4498,"children":4500},{"code":4499,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\ncd /var/dokos && docli init --frappe-branch master dokos-erp\n",[4501],{"type":2080,"tag":2171,"props":4502,"children":4503},{"__ignoreMap":2167},[4504,4511],{"type":2080,"tag":2175,"props":4505,"children":4506},{"class":2177,"line":2178},[4507],{"type":2080,"tag":2175,"props":4508,"children":4509},{"style":2244},[4510],{"type":2090,"value":4411},{"type":2080,"tag":2175,"props":4512,"children":4513},{"class":2177,"line":2250},[4514,4518,4522,4526,4531,4536,4541,4546],{"type":2080,"tag":2175,"props":4515,"children":4516},{"style":2347},[4517],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":4519,"children":4520},{"style":2188},[4521],{"type":2090,"value":4334},{"type":2080,"tag":2175,"props":4523,"children":4524},{"style":2353},[4525],{"type":2090,"value":3895},{"type":2080,"tag":2175,"props":4527,"children":4528},{"style":2182},[4529],{"type":2090,"value":4530}," docli",{"type":2080,"tag":2175,"props":4532,"children":4533},{"style":2188},[4534],{"type":2090,"value":4535}," init",{"type":2080,"tag":2175,"props":4537,"children":4538},{"style":2188},[4539],{"type":2090,"value":4540}," --frappe-branch",{"type":2080,"tag":2175,"props":4542,"children":4543},{"style":2188},[4544],{"type":2090,"value":4545}," master",{"type":2080,"tag":2175,"props":4547,"children":4548},{"style":2188},[4549],{"type":2090,"value":4550}," dokos-erp\n",{"type":2080,"tag":2093,"props":4552,"children":4553},{},[4554],{"type":2090,"value":4555},"Le résultat devrait ressembler à ceci:",{"type":2080,"tag":2318,"props":4557,"children":4558},{},[4559,4727,4732],{"type":2080,"tag":2093,"props":4560,"children":4561},{},[4562,4564,4568,4570,4573,4575,4578,4580,4586,4588,4591,4593,4596,4598,4601,4603,4606,4608,4611,4613,4616,4618,4621,4623,4626,4628,4631,4633,4636,4638,4641,4643,4646,4648,4651,4653,4656,4658,4661,4663,4666,4668,4671,4673,4676,4678,4681,4683,4686,4688,4691,4693,4696,4698,4701,4703,4706,4712,4715,4717,4720,4722,4725],{"type":2090,"value":4563},"$ /usr/local/bin/virtualenv --quiet env -p python3",{"type":2080,"tag":4565,"props":4566,"children":4567},"br",{},[],{"type":2090,"value":4569},"\n$ /var/dokos/dokos-erp/env/bin/python -m pip install --quiet --upgrade pip",{"type":2080,"tag":4565,"props":4571,"children":4572},{},[],{"type":2090,"value":4574},"\nGetting dodock",{"type":2080,"tag":4565,"props":4576,"children":4577},{},[],{"type":2090,"value":4579},"\n$ git clone ",{"type":2080,"tag":4060,"props":4581,"children":4584},{"href":4582,"rel":4583},"https://gitlab.com/dokos/dodock.git",[4064],[4585],{"type":2090,"value":4582},{"type":2090,"value":4587}," --branch master --depth 1 --origin upstream",{"type":2080,"tag":4565,"props":4589,"children":4590},{},[],{"type":2090,"value":4592},"\nClonage dans 'dodock'...",{"type":2080,"tag":4565,"props":4594,"children":4595},{},[],{"type":2090,"value":4597},"\nremote: Enumerating objects: 4828, done.",{"type":2080,"tag":4565,"props":4599,"children":4600},{},[],{"type":2090,"value":4602},"\nremote: Counting objects: 100% (4828/4828), done.",{"type":2080,"tag":4565,"props":4604,"children":4605},{},[],{"type":2090,"value":4607},"\nremote: Compressing objects: 100% (4556/4556), done.",{"type":2080,"tag":4565,"props":4609,"children":4610},{},[],{"type":2090,"value":4612},"\nremote: Total 4828 (delta 447), reused 2995 (delta 197), pack-reused 0",{"type":2080,"tag":4565,"props":4614,"children":4615},{},[],{"type":2090,"value":4617},"\nRéception d'objets: 100% (4828/4828), 21.74 Mio | 13.96 Mio/s, fait.",{"type":2080,"tag":4565,"props":4619,"children":4620},{},[],{"type":2090,"value":4622},"\nRésolution des deltas: 100% (447/447), fait.",{"type":2080,"tag":4565,"props":4624,"children":4625},{},[],{"type":2090,"value":4627},"\nInstalling frappe",{"type":2080,"tag":4565,"props":4629,"children":4630},{},[],{"type":2090,"value":4632},"\n$ /var/dokos/dokos-erp/env/bin/python -m pip install --quiet --upgrade -e /var/dokos/dokos-erp/apps/frappe",{"type":2080,"tag":4565,"props":4634,"children":4635},{},[],{"type":2090,"value":4637},"\n$ yarn install",{"type":2080,"tag":4565,"props":4639,"children":4640},{},[],{"type":2090,"value":4642},"\nyarn install v1.22.18",{"type":2080,"tag":4565,"props":4644,"children":4645},{},[],{"type":2090,"value":4647},"\n[1/4] Resolving packages...",{"type":2080,"tag":4565,"props":4649,"children":4650},{},[],{"type":2090,"value":4652},"\n[2/4] Fetching packages...",{"type":2080,"tag":4565,"props":4654,"children":4655},{},[],{"type":2090,"value":4657},"\n[3/4] Linking dependencies...",{"type":2080,"tag":4565,"props":4659,"children":4660},{},[],{"type":2090,"value":4662},"\nwarning \" > @fullcalendar/vue@5.10.1\" has incorrect peer dependency \"vue@^2.6.12\".",{"type":2080,"tag":4565,"props":4664,"children":4665},{},[],{"type":2090,"value":4667},"\nwarning \" > bootstrap@4.5.0\" has unmet peer dependency \"jquery@1.9.1 - 3\".",{"type":2080,"tag":4565,"props":4669,"children":4670},{},[],{"type":2090,"value":4672},"\nwarning \" > bootstrap@4.5.0\" has unmet peer dependency \"popper.js@^1.16.0\".",{"type":2080,"tag":4565,"props":4674,"children":4675},{},[],{"type":2090,"value":4677},"\n[4/4] Building fresh packages...",{"type":2080,"tag":4565,"props":4679,"children":4680},{},[],{"type":2090,"value":4682},"\nDone in 15.04s.",{"type":2080,"tag":4565,"props":4684,"children":4685},{},[],{"type":2090,"value":4687},"\n$ bench build",{"type":2080,"tag":4565,"props":4689,"children":4690},{},[],{"type":2090,"value":4692},"\nyarn run v1.22.18",{"type":2080,"tag":4565,"props":4694,"children":4695},{},[],{"type":2090,"value":4697},"\n$ FRAPPE_ENV=production node rollup/build.js",{"type":2080,"tag":4565,"props":4699,"children":4700},{},[],{"type":2090,"value":4702},"\nclean: postcss.plugin was deprecated. Migration guide:",{"type":2080,"tag":4565,"props":4704,"children":4705},{},[],{"type":2080,"tag":4060,"props":4707,"children":4710},{"href":4708,"rel":4709},"https://evilmartians.com/chronicles/postcss-8-plugin-migration",[4064],[4711],{"type":2090,"value":4708},{"type":2080,"tag":4565,"props":4713,"children":4714},{},[],{"type":2090,"value":4716},"\nProduction mode",{"type":2080,"tag":4565,"props":4718,"children":4719},{},[],{"type":2090,"value":4721},"\n✔ Built js/moment-bundle.min.js",{"type":2080,"tag":4565,"props":4723,"children":4724},{},[],{"type":2090,"value":4726},"\n✔ Built js/libs.min.js",{"type":2080,"tag":2093,"props":4728,"children":4729},{},[4730],{"type":2090,"value":4731},"Building frappe assets...",{"type":2080,"tag":2093,"props":4733,"children":4734},{},[4735,4737,4740,4742,4745,4747,4750,4752,4755,4757,4760,4762,4765,4767,4770,4772,4775,4777,4780,4782,4785,4787,4790,4792,4795,4797,4800,4802,4805,4807,4810,4812,4815,4817,4820,4822,4825,4827,4830,4832,4835,4837,4840,4842,4845,4847,4850,4852,4855,4857,4860,4862,4865,4867,4870,4872,4875,4877,4880,4882,4885,4887,4890,4892,4895],{"type":2090,"value":4736},"✔ Built js/checkout.min.js",{"type":2080,"tag":4565,"props":4738,"children":4739},{},[],{"type":2090,"value":4741},"\n✔ Built js/dialog.min.js",{"type":2080,"tag":4565,"props":4743,"children":4744},{},[],{"type":2090,"value":4746},"\n✔ Built js/user_profile_controller.min.js",{"type":2080,"tag":4565,"props":4748,"children":4749},{},[],{"type":2090,"value":4751},"\n✔ Built js/frappe-vue.min.js",{"type":2080,"tag":4565,"props":4753,"children":4754},{},[],{"type":2090,"value":4756},"\n✔ Built js/bootstrap-4-web.min.js",{"type":2080,"tag":4565,"props":4758,"children":4759},{},[],{"type":2090,"value":4761},"\n✔ Built js/barcode_scanner.min.js",{"type":2080,"tag":4565,"props":4763,"children":4764},{},[],{"type":2090,"value":4766},"\nBrowserslist: caniuse-lite is outdated. Please run:",{"type":2080,"tag":4565,"props":4768,"children":4769},{},[],{"type":2090,"value":4771},"\nnpx browserslist@latest --update-db",{"type":2080,"tag":4565,"props":4773,"children":4774},{},[],{"type":2090,"value":4776},"\nBrowserslist: caniuse-lite is outdated. Please run next command `yarn upgrade caniuse-lite browserslist`",{"type":2080,"tag":4565,"props":4778,"children":4779},{},[],{"type":2090,"value":4781},"\n✔ Built css/frappe-rtl.css",{"type":2080,"tag":4565,"props":4783,"children":4784},{},[],{"type":2090,"value":4786},"\n✔ Built js/frappe-recorder.min.js",{"type":2080,"tag":4565,"props":4788,"children":4789},{},[],{"type":2090,"value":4791},"\n✔ Built css/report.min.css",{"type":2080,"tag":4565,"props":4793,"children":4794},{},[],{"type":2090,"value":4796},"\n✔ Built js/web_form.min.js",{"type":2080,"tag":4565,"props":4798,"children":4799},{},[],{"type":2090,"value":4801},"\n✔ Built css/web_form.css",{"type":2080,"tag":4565,"props":4803,"children":4804},{},[],{"type":2090,"value":4806},"\n✔ Built css/frappe-chat-web.css",{"type":2080,"tag":4565,"props":4808,"children":4809},{},[],{"type":2090,"value":4811},"\n✔ Built js/report.min.js",{"type":2080,"tag":4565,"props":4813,"children":4814},{},[],{"type":2090,"value":4816},"\n✔ Built js/data_import_tools.min.js",{"type":2080,"tag":4565,"props":4818,"children":4819},{},[],{"type":2090,"value":4821},"\n✔ Built js/chat.js",{"type":2080,"tag":4565,"props":4823,"children":4824},{},[],{"type":2090,"value":4826},"\n✔ Built js/frappe-web.min.js",{"type":2080,"tag":4565,"props":4828,"children":4829},{},[],{"type":2090,"value":4831},"\n✔ Built js/desk.min.js",{"type":2080,"tag":4565,"props":4833,"children":4834},{},[],{"type":2090,"value":4836},"\n✔ Built js/events-portal.min.js",{"type":2080,"tag":4565,"props":4838,"children":4839},{},[],{"type":2090,"value":4841},"\n✔ Built js/list.min.js",{"type":2080,"tag":4565,"props":4843,"children":4844},{},[],{"type":2090,"value":4846},"\n✔ Built css/printview.css",{"type":2080,"tag":4565,"props":4848,"children":4849},{},[],{"type":2090,"value":4851},"\n✔ Built js/control.min.js",{"type":2080,"tag":4565,"props":4853,"children":4854},{},[],{"type":2090,"value":4856},"\n✔ Built css/website-calendar.min.css",{"type":2080,"tag":4565,"props":4858,"children":4859},{},[],{"type":2090,"value":4861},"\n✔ Built css/email.css",{"type":2080,"tag":4565,"props":4863,"children":4864},{},[],{"type":2090,"value":4866},"\n✔ Built css/login.css",{"type":2080,"tag":4565,"props":4868,"children":4869},{},[],{"type":2090,"value":4871},"\n✔ Built css/frappe-web-b4.css",{"type":2080,"tag":4565,"props":4873,"children":4874},{},[],{"type":2090,"value":4876},"\n✔ Built js/form.min.js",{"type":2080,"tag":4565,"props":4878,"children":4879},{},[],{"type":2090,"value":4881},"\n✔ Built css/desk.min.css",{"type":2080,"tag":4565,"props":4883,"children":4884},{},[],{"type":2090,"value":4886},"\n✨  Done in 111.635s",{"type":2080,"tag":4565,"props":4888,"children":4889},{},[],{"type":2090,"value":4891},"\nDone in 113.26s.",{"type":2080,"tag":4565,"props":4893,"children":4894},{},[],{"type":2090,"value":4896},"\nSUCCESS: Bench dokos-erp initialized",{"type":2080,"tag":2306,"props":4898,"children":4900},{"id":4899},"installation-des-dépendances-python-du-framework-frappe",[4901],{"type":2090,"value":4902},"Installation des dépendances python du framework Frappe",{"type":2080,"tag":2093,"props":4904,"children":4905},{},[4906],{"type":2090,"value":4907},"Au lieu d'une installation en tant que site-packages, les dépendances du framework Frappe seront installés directement dans l'environnement virtuel python crée pour le framework.",{"type":2080,"tag":2163,"props":4909,"children":4911},{"code":4910,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\npython3 -m venv /var/dokos/dokos-erp/env\n/var/dokos/dokos-erp/env/bin/python -m pip install --upgrade -e /var/dokos/dokos-erp/apps/frappe\n",[4912],{"type":2080,"tag":2171,"props":4913,"children":4914},{"__ignoreMap":2167},[4915,4922,4943],{"type":2080,"tag":2175,"props":4916,"children":4917},{"class":2177,"line":2178},[4918],{"type":2080,"tag":2175,"props":4919,"children":4920},{"style":2244},[4921],{"type":2090,"value":4411},{"type":2080,"tag":2175,"props":4923,"children":4924},{"class":2177,"line":2250},[4925,4929,4933,4938],{"type":2080,"tag":2175,"props":4926,"children":4927},{"style":2182},[4928],{"type":2090,"value":3685},{"type":2080,"tag":2175,"props":4930,"children":4931},{"style":2188},[4932],{"type":2090,"value":3690},{"type":2080,"tag":2175,"props":4934,"children":4935},{"style":2188},[4936],{"type":2090,"value":4937}," venv",{"type":2080,"tag":2175,"props":4939,"children":4940},{"style":2188},[4941],{"type":2090,"value":4942}," /var/dokos/dokos-erp/env\n",{"type":2080,"tag":2175,"props":4944,"children":4945},{"class":2177,"line":2271},[4946,4951,4955,4959,4963,4967,4972],{"type":2080,"tag":2175,"props":4947,"children":4948},{"style":2182},[4949],{"type":2090,"value":4950},"/var/dokos/dokos-erp/env/bin/python",{"type":2080,"tag":2175,"props":4952,"children":4953},{"style":2188},[4954],{"type":2090,"value":3690},{"type":2080,"tag":2175,"props":4956,"children":4957},{"style":2188},[4958],{"type":2090,"value":3695},{"type":2080,"tag":2175,"props":4960,"children":4961},{"style":2188},[4962],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":4964,"children":4965},{"style":2188},[4966],{"type":2090,"value":3704},{"type":2080,"tag":2175,"props":4968,"children":4969},{"style":2188},[4970],{"type":2090,"value":4971}," -e",{"type":2080,"tag":2175,"props":4973,"children":4974},{"style":2188},[4975],{"type":2090,"value":4976}," /var/dokos/dokos-erp/apps/frappe\n",{"type":2080,"tag":2306,"props":4978,"children":4980},{"id":4979},"installation-de-lapplication-erp-dokos",[4981],{"type":2090,"value":4982},"Installation de l'application ERP dokos",{"type":2080,"tag":2093,"props":4984,"children":4985},{},[4986],{"type":2090,"value":4987},"UNe fois le framework configuré, il sera alors possible d'installer dokos comme suit",{"type":2080,"tag":2163,"props":4989,"children":4991},{"code":4990,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\ncd /var/dokos/dokos-erp && docli get-app --branch master https://gitlab.com/dokos/dokos\n",[4992],{"type":2080,"tag":2171,"props":4993,"children":4994},{"__ignoreMap":2167},[4995,5002],{"type":2080,"tag":2175,"props":4996,"children":4997},{"class":2177,"line":2178},[4998],{"type":2080,"tag":2175,"props":4999,"children":5000},{"style":2244},[5001],{"type":2090,"value":4411},{"type":2080,"tag":2175,"props":5003,"children":5004},{"class":2177,"line":2250},[5005,5009,5014,5018,5022,5027,5032,5036],{"type":2080,"tag":2175,"props":5006,"children":5007},{"style":2347},[5008],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":5010,"children":5011},{"style":2188},[5012],{"type":2090,"value":5013}," /var/dokos/dokos-erp",{"type":2080,"tag":2175,"props":5015,"children":5016},{"style":2353},[5017],{"type":2090,"value":3895},{"type":2080,"tag":2175,"props":5019,"children":5020},{"style":2182},[5021],{"type":2090,"value":4530},{"type":2080,"tag":2175,"props":5023,"children":5024},{"style":2188},[5025],{"type":2090,"value":5026}," get-app",{"type":2080,"tag":2175,"props":5028,"children":5029},{"style":2188},[5030],{"type":2090,"value":5031}," --branch",{"type":2080,"tag":2175,"props":5033,"children":5034},{"style":2188},[5035],{"type":2090,"value":4545},{"type":2080,"tag":2175,"props":5037,"children":5038},{"style":2188},[5039],{"type":2090,"value":5040}," https://gitlab.com/dokos/dokos\n",{"type":2080,"tag":2093,"props":5042,"children":5043},{},[5044],{"type":2090,"value":5045},"La sortie devrait ressembler à ceci:",{"type":2080,"tag":2318,"props":5047,"children":5048},{},[5049,5188,5193],{"type":2080,"tag":2093,"props":5050,"children":5051},{},[5052,5054,5057,5058,5064,5065,5068,5070,5073,5075,5081,5084,5086,5089,5091,5094,5096,5099,5101,5104,5106,5109,5111,5114,5116,5119,5121,5124,5125,5128,5129,5132,5133,5136,5137,5140,5141,5144,5145,5148,5150,5153,5155,5158,5159,5162,5164,5167,5168,5171,5176,5179,5180,5183,5184,5187],{"type":2090,"value":5053},"Getting dokos",{"type":2080,"tag":4565,"props":5055,"children":5056},{},[],{"type":2090,"value":4579},{"type":2080,"tag":4060,"props":5059,"children":5062},{"href":5060,"rel":5061},"https://gitlab.com/dokos/dokos",[4064],[5063],{"type":2090,"value":5060},{"type":2090,"value":4587},{"type":2080,"tag":4565,"props":5066,"children":5067},{},[],{"type":2090,"value":5069},"\nCloning into 'dokos'...",{"type":2080,"tag":4565,"props":5071,"children":5072},{},[],{"type":2090,"value":5074},"\nwarning: redirecting to ",{"type":2080,"tag":4060,"props":5076,"children":5079},{"href":5077,"rel":5078},"https://gitlab.com/dokos/dokos.git/",[4064],[5080],{"type":2090,"value":5077},{"type":2080,"tag":4565,"props":5082,"children":5083},{},[],{"type":2090,"value":5085},"\nremote: Enumerating objects: 5773, done.",{"type":2080,"tag":4565,"props":5087,"children":5088},{},[],{"type":2090,"value":5090},"\nremote: Counting objects: 100% (5773/5773), done.",{"type":2080,"tag":4565,"props":5092,"children":5093},{},[],{"type":2090,"value":5095},"\nremote: Compressing objects: 100% (4740/4740), done.",{"type":2080,"tag":4565,"props":5097,"children":5098},{},[],{"type":2090,"value":5100},"\nremote: Total 5773 (delta 1454), reused 3419 (delta 796), pack-reused 0",{"type":2080,"tag":4565,"props":5102,"children":5103},{},[],{"type":2090,"value":5105},"\nReceiving objects: 100% (5773/5773), 17.10 MiB | 17.00 MiB/s, done.",{"type":2080,"tag":4565,"props":5107,"children":5108},{},[],{"type":2090,"value":5110},"\nResolving deltas: 100% (1454/1454), done.",{"type":2080,"tag":4565,"props":5112,"children":5113},{},[],{"type":2090,"value":5115},"\nInstalling erpnext",{"type":2080,"tag":4565,"props":5117,"children":5118},{},[],{"type":2090,"value":5120},"\n$ /var/dokos/dokos-erp/env/bin/python -m pip install --quiet --upgrade -e /var/dokos/dokos-erp/apps/erpnext",{"type":2080,"tag":4565,"props":5122,"children":5123},{},[],{"type":2090,"value":4637},{"type":2080,"tag":4565,"props":5126,"children":5127},{},[],{"type":2090,"value":4642},{"type":2080,"tag":4565,"props":5130,"children":5131},{},[],{"type":2090,"value":4647},{"type":2080,"tag":4565,"props":5134,"children":5135},{},[],{"type":2090,"value":4652},{"type":2080,"tag":4565,"props":5138,"children":5139},{},[],{"type":2090,"value":4657},{"type":2080,"tag":4565,"props":5142,"children":5143},{},[],{"type":2090,"value":4677},{"type":2080,"tag":4565,"props":5146,"children":5147},{},[],{"type":2090,"value":5149},"\nDone in 1.53s.",{"type":2080,"tag":4565,"props":5151,"children":5152},{},[],{"type":2090,"value":5154},"\n$ bench build --app erpnext",{"type":2080,"tag":4565,"props":5156,"children":5157},{},[],{"type":2090,"value":4692},{"type":2080,"tag":4565,"props":5160,"children":5161},{},[],{"type":2090,"value":5163},"\n$ FRAPPE_ENV=production node rollup/build.js --app erpnext",{"type":2080,"tag":4565,"props":5165,"children":5166},{},[],{"type":2090,"value":4702},{"type":2080,"tag":4565,"props":5169,"children":5170},{},[],{"type":2080,"tag":4060,"props":5172,"children":5174},{"href":4708,"rel":5173},[4064],[5175],{"type":2090,"value":4708},{"type":2080,"tag":4565,"props":5177,"children":5178},{},[],{"type":2090,"value":4716},{"type":2080,"tag":4565,"props":5181,"children":5182},{},[],{"type":2090,"value":4721},{"type":2080,"tag":4565,"props":5185,"children":5186},{},[],{"type":2090,"value":4726},{"type":2080,"tag":2093,"props":5189,"children":5190},{},[5191],{"type":2090,"value":5192},"Building erpnext assets...",{"type":2080,"tag":2093,"props":5194,"children":5195},{},[5196,5198,5201,5203,5206,5208,5211,5213,5216,5218,5221,5222,5225,5226,5229,5230,5233,5235,5238,5240,5243,5245,5248,5250,5253,5255,5258,5260,5263,5265,5268],{"type":2090,"value":5197},"✔ Built js/erpnext-web.min.js",{"type":2080,"tag":4565,"props":5199,"children":5200},{},[],{"type":2090,"value":5202},"\n✔ Built js/item-dashboard.min.js",{"type":2080,"tag":4565,"props":5204,"children":5205},{},[],{"type":2090,"value":5207},"\n✔ Built js/erpnext.min.js",{"type":2080,"tag":4565,"props":5209,"children":5210},{},[],{"type":2090,"value":5212},"\n✔ Built js/portal-payments.min.js",{"type":2080,"tag":4565,"props":5214,"children":5215},{},[],{"type":2090,"value":5217},"\n✔ Built js/point-of-sale.min.js",{"type":2080,"tag":4565,"props":5219,"children":5220},{},[],{"type":2090,"value":4766},{"type":2080,"tag":4565,"props":5223,"children":5224},{},[],{"type":2090,"value":4771},{"type":2080,"tag":4565,"props":5227,"children":5228},{},[],{"type":2090,"value":4776},{"type":2080,"tag":4565,"props":5231,"children":5232},{},[],{"type":2090,"value":5234},"\n✔ Built css/erpnext-web.css",{"type":2080,"tag":4565,"props":5236,"children":5237},{},[],{"type":2090,"value":5239},"\n✔ Built css/erpnext.css",{"type":2080,"tag":4565,"props":5241,"children":5242},{},[],{"type":2090,"value":5244},"\n✔ Built js/bank-reconciliation.min.js",{"type":2080,"tag":4565,"props":5246,"children":5247},{},[],{"type":2090,"value":5249},"\n✔ Built js/bank-transaction-importer.min.js",{"type":2080,"tag":4565,"props":5251,"children":5252},{},[],{"type":2090,"value":5254},"\n✔ Built js/portal-calendars.min.js",{"type":2080,"tag":4565,"props":5256,"children":5257},{},[],{"type":2090,"value":5259},"\n✔ Built js/resource-calendar.min.js",{"type":2080,"tag":4565,"props":5261,"children":5262},{},[],{"type":2090,"value":5264},"\n✨  Done in 38.242s",{"type":2080,"tag":4565,"props":5266,"children":5267},{},[],{"type":2090,"value":5269},"\nDone in 39.81s.",{"type":2080,"tag":2093,"props":5271,"children":5272},{},[5273],{"type":2090,"value":5274},"Note: L'erreur suivante peut apparaître",{"type":2080,"tag":2163,"props":5276,"children":5278},{"code":5277,"language":2166,"meta":2167,"className":2168,"style":2167},"ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. frappe 2.13.0 requires PyJWT~=1.7.1, but you have pyjwt 2.3.0 which is incompatible.\n",[5279],{"type":2080,"tag":2171,"props":5280,"children":5281},{"__ignoreMap":2167},[5282],{"type":2080,"tag":2175,"props":5283,"children":5284},{"class":2177,"line":2178},[5285,5290,5294,5299],{"type":2080,"tag":2175,"props":5286,"children":5287},{"style":2182},[5288],{"type":2090,"value":5289},"ERROR:",{"type":2080,"tag":2175,"props":5291,"children":5292},{"style":2188},[5293],{"type":2090,"value":3695},{"type":2080,"tag":2175,"props":5295,"children":5296},{"style":2353},[5297],{"type":2090,"value":5298},"'",{"type":2080,"tag":2175,"props":5300,"children":5301},{"style":2188},[5302],{"type":2090,"value":5303},"s dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. frappe 2.13.0 requires PyJWT~=1.7.1, but you have pyjwt 2.3.0 which is incompatible.\n",{"type":2080,"tag":2306,"props":5305,"children":5307},{"id":5306},"création-dun-site",[5308],{"type":2090,"value":5309},"Création d'un site",{"type":2080,"tag":2093,"props":5311,"children":5312},{},[5313],{"type":2090,"value":5314},"Par défaut, l'application dokos installée sur le framework n'est pas accessible publiquement.",{"type":2080,"tag":2093,"props":5316,"children":5317},{},[5318],{"type":2090,"value":5319},"Il convient de créer un site (nom de domaine) sur lequel le framework servira les applications qu'il héberge.",{"type":2080,"tag":2093,"props":5321,"children":5322},{},[5323],{"type":2090,"value":5324},"Le nom du site devra respecter la nomenclature DNS et pourra être un FQDN arbitraire (exemple: erp.masociete.local) ou un FQDN attaché à un nom de domaine existant (exemple: erp.monsite-societe.fr)",{"type":2080,"tag":2163,"props":5326,"children":5328},{"code":5327,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\ncd /var/dokos/dokos-erp && docli new-site \u003CFQDN DE VORTE SITE>\ndocli --site \u003CFQDN DE VOTRE SITE> set-config hostname http://\u003CFQDN DE VOTRE SITE]\n",[5329],{"type":2080,"tag":2171,"props":5330,"children":5331},{"__ignoreMap":2167},[5332,5339,5398],{"type":2080,"tag":2175,"props":5333,"children":5334},{"class":2177,"line":2178},[5335],{"type":2080,"tag":2175,"props":5336,"children":5337},{"style":2244},[5338],{"type":2090,"value":4411},{"type":2080,"tag":2175,"props":5340,"children":5341},{"class":2177,"line":2250},[5342,5346,5350,5354,5358,5363,5368,5373,5378,5383,5388,5393],{"type":2080,"tag":2175,"props":5343,"children":5344},{"style":2347},[5345],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":5347,"children":5348},{"style":2188},[5349],{"type":2090,"value":5013},{"type":2080,"tag":2175,"props":5351,"children":5352},{"style":2353},[5353],{"type":2090,"value":3895},{"type":2080,"tag":2175,"props":5355,"children":5356},{"style":2182},[5357],{"type":2090,"value":4530},{"type":2080,"tag":2175,"props":5359,"children":5360},{"style":2188},[5361],{"type":2090,"value":5362}," new-site",{"type":2080,"tag":2175,"props":5364,"children":5365},{"style":2353},[5366],{"type":2090,"value":5367}," \u003C",{"type":2080,"tag":2175,"props":5369,"children":5370},{"style":2188},[5371],{"type":2090,"value":5372},"FQDN",{"type":2080,"tag":2175,"props":5374,"children":5375},{"style":2188},[5376],{"type":2090,"value":5377}," DE",{"type":2080,"tag":2175,"props":5379,"children":5380},{"style":2188},[5381],{"type":2090,"value":5382}," VORTE",{"type":2080,"tag":2175,"props":5384,"children":5385},{"style":2188},[5386],{"type":2090,"value":5387}," SIT",{"type":2080,"tag":2175,"props":5389,"children":5390},{"style":2601},[5391],{"type":2090,"value":5392},"E",{"type":2080,"tag":2175,"props":5394,"children":5395},{"style":2353},[5396],{"type":2090,"value":5397},">\n",{"type":2080,"tag":2175,"props":5399,"children":5400},{"class":2177,"line":2271},[5401,5405,5410,5414,5418,5422,5427,5431,5435,5440,5445,5450,5455,5460,5464,5468,5472],{"type":2080,"tag":2175,"props":5402,"children":5403},{"style":2182},[5404],{"type":2090,"value":4291},{"type":2080,"tag":2175,"props":5406,"children":5407},{"style":2188},[5408],{"type":2090,"value":5409}," --site",{"type":2080,"tag":2175,"props":5411,"children":5412},{"style":2353},[5413],{"type":2090,"value":5367},{"type":2080,"tag":2175,"props":5415,"children":5416},{"style":2188},[5417],{"type":2090,"value":5372},{"type":2080,"tag":2175,"props":5419,"children":5420},{"style":2188},[5421],{"type":2090,"value":5377},{"type":2080,"tag":2175,"props":5423,"children":5424},{"style":2188},[5425],{"type":2090,"value":5426}," VOTRE",{"type":2080,"tag":2175,"props":5428,"children":5429},{"style":2188},[5430],{"type":2090,"value":5387},{"type":2080,"tag":2175,"props":5432,"children":5433},{"style":2601},[5434],{"type":2090,"value":5392},{"type":2080,"tag":2175,"props":5436,"children":5437},{"style":2353},[5438],{"type":2090,"value":5439},">",{"type":2080,"tag":2175,"props":5441,"children":5442},{"style":2188},[5443],{"type":2090,"value":5444}," set-config",{"type":2080,"tag":2175,"props":5446,"children":5447},{"style":2188},[5448],{"type":2090,"value":5449}," hostname",{"type":2080,"tag":2175,"props":5451,"children":5452},{"style":2188},[5453],{"type":2090,"value":5454}," http://",{"type":2080,"tag":2175,"props":5456,"children":5457},{"style":2353},[5458],{"type":2090,"value":5459},"\u003C",{"type":2080,"tag":2175,"props":5461,"children":5462},{"style":2188},[5463],{"type":2090,"value":5372},{"type":2080,"tag":2175,"props":5465,"children":5466},{"style":2188},[5467],{"type":2090,"value":5377},{"type":2080,"tag":2175,"props":5469,"children":5470},{"style":2188},[5471],{"type":2090,"value":5426},{"type":2080,"tag":2175,"props":5473,"children":5474},{"style":2188},[5475],{"type":2090,"value":5476}," SITE]\n",{"type":2080,"tag":2093,"props":5478,"children":5479},{},[5480,5482,5488],{"type":2090,"value":5481},"Dans le cas d'un FQDN arbitraire qui n'est pas résolu par un serveur DNS, il faudra ajouter les entrées suivantes au fichier ",{"type":2080,"tag":2171,"props":5483,"children":5485},{"className":5484},[],[5486],{"type":2090,"value":5487},"/etc/hosts",{"type":2090,"value":5489}," permettant au serveur local de résoudre le nom du site",{"type":2080,"tag":2163,"props":5491,"children":5493},{"code":5492,"language":2166,"meta":2167,"className":2168,"style":2167},"127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 \u003CFQDN DE VOTRE SITE>\n::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 \u003CFQDN DE VOTRE SITE>\n",[5494],{"type":2080,"tag":2171,"props":5495,"children":5496},{"__ignoreMap":2167},[5497,5553],{"type":2080,"tag":2175,"props":5498,"children":5499},{"class":2177,"line":2178},[5500,5505,5510,5515,5520,5525,5529,5533,5537,5541,5545,5549],{"type":2080,"tag":2175,"props":5501,"children":5502},{"style":2182},[5503],{"type":2090,"value":5504},"127.0.0.1",{"type":2080,"tag":2175,"props":5506,"children":5507},{"style":2188},[5508],{"type":2090,"value":5509},"   localhost",{"type":2080,"tag":2175,"props":5511,"children":5512},{"style":2188},[5513],{"type":2090,"value":5514}," localhost.localdomain",{"type":2080,"tag":2175,"props":5516,"children":5517},{"style":2188},[5518],{"type":2090,"value":5519}," localhost4",{"type":2080,"tag":2175,"props":5521,"children":5522},{"style":2188},[5523],{"type":2090,"value":5524}," localhost4.localdomain4",{"type":2080,"tag":2175,"props":5526,"children":5527},{"style":2353},[5528],{"type":2090,"value":5367},{"type":2080,"tag":2175,"props":5530,"children":5531},{"style":2188},[5532],{"type":2090,"value":5372},{"type":2080,"tag":2175,"props":5534,"children":5535},{"style":2188},[5536],{"type":2090,"value":5377},{"type":2080,"tag":2175,"props":5538,"children":5539},{"style":2188},[5540],{"type":2090,"value":5426},{"type":2080,"tag":2175,"props":5542,"children":5543},{"style":2188},[5544],{"type":2090,"value":5387},{"type":2080,"tag":2175,"props":5546,"children":5547},{"style":2601},[5548],{"type":2090,"value":5392},{"type":2080,"tag":2175,"props":5550,"children":5551},{"style":2353},[5552],{"type":2090,"value":5397},{"type":2080,"tag":2175,"props":5554,"children":5555},{"class":2177,"line":2250},[5556,5561,5566,5571,5575,5580,5585,5589,5593,5597,5601,5605,5609],{"type":2080,"tag":2175,"props":5557,"children":5558},{"style":2347},[5559],{"type":2090,"value":5560},":",{"type":2080,"tag":2175,"props":5562,"children":5563},{"style":2601},[5564],{"type":2090,"value":5565},":1         ",{"type":2080,"tag":2175,"props":5567,"children":5568},{"style":2188},[5569],{"type":2090,"value":5570},"localhost",{"type":2080,"tag":2175,"props":5572,"children":5573},{"style":2188},[5574],{"type":2090,"value":5514},{"type":2080,"tag":2175,"props":5576,"children":5577},{"style":2188},[5578],{"type":2090,"value":5579}," localhost6",{"type":2080,"tag":2175,"props":5581,"children":5582},{"style":2188},[5583],{"type":2090,"value":5584}," localhost6.localdomain6",{"type":2080,"tag":2175,"props":5586,"children":5587},{"style":2353},[5588],{"type":2090,"value":5367},{"type":2080,"tag":2175,"props":5590,"children":5591},{"style":2188},[5592],{"type":2090,"value":5372},{"type":2080,"tag":2175,"props":5594,"children":5595},{"style":2188},[5596],{"type":2090,"value":5377},{"type":2080,"tag":2175,"props":5598,"children":5599},{"style":2188},[5600],{"type":2090,"value":5426},{"type":2080,"tag":2175,"props":5602,"children":5603},{"style":2188},[5604],{"type":2090,"value":5387},{"type":2080,"tag":2175,"props":5606,"children":5607},{"style":2601},[5608],{"type":2090,"value":5392},{"type":2080,"tag":2175,"props":5610,"children":5611},{"style":2353},[5612],{"type":2090,"value":5397},{"type":2080,"tag":2093,"props":5614,"children":5615},{},[5616],{"type":2090,"value":5617},"La sortie de la commande de création de site devrait ressembler à ceci:",{"type":2080,"tag":2318,"props":5619,"children":5620},{},[5621,5626],{"type":2080,"tag":2093,"props":5622,"children":5623},{},[5624],{"type":2090,"value":5625},"MySQL root password:",{"type":2080,"tag":2093,"props":5627,"children":5628},{},[5629,5631,5634,5636,5639,5641,5644,5646,5649,5651,5654,5656,5659,5661],{"type":2090,"value":5630},"Installing frappe...",{"type":2080,"tag":4565,"props":5632,"children":5633},{},[],{"type":2090,"value":5635},"\nUpdating DocTypes for frappe        : [========================================] 100%",{"type":2080,"tag":4565,"props":5637,"children":5638},{},[],{"type":2090,"value":5640},"\nUpdating country info               : [========================================] 100%",{"type":2080,"tag":4565,"props":5642,"children":5643},{},[],{"type":2090,"value":5645},"\nSet Administrator password:",{"type":2080,"tag":4565,"props":5647,"children":5648},{},[],{"type":2090,"value":5650},"\nRe-enter Administrator password:",{"type":2080,"tag":4565,"props":5652,"children":5653},{},[],{"type":2090,"value":5655},"\n*** Scheduler is disabled ***",{"type":2080,"tag":4565,"props":5657,"children":5658},{},[],{"type":2090,"value":5660},"\nCurrent Site set to ",{"type":2080,"tag":2171,"props":5662,"children":5664},{"className":5663},[],[5665],{"type":2090,"value":5666},"\u003CFQDN DE VOTRE SITE>",{"type":2080,"tag":2306,"props":5668,"children":5670},{"id":5669},"installation-de-lapplication-dokos-sur-le-site-crée",[5671],{"type":2090,"value":5672},"Installation de l'application dokos sur le site crée",{"type":2080,"tag":2163,"props":5674,"children":5676},{"code":5675,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\ncd /var/dokos/dokos-erp && docli --site \u003CFQDN DE VOTRE SITE> install-app dokos\n",[5677],{"type":2080,"tag":2171,"props":5678,"children":5679},{"__ignoreMap":2167},[5680,5687],{"type":2080,"tag":2175,"props":5681,"children":5682},{"class":2177,"line":2178},[5683],{"type":2080,"tag":2175,"props":5684,"children":5685},{"style":2244},[5686],{"type":2090,"value":4411},{"type":2080,"tag":2175,"props":5688,"children":5689},{"class":2177,"line":2250},[5690,5694,5698,5702,5706,5710,5714,5718,5722,5726,5730,5734,5738,5743],{"type":2080,"tag":2175,"props":5691,"children":5692},{"style":2347},[5693],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":5695,"children":5696},{"style":2188},[5697],{"type":2090,"value":5013},{"type":2080,"tag":2175,"props":5699,"children":5700},{"style":2353},[5701],{"type":2090,"value":3895},{"type":2080,"tag":2175,"props":5703,"children":5704},{"style":2182},[5705],{"type":2090,"value":4530},{"type":2080,"tag":2175,"props":5707,"children":5708},{"style":2188},[5709],{"type":2090,"value":5409},{"type":2080,"tag":2175,"props":5711,"children":5712},{"style":2353},[5713],{"type":2090,"value":5367},{"type":2080,"tag":2175,"props":5715,"children":5716},{"style":2188},[5717],{"type":2090,"value":5372},{"type":2080,"tag":2175,"props":5719,"children":5720},{"style":2188},[5721],{"type":2090,"value":5377},{"type":2080,"tag":2175,"props":5723,"children":5724},{"style":2188},[5725],{"type":2090,"value":5426},{"type":2080,"tag":2175,"props":5727,"children":5728},{"style":2188},[5729],{"type":2090,"value":5387},{"type":2080,"tag":2175,"props":5731,"children":5732},{"style":2601},[5733],{"type":2090,"value":5392},{"type":2080,"tag":2175,"props":5735,"children":5736},{"style":2353},[5737],{"type":2090,"value":5439},{"type":2080,"tag":2175,"props":5739,"children":5740},{"style":2188},[5741],{"type":2090,"value":5742}," install-app",{"type":2080,"tag":2175,"props":5744,"children":5745},{"style":2188},[5746],{"type":2090,"value":4348},{"type":2080,"tag":2093,"props":5748,"children":5749},{},[5750],{"type":2090,"value":5045},{"type":2080,"tag":2318,"props":5752,"children":5753},{},[5754],{"type":2080,"tag":2093,"props":5755,"children":5756},{},[5757,5759,5762,5764,5767,5769,5772,5774,5777],{"type":2090,"value":5758},"Installing erpnext...",{"type":2080,"tag":4565,"props":5760,"children":5761},{},[],{"type":2090,"value":5763},"\nUpdating DocTypes for erpnext       : [========================================] 100%",{"type":2080,"tag":4565,"props":5765,"children":5766},{},[],{"type":2090,"value":5768},"\nUpdating customizations for Address",{"type":2080,"tag":4565,"props":5770,"children":5771},{},[],{"type":2090,"value":5773},"\nUpdating customizations for Contact",{"type":2080,"tag":4565,"props":5775,"children":5776},{},[],{"type":2090,"value":5778},"\nUpdating customizations for Payment Gateway",{"type":2080,"tag":2306,"props":5780,"children":5782},{"id":5781},"fin-dinstallation",[5783],{"type":2090,"value":5784},"Fin d'installation",{"type":2080,"tag":2093,"props":5786,"children":5787},{},[5788],{"type":2090,"value":5789},"L'installation de l'ERP dokos est terminée et vous pouvez mettre fin à la session de l'utilisateur dokos.",{"type":2080,"tag":2163,"props":5791,"children":5793},{"code":5792,"language":2166,"meta":2167,"className":2168,"style":2167},"# Redevenir utilisateur root\nexit\n",[5794],{"type":2080,"tag":2171,"props":5795,"children":5796},{"__ignoreMap":2167},[5797,5805],{"type":2080,"tag":2175,"props":5798,"children":5799},{"class":2177,"line":2178},[5800],{"type":2080,"tag":2175,"props":5801,"children":5802},{"style":2244},[5803],{"type":2090,"value":5804},"# Redevenir utilisateur root\n",{"type":2080,"tag":2175,"props":5806,"children":5807},{"class":2177,"line":2250},[5808],{"type":2080,"tag":2175,"props":5809,"children":5810},{"style":2347},[5811],{"type":2090,"value":5812},"exit\n",{"type":2080,"tag":2093,"props":5814,"children":5815},{},[5816],{"type":2090,"value":5817},"A partir d'ici, vous pouvez tester dokos en mode développement ou alors configurer le serveur en mode production.",{"type":2080,"tag":2306,"props":5819,"children":5821},{"id":5820},"optionnel-démarrage-du-framework-et-lensemble-des-sites-en-mode-développement",[5822],{"type":2090,"value":5823},"Optionnel: Démarrage du framework et l'ensemble des sites en mode développement",{"type":2080,"tag":2163,"props":5825,"children":5827},{"code":5826,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur root\nsudo -u dokos \"cd /var/dokos/dokos-erp && docli start\"\n",[5828],{"type":2080,"tag":2171,"props":5829,"children":5830},{"__ignoreMap":2167},[5831,5839],{"type":2080,"tag":2175,"props":5832,"children":5833},{"class":2177,"line":2178},[5834],{"type":2080,"tag":2175,"props":5835,"children":5836},{"style":2244},[5837],{"type":2090,"value":5838},"# En tant qu'utilisateur root\n",{"type":2080,"tag":2175,"props":5840,"children":5841},{"class":2177,"line":2250},[5842,5847,5852,5857,5861,5866],{"type":2080,"tag":2175,"props":5843,"children":5844},{"style":2182},[5845],{"type":2090,"value":5846},"sudo",{"type":2080,"tag":2175,"props":5848,"children":5849},{"style":2188},[5850],{"type":2090,"value":5851}," -u",{"type":2080,"tag":2175,"props":5853,"children":5854},{"style":2188},[5855],{"type":2090,"value":5856}," dokos",{"type":2080,"tag":2175,"props":5858,"children":5859},{"style":2353},[5860],{"type":2090,"value":2356},{"type":2080,"tag":2175,"props":5862,"children":5863},{"style":2188},[5864],{"type":2090,"value":5865},"cd /var/dokos/dokos-erp && docli start",{"type":2080,"tag":2175,"props":5867,"children":5868},{"style":2353},[5869],{"type":2090,"value":2623},{"type":2080,"tag":2093,"props":5871,"children":5872},{},[5873,5875,5881],{"type":2090,"value":5874},"Remarque: Si les logs sont remplis d'erreurs de type ",{"type":2080,"tag":2171,"props":5876,"children":5878},{"className":5877},[],[5879],{"type":2090,"value":5880},"ENOSPC",{"type":2090,"value":5882},", il faudra vérifier la configuration du nombre de noeuds inotify (voir ci-dessus) et vérifier l'espace disque disponible.",{"type":2080,"tag":2093,"props":5884,"children":5885},{},[5886],{"type":2090,"value":5887},"Dokos sera servi sur le port 8000. Il faudra donc configurer le parefeu.",{"type":2080,"tag":2163,"props":5889,"children":5891},{"code":5890,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur root\nfirewall-cmd --add-port=8000/tcp\n",[5892],{"type":2080,"tag":2171,"props":5893,"children":5894},{"__ignoreMap":2167},[5895,5902],{"type":2080,"tag":2175,"props":5896,"children":5897},{"class":2177,"line":2178},[5898],{"type":2080,"tag":2175,"props":5899,"children":5900},{"style":2244},[5901],{"type":2090,"value":5838},{"type":2080,"tag":2175,"props":5903,"children":5904},{"class":2177,"line":2250},[5905,5910],{"type":2080,"tag":2175,"props":5906,"children":5907},{"style":2182},[5908],{"type":2090,"value":5909},"firewall-cmd",{"type":2080,"tag":2175,"props":5911,"children":5912},{"style":2188},[5913],{"type":2090,"value":5914}," --add-port=8000/tcp\n",{"type":2080,"tag":2093,"props":5916,"children":5917},{},[5918],{"type":2090,"value":5919},"Cette commande ouvrira le port 8000 jusqu'au redémarrage du serveur. Si aucune mise en production aura lieu sur ce serveur, il sera possible de configurer de rendre cette configuration permanente",{"type":2080,"tag":2163,"props":5921,"children":5923},{"code":5922,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur root\nfirewall-cmd --runtime-to-permanent\n",[5924],{"type":2080,"tag":2171,"props":5925,"children":5926},{"__ignoreMap":2167},[5927,5934],{"type":2080,"tag":2175,"props":5928,"children":5929},{"class":2177,"line":2178},[5930],{"type":2080,"tag":2175,"props":5931,"children":5932},{"style":2244},[5933],{"type":2090,"value":5838},{"type":2080,"tag":2175,"props":5935,"children":5936},{"class":2177,"line":2250},[5937,5941],{"type":2080,"tag":2175,"props":5938,"children":5939},{"style":2182},[5940],{"type":2090,"value":5909},{"type":2080,"tag":2175,"props":5942,"children":5943},{"style":2188},[5944],{"type":2090,"value":5945}," --runtime-to-permanent\n",{"type":2080,"tag":2093,"props":5947,"children":5948},{},[5949,5951],{"type":2090,"value":5950},"L'environnement dokos sera disponible à l'adresse ",{"type":2080,"tag":2171,"props":5952,"children":5954},{"className":5953},[],[5955],{"type":2090,"value":5956},"http://[IP-DU-SERVEUR]:8000",{"type":2080,"tag":2144,"props":5958,"children":5960},{"id":5959},"mise-en-production",[5961],{"type":2090,"value":5962},"Mise en production",{"type":2080,"tag":2151,"props":5964,"children":5966},{"id":5965},"configuration-de-lenvironnement-de-production",[5967],{"type":2090,"value":5968},"Configuration de l'environnement de production",{"type":2080,"tag":2306,"props":5970,"children":5972},{"id":5971},"ajout-des-dépendances-nécessaires-à-la-mise-en-production",[5973],{"type":2090,"value":5974},"Ajout des dépendances nécessaires à la mise en production",{"type":2080,"tag":2093,"props":5976,"children":5977},{},[5978],{"type":2090,"value":5979},"Le dépot EPEL est repuis pour fail2ban et supervisor.",{"type":2080,"tag":2163,"props":5981,"children":5983},{"code":5982,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur root\ndnf install -y epel-release\ndnf install -y fail2ban nginx supervisor\n",[5984],{"type":2080,"tag":2171,"props":5985,"children":5986},{"__ignoreMap":2167},[5987,5994,6014],{"type":2080,"tag":2175,"props":5988,"children":5989},{"class":2177,"line":2178},[5990],{"type":2080,"tag":2175,"props":5991,"children":5992},{"style":2244},[5993],{"type":2090,"value":5838},{"type":2080,"tag":2175,"props":5995,"children":5996},{"class":2177,"line":2250},[5997,6001,6005,6009],{"type":2080,"tag":2175,"props":5998,"children":5999},{"style":2182},[6000],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":6002,"children":6003},{"style":2188},[6004],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":6006,"children":6007},{"style":2188},[6008],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":6010,"children":6011},{"style":2188},[6012],{"type":2090,"value":6013}," epel-release\n",{"type":2080,"tag":2175,"props":6015,"children":6016},{"class":2177,"line":2271},[6017,6021,6025,6029,6034,6039],{"type":2080,"tag":2175,"props":6018,"children":6019},{"style":2182},[6020],{"type":2090,"value":2185},{"type":2080,"tag":2175,"props":6022,"children":6023},{"style":2188},[6024],{"type":2090,"value":2191},{"type":2080,"tag":2175,"props":6026,"children":6027},{"style":2188},[6028],{"type":2090,"value":2196},{"type":2080,"tag":2175,"props":6030,"children":6031},{"style":2188},[6032],{"type":2090,"value":6033}," fail2ban",{"type":2080,"tag":2175,"props":6035,"children":6036},{"style":2188},[6037],{"type":2090,"value":6038}," nginx",{"type":2080,"tag":2175,"props":6040,"children":6041},{"style":2188},[6042],{"type":2090,"value":6043}," supervisor\n",{"type":2080,"tag":2306,"props":6045,"children":6047},{"id":6046},"droits-daccès",[6048],{"type":2090,"value":6049},"Droits d'accès",{"type":2080,"tag":2163,"props":6051,"children":6053},{"code":6052,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur root\nchmod 750 /var/dokos\nusermod -aG dokos nginx\n",[6054],{"type":2080,"tag":2171,"props":6055,"children":6056},{"__ignoreMap":2167},[6057,6064,6082],{"type":2080,"tag":2175,"props":6058,"children":6059},{"class":2177,"line":2178},[6060],{"type":2080,"tag":2175,"props":6061,"children":6062},{"style":2244},[6063],{"type":2090,"value":5838},{"type":2080,"tag":2175,"props":6065,"children":6066},{"class":2177,"line":2250},[6067,6072,6077],{"type":2080,"tag":2175,"props":6068,"children":6069},{"style":2182},[6070],{"type":2090,"value":6071},"chmod",{"type":2080,"tag":2175,"props":6073,"children":6074},{"style":2369},[6075],{"type":2090,"value":6076}," 750",{"type":2080,"tag":2175,"props":6078,"children":6079},{"style":2188},[6080],{"type":2090,"value":6081}," /var/dokos\n",{"type":2080,"tag":2175,"props":6083,"children":6084},{"class":2177,"line":2271},[6085,6090,6095,6099],{"type":2080,"tag":2175,"props":6086,"children":6087},{"style":2182},[6088],{"type":2090,"value":6089},"usermod",{"type":2080,"tag":2175,"props":6091,"children":6092},{"style":2188},[6093],{"type":2090,"value":6094}," -aG",{"type":2080,"tag":2175,"props":6096,"children":6097},{"style":2188},[6098],{"type":2090,"value":5856},{"type":2080,"tag":2175,"props":6100,"children":6101},{"style":2188},[6102],{"type":2090,"value":6103}," nginx\n",{"type":2080,"tag":2306,"props":6105,"children":6107},{"id":6106},"configuration-selinux",[6108],{"type":2090,"value":6109},"Configuration SELinux",{"type":2080,"tag":2093,"props":6111,"children":6112},{},[6113],{"type":2090,"value":6114},"Le système de production crée un lien symbolique du fchier nginx de configuration local vers le dossier de configuration nginx.",{"type":2080,"tag":2093,"props":6116,"children":6117},{},[6118],{"type":2090,"value":6119},"Il est nécessaire de changer le contexte de sécurité SELinux pour autoriser le chargement de ce fichier par nginx hors du dossier /etc/nginx.",{"type":2080,"tag":2163,"props":6121,"children":6123},{"code":6122,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur root\nsemanage fcontext -a -t httpd_config_t /var/dokos/dokos-erp/config/nginx.conf\nrestorecon -Rv /var/dokos/dokos-erp/config/nginx.conf\n",[6124],{"type":2080,"tag":2171,"props":6125,"children":6126},{"__ignoreMap":2167},[6127,6134,6166],{"type":2080,"tag":2175,"props":6128,"children":6129},{"class":2177,"line":2178},[6130],{"type":2080,"tag":2175,"props":6131,"children":6132},{"style":2244},[6133],{"type":2090,"value":5838},{"type":2080,"tag":2175,"props":6135,"children":6136},{"class":2177,"line":2250},[6137,6142,6147,6151,6156,6161],{"type":2080,"tag":2175,"props":6138,"children":6139},{"style":2182},[6140],{"type":2090,"value":6141},"semanage",{"type":2080,"tag":2175,"props":6143,"children":6144},{"style":2188},[6145],{"type":2090,"value":6146}," fcontext",{"type":2080,"tag":2175,"props":6148,"children":6149},{"style":2188},[6150],{"type":2090,"value":2407},{"type":2080,"tag":2175,"props":6152,"children":6153},{"style":2188},[6154],{"type":2090,"value":6155}," -t",{"type":2080,"tag":2175,"props":6157,"children":6158},{"style":2188},[6159],{"type":2090,"value":6160}," httpd_config_t",{"type":2080,"tag":2175,"props":6162,"children":6163},{"style":2188},[6164],{"type":2090,"value":6165}," /var/dokos/dokos-erp/config/nginx.conf\n",{"type":2080,"tag":2175,"props":6167,"children":6168},{"class":2177,"line":2271},[6169,6174,6179],{"type":2080,"tag":2175,"props":6170,"children":6171},{"style":2182},[6172],{"type":2090,"value":6173},"restorecon",{"type":2080,"tag":2175,"props":6175,"children":6176},{"style":2188},[6177],{"type":2090,"value":6178}," -Rv",{"type":2080,"tag":2175,"props":6180,"children":6181},{"style":2188},[6182],{"type":2090,"value":6165},{"type":2080,"tag":2093,"props":6184,"children":6185},{},[6186],{"type":2090,"value":6187},"Il faudra également autoriser nginx à se connecter à internet:",{"type":2080,"tag":2163,"props":6189,"children":6191},{"code":6190,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur root\nsetsebool -P httpd_can_network_connect 1\n",[6192],{"type":2080,"tag":2171,"props":6193,"children":6194},{"__ignoreMap":2167},[6195,6202],{"type":2080,"tag":2175,"props":6196,"children":6197},{"class":2177,"line":2178},[6198],{"type":2080,"tag":2175,"props":6199,"children":6200},{"style":2244},[6201],{"type":2090,"value":5838},{"type":2080,"tag":2175,"props":6203,"children":6204},{"class":2177,"line":2250},[6205,6210,6215,6220],{"type":2080,"tag":2175,"props":6206,"children":6207},{"style":2182},[6208],{"type":2090,"value":6209},"setsebool",{"type":2080,"tag":2175,"props":6211,"children":6212},{"style":2188},[6213],{"type":2090,"value":6214}," -P",{"type":2080,"tag":2175,"props":6216,"children":6217},{"style":2188},[6218],{"type":2090,"value":6219}," httpd_can_network_connect",{"type":2080,"tag":2175,"props":6221,"children":6222},{"style":2369},[6223],{"type":2090,"value":2963},{"type":2080,"tag":2093,"props":6225,"children":6226},{},[6227],{"type":2090,"value":6228},"Enfin, il faudra rendre le dossier sites lisible pour nginx:",{"type":2080,"tag":2163,"props":6230,"children":6232},{"code":6231,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur root\nsite=[NOM SITE DOKOS]\nhttp_ro_content=(/var/dokos/dokos-erp/sites/assets /var/dokos/dokos-erp/apps/frappe/frappe/public /var/dokos/dokos-erp/apps/erpnext/erpnext/public /var/dokos/dokos-erp/apps/erpnext/node_modules /var/dokos/dokos-erp/apps/frappe/node_modules /var/dokos/dokos-erp/sites/$site/public)\nhttp_rw_content=(/var/dokos/dokos-erp/sites/$site/public/files /var/dokos/dokos-erp/sites/$site/private/files)\nfor path in ${http_ro_content[@]}; do semanage fcontext -a -t httpd_sys_content_t \"${path}(/.*)?\"; restorecon -Rv \"${path}\"; done\nfor path in ${http_rw_content[@]}; do semanage fcontext -a -t httpd_sys_rw_content_t \"${path}(/.*)?\"; restorecon -Rv \"{$path}\"; done\n",[6233],{"type":2080,"tag":2171,"props":6234,"children":6235},{"__ignoreMap":2167},[6236,6243,6270,6328,6371,6499],{"type":2080,"tag":2175,"props":6237,"children":6238},{"class":2177,"line":2178},[6239],{"type":2080,"tag":2175,"props":6240,"children":6241},{"style":2244},[6242],{"type":2090,"value":5838},{"type":2080,"tag":2175,"props":6244,"children":6245},{"class":2177,"line":2250},[6246,6251,6255,6260,6265],{"type":2080,"tag":2175,"props":6247,"children":6248},{"style":2601},[6249],{"type":2090,"value":6250},"site",{"type":2080,"tag":2175,"props":6252,"children":6253},{"style":2353},[6254],{"type":2090,"value":2609},{"type":2080,"tag":2175,"props":6256,"children":6257},{"style":2188},[6258],{"type":2090,"value":6259},"[NOM",{"type":2080,"tag":2175,"props":6261,"children":6262},{"style":2182},[6263],{"type":2090,"value":6264}," SITE",{"type":2080,"tag":2175,"props":6266,"children":6267},{"style":2188},[6268],{"type":2090,"value":6269}," DOKOS]\n",{"type":2080,"tag":2175,"props":6271,"children":6272},{"class":2177,"line":2271},[6273,6278,6283,6288,6293,6298,6303,6308,6313,6318,6323],{"type":2080,"tag":2175,"props":6274,"children":6275},{"style":2601},[6276],{"type":2090,"value":6277},"http_ro_content",{"type":2080,"tag":2175,"props":6279,"children":6280},{"style":2353},[6281],{"type":2090,"value":6282},"=(",{"type":2080,"tag":2175,"props":6284,"children":6285},{"style":2188},[6286],{"type":2090,"value":6287},"/var/dokos/dokos-erp/sites/assets",{"type":2080,"tag":2175,"props":6289,"children":6290},{"style":2188},[6291],{"type":2090,"value":6292}," /var/dokos/dokos-erp/apps/frappe/frappe/public",{"type":2080,"tag":2175,"props":6294,"children":6295},{"style":2188},[6296],{"type":2090,"value":6297}," /var/dokos/dokos-erp/apps/erpnext/erpnext/public",{"type":2080,"tag":2175,"props":6299,"children":6300},{"style":2188},[6301],{"type":2090,"value":6302}," /var/dokos/dokos-erp/apps/erpnext/node_modules",{"type":2080,"tag":2175,"props":6304,"children":6305},{"style":2188},[6306],{"type":2090,"value":6307}," /var/dokos/dokos-erp/apps/frappe/node_modules",{"type":2080,"tag":2175,"props":6309,"children":6310},{"style":2188},[6311],{"type":2090,"value":6312}," /var/dokos/dokos-erp/sites/",{"type":2080,"tag":2175,"props":6314,"children":6315},{"style":2601},[6316],{"type":2090,"value":6317},"$site",{"type":2080,"tag":2175,"props":6319,"children":6320},{"style":2188},[6321],{"type":2090,"value":6322},"/public",{"type":2080,"tag":2175,"props":6324,"children":6325},{"style":2353},[6326],{"type":2090,"value":6327},")\n",{"type":2080,"tag":2175,"props":6329,"children":6330},{"class":2177,"line":2280},[6331,6336,6340,6345,6349,6354,6358,6362,6367],{"type":2080,"tag":2175,"props":6332,"children":6333},{"style":2601},[6334],{"type":2090,"value":6335},"http_rw_content",{"type":2080,"tag":2175,"props":6337,"children":6338},{"style":2353},[6339],{"type":2090,"value":6282},{"type":2080,"tag":2175,"props":6341,"children":6342},{"style":2188},[6343],{"type":2090,"value":6344},"/var/dokos/dokos-erp/sites/",{"type":2080,"tag":2175,"props":6346,"children":6347},{"style":2601},[6348],{"type":2090,"value":6317},{"type":2080,"tag":2175,"props":6350,"children":6351},{"style":2188},[6352],{"type":2090,"value":6353},"/public/files",{"type":2080,"tag":2175,"props":6355,"children":6356},{"style":2188},[6357],{"type":2090,"value":6312},{"type":2080,"tag":2175,"props":6359,"children":6360},{"style":2601},[6361],{"type":2090,"value":6317},{"type":2080,"tag":2175,"props":6363,"children":6364},{"style":2188},[6365],{"type":2090,"value":6366},"/private/files",{"type":2080,"tag":2175,"props":6368,"children":6369},{"style":2353},[6370],{"type":2090,"value":6327},{"type":2080,"tag":2175,"props":6372,"children":6373},{"class":2177,"line":2883},[6374,6380,6385,6390,6394,6398,6402,6407,6412,6417,6422,6426,6430,6434,6439,6444,6449,6454,6459,6463,6468,6473,6477,6481,6485,6490,6494],{"type":2080,"tag":2175,"props":6375,"children":6377},{"style":6376},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF;--shiki-light-font-style:italic;--shiki-default-font-style:italic;--shiki-dark-font-style:italic",[6378],{"type":2090,"value":6379},"for",{"type":2080,"tag":2175,"props":6381,"children":6382},{"style":2601},[6383],{"type":2090,"value":6384}," path ",{"type":2080,"tag":2175,"props":6386,"children":6387},{"style":6376},[6388],{"type":2090,"value":6389},"in",{"type":2080,"tag":2175,"props":6391,"children":6392},{"style":2353},[6393],{"type":2090,"value":4002},{"type":2080,"tag":2175,"props":6395,"children":6396},{"style":2601},[6397],{"type":2090,"value":6277},{"type":2080,"tag":2175,"props":6399,"children":6400},{"style":2353},[6401],{"type":2090,"value":3225},{"type":2080,"tag":2175,"props":6403,"children":6404},{"style":2601},[6405],{"type":2090,"value":6406},"@",{"type":2080,"tag":2175,"props":6408,"children":6409},{"style":2353},[6410],{"type":2090,"value":6411},"]};",{"type":2080,"tag":2175,"props":6413,"children":6414},{"style":6376},[6415],{"type":2090,"value":6416}," do",{"type":2080,"tag":2175,"props":6418,"children":6419},{"style":2182},[6420],{"type":2090,"value":6421}," semanage",{"type":2080,"tag":2175,"props":6423,"children":6424},{"style":2188},[6425],{"type":2090,"value":6146},{"type":2080,"tag":2175,"props":6427,"children":6428},{"style":2188},[6429],{"type":2090,"value":2407},{"type":2080,"tag":2175,"props":6431,"children":6432},{"style":2188},[6433],{"type":2090,"value":6155},{"type":2080,"tag":2175,"props":6435,"children":6436},{"style":2188},[6437],{"type":2090,"value":6438}," httpd_sys_content_t",{"type":2080,"tag":2175,"props":6440,"children":6441},{"style":2353},[6442],{"type":2090,"value":6443}," \"${",{"type":2080,"tag":2175,"props":6445,"children":6446},{"style":2601},[6447],{"type":2090,"value":6448},"path",{"type":2080,"tag":2175,"props":6450,"children":6451},{"style":2353},[6452],{"type":2090,"value":6453},"}",{"type":2080,"tag":2175,"props":6455,"children":6456},{"style":2188},[6457],{"type":2090,"value":6458},"(/.*)?",{"type":2080,"tag":2175,"props":6460,"children":6461},{"style":2353},[6462],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":6464,"children":6465},{"style":2353},[6466],{"type":2090,"value":6467},";",{"type":2080,"tag":2175,"props":6469,"children":6470},{"style":2182},[6471],{"type":2090,"value":6472}," restorecon",{"type":2080,"tag":2175,"props":6474,"children":6475},{"style":2188},[6476],{"type":2090,"value":6178},{"type":2080,"tag":2175,"props":6478,"children":6479},{"style":2353},[6480],{"type":2090,"value":6443},{"type":2080,"tag":2175,"props":6482,"children":6483},{"style":2601},[6484],{"type":2090,"value":6448},{"type":2080,"tag":2175,"props":6486,"children":6487},{"style":2353},[6488],{"type":2090,"value":6489},"}\"",{"type":2080,"tag":2175,"props":6491,"children":6492},{"style":2353},[6493],{"type":2090,"value":6467},{"type":2080,"tag":2175,"props":6495,"children":6496},{"style":6376},[6497],{"type":2090,"value":6498}," done\n",{"type":2080,"tag":2175,"props":6500,"children":6501},{"class":2177,"line":2892},[6502,6506,6510,6514,6518,6522,6526,6530,6534,6538,6542,6546,6550,6554,6559,6563,6567,6571,6575,6579,6583,6587,6591,6595,6600,6605,6609,6613,6617],{"type":2080,"tag":2175,"props":6503,"children":6504},{"style":6376},[6505],{"type":2090,"value":6379},{"type":2080,"tag":2175,"props":6507,"children":6508},{"style":2601},[6509],{"type":2090,"value":6384},{"type":2080,"tag":2175,"props":6511,"children":6512},{"style":6376},[6513],{"type":2090,"value":6389},{"type":2080,"tag":2175,"props":6515,"children":6516},{"style":2353},[6517],{"type":2090,"value":4002},{"type":2080,"tag":2175,"props":6519,"children":6520},{"style":2601},[6521],{"type":2090,"value":6335},{"type":2080,"tag":2175,"props":6523,"children":6524},{"style":2353},[6525],{"type":2090,"value":3225},{"type":2080,"tag":2175,"props":6527,"children":6528},{"style":2601},[6529],{"type":2090,"value":6406},{"type":2080,"tag":2175,"props":6531,"children":6532},{"style":2353},[6533],{"type":2090,"value":6411},{"type":2080,"tag":2175,"props":6535,"children":6536},{"style":6376},[6537],{"type":2090,"value":6416},{"type":2080,"tag":2175,"props":6539,"children":6540},{"style":2182},[6541],{"type":2090,"value":6421},{"type":2080,"tag":2175,"props":6543,"children":6544},{"style":2188},[6545],{"type":2090,"value":6146},{"type":2080,"tag":2175,"props":6547,"children":6548},{"style":2188},[6549],{"type":2090,"value":2407},{"type":2080,"tag":2175,"props":6551,"children":6552},{"style":2188},[6553],{"type":2090,"value":6155},{"type":2080,"tag":2175,"props":6555,"children":6556},{"style":2188},[6557],{"type":2090,"value":6558}," httpd_sys_rw_content_t",{"type":2080,"tag":2175,"props":6560,"children":6561},{"style":2353},[6562],{"type":2090,"value":6443},{"type":2080,"tag":2175,"props":6564,"children":6565},{"style":2601},[6566],{"type":2090,"value":6448},{"type":2080,"tag":2175,"props":6568,"children":6569},{"style":2353},[6570],{"type":2090,"value":6453},{"type":2080,"tag":2175,"props":6572,"children":6573},{"style":2188},[6574],{"type":2090,"value":6458},{"type":2080,"tag":2175,"props":6576,"children":6577},{"style":2353},[6578],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":6580,"children":6581},{"style":2353},[6582],{"type":2090,"value":6467},{"type":2080,"tag":2175,"props":6584,"children":6585},{"style":2182},[6586],{"type":2090,"value":6472},{"type":2080,"tag":2175,"props":6588,"children":6589},{"style":2188},[6590],{"type":2090,"value":6178},{"type":2080,"tag":2175,"props":6592,"children":6593},{"style":2353},[6594],{"type":2090,"value":2356},{"type":2080,"tag":2175,"props":6596,"children":6597},{"style":2188},[6598],{"type":2090,"value":6599},"{",{"type":2080,"tag":2175,"props":6601,"children":6602},{"style":2601},[6603],{"type":2090,"value":6604},"$path",{"type":2080,"tag":2175,"props":6606,"children":6607},{"style":2188},[6608],{"type":2090,"value":6453},{"type":2080,"tag":2175,"props":6610,"children":6611},{"style":2353},[6612],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":6614,"children":6615},{"style":2353},[6616],{"type":2090,"value":6467},{"type":2080,"tag":2175,"props":6618,"children":6619},{"style":6376},[6620],{"type":2090,"value":6498},{"type":2080,"tag":2151,"props":6622,"children":6624},{"id":6623},"setup-automatisé-production-dokos",[6625],{"type":2090,"value":6626},"Setup automatisé production Dokos",{"type":2080,"tag":2306,"props":6628,"children":6630},{"id":6629},"choix-de-la-gestion-des-services",[6631],{"type":2090,"value":6632},"Choix de la gestion des services",{"type":2080,"tag":2093,"props":6634,"children":6635},{},[6636],{"type":2090,"value":6637},"Afin de vérifier la bonne exécution de l'ensemble des services, il faudra choisir entre utiliser des services systemd ou utiliser supervisord. Dans ce guide, nous utiliserons supervisord.",{"type":2080,"tag":2163,"props":6639,"children":6641},{"code":6640,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\ncd /var/dokos/dokos-erp && docli setup supervisor\n",[6642],{"type":2080,"tag":2171,"props":6643,"children":6644},{"__ignoreMap":2167},[6645,6652],{"type":2080,"tag":2175,"props":6646,"children":6647},{"class":2177,"line":2178},[6648],{"type":2080,"tag":2175,"props":6649,"children":6650},{"style":2244},[6651],{"type":2090,"value":4411},{"type":2080,"tag":2175,"props":6653,"children":6654},{"class":2177,"line":2250},[6655,6659,6663,6667,6671,6676],{"type":2080,"tag":2175,"props":6656,"children":6657},{"style":2347},[6658],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":6660,"children":6661},{"style":2188},[6662],{"type":2090,"value":5013},{"type":2080,"tag":2175,"props":6664,"children":6665},{"style":2353},[6666],{"type":2090,"value":3895},{"type":2080,"tag":2175,"props":6668,"children":6669},{"style":2182},[6670],{"type":2090,"value":4530},{"type":2080,"tag":2175,"props":6672,"children":6673},{"style":2188},[6674],{"type":2090,"value":6675}," setup",{"type":2080,"tag":2175,"props":6677,"children":6678},{"style":2188},[6679],{"type":2090,"value":6043},{"type":2080,"tag":2306,"props":6681,"children":6683},{"id":6682},"setup-de-production",[6684],{"type":2090,"value":6685},"Setup de production",{"type":2080,"tag":2093,"props":6687,"children":6688},{},[6689,6691,6697,6699,6705,6707,6713],{"type":2090,"value":6690},"Note: les patchs ",{"type":2080,"tag":4060,"props":6692,"children":6695},{"href":6693,"rel":6694},"https://gitlab.com/dokos/docli/-/merge_requests/2",[4064],[6696],{"type":2090,"value":6693},{"type":2090,"value":6698}," ",{"type":2080,"tag":4060,"props":6700,"children":6703},{"href":6701,"rel":6702},"https://gitlab.com/dokos/docli/-/merge_requests/3",[4064],[6704],{"type":2090,"value":6701},{"type":2090,"value":6706}," et ",{"type":2080,"tag":4060,"props":6708,"children":6711},{"href":6709,"rel":6710},"https://gitlab.com/dokos/docli/-/merge_requests/4",[4064],[6712],{"type":2090,"value":6709},{"type":2090,"value":6714}," doivent être intégrés.",{"type":2080,"tag":2093,"props":6716,"children":6717},{},[6718],{"type":2090,"value":6719},"L'action suivante configurera supervisord et nginx:",{"type":2080,"tag":2163,"props":6721,"children":6723},{"code":6722,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\ncd /var/dokos/dokos-erp && sudo env \"PATH=$PATH\" docli setup production dokos\n",[6724],{"type":2080,"tag":2171,"props":6725,"children":6726},{"__ignoreMap":2167},[6727,6734],{"type":2080,"tag":2175,"props":6728,"children":6729},{"class":2177,"line":2178},[6730],{"type":2080,"tag":2175,"props":6731,"children":6732},{"style":2244},[6733],{"type":2090,"value":4411},{"type":2080,"tag":2175,"props":6735,"children":6736},{"class":2177,"line":2250},[6737,6741,6745,6749,6753,6758,6762,6767,6772,6776,6780,6784,6789],{"type":2080,"tag":2175,"props":6738,"children":6739},{"style":2347},[6740],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":6742,"children":6743},{"style":2188},[6744],{"type":2090,"value":5013},{"type":2080,"tag":2175,"props":6746,"children":6747},{"style":2353},[6748],{"type":2090,"value":3895},{"type":2080,"tag":2175,"props":6750,"children":6751},{"style":2182},[6752],{"type":2090,"value":2397},{"type":2080,"tag":2175,"props":6754,"children":6755},{"style":2188},[6756],{"type":2090,"value":6757}," env",{"type":2080,"tag":2175,"props":6759,"children":6760},{"style":2353},[6761],{"type":2090,"value":2356},{"type":2080,"tag":2175,"props":6763,"children":6764},{"style":2188},[6765],{"type":2090,"value":6766},"PATH=",{"type":2080,"tag":2175,"props":6768,"children":6769},{"style":2601},[6770],{"type":2090,"value":6771},"$PATH",{"type":2080,"tag":2175,"props":6773,"children":6774},{"style":2353},[6775],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":6777,"children":6778},{"style":2188},[6779],{"type":2090,"value":4530},{"type":2080,"tag":2175,"props":6781,"children":6782},{"style":2188},[6783],{"type":2090,"value":6675},{"type":2080,"tag":2175,"props":6785,"children":6786},{"style":2188},[6787],{"type":2090,"value":6788}," production",{"type":2080,"tag":2175,"props":6790,"children":6791},{"style":2188},[6792],{"type":2090,"value":4348},{"type":2080,"tag":2306,"props":6794,"children":6796},{"id":6795},"vérification",[6797],{"type":2090,"value":6798},"Vérification",{"type":2080,"tag":2093,"props":6800,"children":6801},{},[6802],{"type":2090,"value":6803},"Afin de vérifier que l'ensemble des processus nécessaires au fonctionnement de dokos sont actifs, il faudra exécuter les commandes suivantes:",{"type":2080,"tag":2163,"props":6805,"children":6807},{"code":6806,"language":2166,"meta":2167,"className":2168,"style":2167},"supervisorctl status\nsystemctl status nginx\n",[6808],{"type":2080,"tag":2171,"props":6809,"children":6810},{"__ignoreMap":2167},[6811,6824],{"type":2080,"tag":2175,"props":6812,"children":6813},{"class":2177,"line":2178},[6814,6819],{"type":2080,"tag":2175,"props":6815,"children":6816},{"style":2182},[6817],{"type":2090,"value":6818},"supervisorctl",{"type":2080,"tag":2175,"props":6820,"children":6821},{"style":2188},[6822],{"type":2090,"value":6823}," status\n",{"type":2080,"tag":2175,"props":6825,"children":6826},{"class":2177,"line":2250},[6827,6831,6836],{"type":2080,"tag":2175,"props":6828,"children":6829},{"style":2182},[6830],{"type":2090,"value":3153},{"type":2080,"tag":2175,"props":6832,"children":6833},{"style":2188},[6834],{"type":2090,"value":6835}," status",{"type":2080,"tag":2175,"props":6837,"children":6838},{"style":2188},[6839],{"type":2090,"value":6103},{"type":2080,"tag":2151,"props":6841,"children":6843},{"id":6842},"setup-services-supplémentaires",[6844],{"type":2090,"value":6845},"Setup services supplémentaires",{"type":2080,"tag":2306,"props":6847,"children":6849},{"id":6848},"firewall",[6850],{"type":2090,"value":6851},"Firewall",{"type":2080,"tag":2093,"props":6853,"children":6854},{},[6855],{"type":2090,"value":6856},"Pour un serveur de production, il faudra ouvrir les ports HTTP et HTTPS de manière permanente:",{"type":2080,"tag":2163,"props":6858,"children":6860},{"code":6859,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\ncd /var/dokos/dokos-erp && sudo env \"PATH=$PATH\" docli setup firewall\n",[6861],{"type":2080,"tag":2171,"props":6862,"children":6863},{"__ignoreMap":2167},[6864,6871],{"type":2080,"tag":2175,"props":6865,"children":6866},{"class":2177,"line":2178},[6867],{"type":2080,"tag":2175,"props":6868,"children":6869},{"style":2244},[6870],{"type":2090,"value":4411},{"type":2080,"tag":2175,"props":6872,"children":6873},{"class":2177,"line":2250},[6874,6878,6882,6886,6890,6894,6898,6902,6906,6910,6914,6918],{"type":2080,"tag":2175,"props":6875,"children":6876},{"style":2347},[6877],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":6879,"children":6880},{"style":2188},[6881],{"type":2090,"value":5013},{"type":2080,"tag":2175,"props":6883,"children":6884},{"style":2353},[6885],{"type":2090,"value":3895},{"type":2080,"tag":2175,"props":6887,"children":6888},{"style":2182},[6889],{"type":2090,"value":2397},{"type":2080,"tag":2175,"props":6891,"children":6892},{"style":2188},[6893],{"type":2090,"value":6757},{"type":2080,"tag":2175,"props":6895,"children":6896},{"style":2353},[6897],{"type":2090,"value":2356},{"type":2080,"tag":2175,"props":6899,"children":6900},{"style":2188},[6901],{"type":2090,"value":6766},{"type":2080,"tag":2175,"props":6903,"children":6904},{"style":2601},[6905],{"type":2090,"value":6771},{"type":2080,"tag":2175,"props":6907,"children":6908},{"style":2353},[6909],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":6911,"children":6912},{"style":2188},[6913],{"type":2090,"value":4530},{"type":2080,"tag":2175,"props":6915,"children":6916},{"style":2188},[6917],{"type":2090,"value":6675},{"type":2080,"tag":2175,"props":6919,"children":6920},{"style":2188},[6921],{"type":2090,"value":6922}," firewall\n",{"type":2080,"tag":2306,"props":6924,"children":6926},{"id":6925},"fail2ban",[6927],{"type":2090,"value":6928},"Fail2ban",{"type":2080,"tag":2093,"props":6930,"children":6931},{},[6932],{"type":2090,"value":6933},"Fail2ban permettra de bannir une IP tentant une authentification par brute force",{"type":2080,"tag":2163,"props":6935,"children":6937},{"code":6936,"language":2166,"meta":2167,"className":2168,"style":2167},"# En tant qu'utilisateur dokos\ncd /var/dokos/dokos-erp && sudo env \"PATH=$PATH\" docli setup fail2ban\n",[6938],{"type":2080,"tag":2171,"props":6939,"children":6940},{"__ignoreMap":2167},[6941,6948],{"type":2080,"tag":2175,"props":6942,"children":6943},{"class":2177,"line":2178},[6944],{"type":2080,"tag":2175,"props":6945,"children":6946},{"style":2244},[6947],{"type":2090,"value":4411},{"type":2080,"tag":2175,"props":6949,"children":6950},{"class":2177,"line":2250},[6951,6955,6959,6963,6967,6971,6975,6979,6983,6987,6991,6995],{"type":2080,"tag":2175,"props":6952,"children":6953},{"style":2347},[6954],{"type":2090,"value":3956},{"type":2080,"tag":2175,"props":6956,"children":6957},{"style":2188},[6958],{"type":2090,"value":5013},{"type":2080,"tag":2175,"props":6960,"children":6961},{"style":2353},[6962],{"type":2090,"value":3895},{"type":2080,"tag":2175,"props":6964,"children":6965},{"style":2182},[6966],{"type":2090,"value":2397},{"type":2080,"tag":2175,"props":6968,"children":6969},{"style":2188},[6970],{"type":2090,"value":6757},{"type":2080,"tag":2175,"props":6972,"children":6973},{"style":2353},[6974],{"type":2090,"value":2356},{"type":2080,"tag":2175,"props":6976,"children":6977},{"style":2188},[6978],{"type":2090,"value":6766},{"type":2080,"tag":2175,"props":6980,"children":6981},{"style":2601},[6982],{"type":2090,"value":6771},{"type":2080,"tag":2175,"props":6984,"children":6985},{"style":2353},[6986],{"type":2090,"value":2461},{"type":2080,"tag":2175,"props":6988,"children":6989},{"style":2188},[6990],{"type":2090,"value":4530},{"type":2080,"tag":2175,"props":6992,"children":6993},{"style":2188},[6994],{"type":2090,"value":6675},{"type":2080,"tag":2175,"props":6996,"children":6997},{"style":2188},[6998],{"type":2090,"value":6999}," fail2ban\n",{"type":2080,"tag":7001,"props":7002,"children":7003},"style",{},[7004],{"type":2090,"value":7005},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":2167,"searchDepth":2250,"depth":2250,"links":7007},[7008,7018,7022],{"id":2146,"depth":2250,"text":2149,"children":7009},[7010,7011,7012,7013,7014,7015,7016,7017],{"id":2153,"depth":2271,"text":2156},{"id":2301,"depth":2271,"text":2304},{"id":2688,"depth":2271,"text":2691},{"id":3263,"depth":2271,"text":3266},{"id":3361,"depth":2271,"text":3364},{"id":3462,"depth":2271,"text":3465},{"id":3621,"depth":2271,"text":3624},{"id":4050,"depth":2271,"text":4053},{"id":4269,"depth":2250,"text":4272,"children":7019},[7020,7021],{"id":4296,"depth":2271,"text":4299},{"id":4388,"depth":2271,"text":4391},{"id":5959,"depth":2250,"text":5962,"children":7023},[7024,7025,7026],{"id":5965,"depth":2271,"text":5968},{"id":6623,"depth":2271,"text":6626},{"id":6842,"depth":2271,"text":6845},"markdown","content:3.dodock:11.installation:9.plus:5.installation-rhel-8-9.md","content","3.dodock/11.installation/9.plus/5.installation-rhel-8-9.md","md",[7033,7034],{"_path":1178,"title":1177,"description":2167},{"_path":1184,"title":1183,"description":2167},1747740666321]