# Medulla - FAQ

# FAQ - SaaS

# Pré-requis réseau pour Medulla SaaS

<p class="callout info"> **Medulla / Version All / SaaS / Infrastructure**</p>

### **1. Y a-t-il des prérequis techniques pour utiliser Medulla en mode SaaS ?**

Pour l’offre <span class="s1">**SaaS mutualisé**</span>, aucun prérequis matériel ou logiciel n’est nécessaire.

La seule condition est d’autoriser <span class="s1">**deux flux réseau sortants**</span> depuis vos postes de travail vers la plateforme Medulla.

---

### **2. Quels ports doivent être ouverts sur Internet ?**

#### **SaaS mutualisé**

Seuls deux ports doivent être autorisés <span class="s1">**Postes → Serveur Medulla**</span> :

- <span class="s1">**TCP 2002**</span> : communication principale entre l’agent Medulla et le serveur
- <span class="s1">**TCP 5222**</span> : canal XMPP permettant d’orchestrer les actions et d’établir les tunnels sécurisés

Aucun autre port ne doit être ouvert sur Internet.

---

### **3. Pourquoi uniquement deux ports ?**

Parce que :

- Toutes les opérations nécessitant des ports additionnels (VNC, RDP, WinRM, inventaire, déploiements de package) passent <span class="s1">**automatiquement dans un tunnel OpenSSH**</span> établi entre le serveur Medulla et l’agent du poste.
- Ce tunnel est initié et géré par le service XMPP.

Vous n’avez donc <span class="s1">**pas**</span> à exposer des ports sensibles sur Internet.

### **4. Quels ports sont nécessaires pour l’offre SaaS dédié ?**

En plus des ports nécessaires au SaaS mutualisé :

- <span class="s1">**TCP 55415**</span> : utilisé pour les fonctions de sauvegarde (Backup)

Tous les autres ports continuent de transiter via le <span class="s1">**tunnel OpenSSH**</span> et n’ont pas besoin d’être ouverts.

### **5. Pourquoi certains ports (UDP 67, 69, 111, 2049) ne sont plus mentionnés en mode SaaS ?**

Parce qu’ils ne sont <span class="s1">**pas utilisés**</span> en mode SaaS :

- Pas de PXE et DHCP sur Internet → <span class="s1">**UDP 67 / 69 inutiles**</span>
- Pas de NFS exposé → <span class="s1">**111 / 2049 inutiles**</span>
- Aucun service bas-niveau n’est exposé dans le cloud Medulla

### **6. Dois-je ouvrir des ports entrants sur mon firewall ?**

Non.

<span class="s1">**Aucun flux entrant**</span> n’est requis dans le mode SaaS Medulla.

Votre firewall doit simplement <span class="s1">**autoriser les flux sortants**</span> suivants pour que les agents communiquent :

- TCP <span class="s1">**2002**</span>
- TCP <span class="s1">**5222**</span>
    
    (+ TCP <span class="s1">**55415**</span> si SaaS dédié)

### **7. Résumé rapide**

<table id="bkmrk-offre-flux-n%C3%A9cessair"><thead><tr><th>**Offre**

</th><th>**Flux nécessaires Postes → Serveur**

</th><th>**Remarques**

</th></tr></thead><tbody><tr><td>**SaaS mutualisé**

</td><td>TCP <span class="s1">**2002**</span>, TCP <span class="s1">**5222**</span>

</td><td>Tous les autres ports passent par le tunnel OpenSSH

</td></tr><tr><td>**SaaS dédié**

</td><td>TCP <span class="s1">**2002**</span>, TCP <span class="s1">**5222**</span>, TCP <span class="s1">**55415**</span>

</td><td>Backup activé en option

</td></tr><tr><td>**Flux entrants**

</td><td>Aucun

</td><td>Tout est initié par le poste

</td></tr></tbody></table>

# Postes Clients (état & visibilité)

##### **Pourquoi certains postes apparaissent hors ligne alors qu’ils sont allumés ?**

- Vérifiez le service medullaagent et medullanetnotify sur les postes hors ligne, si les services sont bien "running" mais que le poste apparait hors ligne sur l'interface (poste grisé) alors merci de prendre contacte avec le service Support ou votre Administrateur.
- Si présence d'erreur dans les logs de l'agent (sur le poste) "C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log", reportez les au service Support ou votre Administrateur.

##### **Pourquoi les inventaires ou informations remontées sont incomplets ou erronés.**

- Assurez vous que l'adresse MAC du poste qui ne remonte pas sont inventaire n'est pas déjà utilisé, pour voir si un poste a des difficultés à remonter son inventaire, il est impossible de déployer sur le poste, même s'il parait en ligne sur l'interface (icone de l'ordinateur bleu), l'icône de déploiement du poste dans les "actions" apparaitra grisé.

# Déploiement (télédiffusion)

##### **Pourquoi mes déploiements restent bloqués en Pending ?**

- Le status Pending, montre que les déploiements vont bientôt être pris en compte, si le blocage persiste, merci de prendre contact avec le service Support ou votre Administrateur.

##### **Pourquoi mes déploiements restent bloqués en Deployment Start ?**

- Le status Deployment Start, montre que les déploiements vont bientôt être pris en compte, si le blocage persiste, merci de prendre contact avec le service Support ou votre Administrateur.

##### **Que faire en cas d’erreur de déploiement : Abort Package Execution ?**

- Vous devez vérifier le script lié au package, l'erreur indique qu'il ne s'exécute pas correctement. Vous pouvez tester d'exécuter le script à la main sur votre machine.
- Vérifiez le retour donné par l'audit du déploiement, celui ci peut donner des indices sur la raison de l'erreur.

##### **Que faire en cas d'erreur de déploiement : Transfer Failed ?**

- Votre ordinateur n'arrive pas à récupérer le package à cause de Rsync. Veuillez vérifier les droits de Rsync sur plusieurs dossier pour l'utilisateur pulseuser, les droits doivent être placés comme cela :

```bash
C:\Progra~1\Pulse\var\tmp\packages BUILTIN\Users:(OI)(CI)(F)
                                   NT SERVICE\TrustedInstaller:(I)(F)
                                   NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
                                   NT AUTHORITY\SYSTEM:(I)(F)
                                   NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                                   BUILTIN\Administrators:(I)(F)
                                   BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                                   BUILTIN\Users:(I)(RX)
                                   BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
                                   CREATOR OWNER:(I)(OI)(CI)(IO)(F)
                                   APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                   APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
                                   APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)
                                   APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)

C:\Users\pulseuser\.ssh NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
                        BUILTIN\Administrators:(I)(OI)(CI)(F)
                        NOM_MACHINE\pulseuser:(I)(OI)(CI)(F)

C:\Users\pulseuser\.ssh\authorized_keys NOM_MACHINE\pulseuser:(F)
                                        NT AUTHORITY\SYSTEM:(F)
```

##### **Pourquoi mes télédiffusions ne démarrent pas ou son long à démarrer ?**

- Si vos déploiements mettent du temps à démarrer, il est possible que votre déploiement placé en file d'attente soit ralenti par la charge actuelle de la plateforme SaaS.
- Si vos déploiements restent bloquer, veuillez prendre contact avec le service Support ou votre Administrateur.

##### **Comment arrêter un déploiement ?**

- Vous disposez d'un bouton "Stop Deploy" dans l'audit d'un déploiement pour arrêter le déploiement en cours.

##### **Comment voir le résultat de mon déploiement ?**  


- Dans la vue "Audit" vous pouvez retrouver la liste de tout vos déploiements. Cliquez sur le bouton action ![details.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/q65sgJD2FZnkt0Lf-details.png) "Affichez les détails du déploiement" pour voir votre déploiement.

##### **Comment relancer un déploiement ?**

- Dans la vue "Audit", retrouver la ligne correspondant au déploiement que vous souhaitez relancer, puis cliquez sur le bouton action ![reload.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/dgXn57hnw81vXtG5-reload.png) pour relancer le déploiement.

# Packages

##### **Je n'arrive pas à ajouter un fichier dans mon package.**  


- Une fois que vous avez ajouter un fichier à votre package, il est en attente, il ne faut pas oublier de cliquer sur "Transmettre le package en attente".

##### **J'ai créé un package mais il n'est pas disponible au déploiement, pourquoi ?**

- Si votre package n'est pas visible dans la liste des packages, ou visible lorsque vous souhaitez le déployer, alors il est en attente de synchronisation sur les relais, patientez quelques instant avant de le voir apparaitre dans la "Liste des packages".

##### **Pourquoi mon package n'est pas disponible dans la page d'ajout de package au Kiosk ?**

- Votre package doit avoir un inventaire d'associé afin d'être visible dans la liste des packages disponible pour le Kiosk.

# Télémaintenance & Prise en main

##### **Que faire si la prise en main à distance (VNC/RDP/PMAD) ne fonctionne pas ?**

- Vérifiez le service TightVNC sur les postes posant problème.
- La prise en main à distance n'est pas accessible si l'ordinateur apparait comme hors ligne : grisé, si c'est le cas vérifier l'état du service medullaagent sur la machine.

# FAQ - OnPremise

# Déploiement (télédiffusion)

##### **Pourquoi mes déploiements restent bloqués en Pending ?**

- Le status Pending, montre que les déploiements vont bientôt être pris en compte, si le blocage persiste, merci de prendre contact avec le service Support ou votre Administrateur.

##### **Pourquoi mes déploiements restent bloqués en Deployment Start ?**

- Le status Deployment Start, montre que les déploiements vont bientôt être pris en compte, si le blocage persiste, merci de prendre contact avec le service Support ou votre Administrateur.

##### **Que faire en cas d’erreur de déploiement : Abort Package Execution ?**

- Vous devez vérifier le script lié au package, l'erreur indique qu'il ne s'exécute pas correctement. Vous pouvez tester d'exécuter le script à la main sur votre machine.
- Vérifiez le retour donné par l'audit du déploiement, celui ci peut donner des indices sur la raison de l'erreur.

##### **Que faire en cas d'erreur de déploiement : Transfer Failed ?**

- Votre ordinateur n'arrive pas à récupérer le package à cause de Rsync. Veuillez vérifier les droits de Rsync sur plusieurs dossier pour l'utilisateur pulseuser, les droits doivent être placés comme cela :

```bash
C:\Progra~1\Pulse\var\tmp\packages BUILTIN\Users:(OI)(CI)(F)
                                   NT SERVICE\TrustedInstaller:(I)(F)
                                   NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
                                   NT AUTHORITY\SYSTEM:(I)(F)
                                   NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                                   BUILTIN\Administrators:(I)(F)
                                   BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                                   BUILTIN\Users:(I)(RX)
                                   BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
                                   CREATOR OWNER:(I)(OI)(CI)(IO)(F)
                                   APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                   APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
                                   APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)
                                   APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)

C:\Users\pulseuser\.ssh NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
                        BUILTIN\Administrators:(I)(OI)(CI)(F)
                        NOM_MACHINE\pulseuser:(I)(OI)(CI)(F)

C:\Users\pulseuser\.ssh\authorized_keys NOM_MACHINE\pulseuser:(F)
                                        NT AUTHORITY\SYSTEM:(F)
```

##### **Pourquoi mes télédiffusions ne démarrent pas ou son long à démarrer ?**

- Si vos déploiements mettent du temps à démarrer, il est possible que votre déploiement placé en file d'attente soit ralenti par la charge actuelle de la plateforme SaaS.
- Si vos déploiements restent bloquer, veuillez prendre contact avec le service Support ou votre Administrateur.

##### **Comment arrêter un déploiement ?**

- Vous disposez d'un bouton "Stop Deploy" dans l'audit d'un déploiement pour arrêter le déploiement en cours.

##### **Comment voir le résultat de mon déploiement ?**  


- Dans la vue "Audit" vous pouvez retrouver la liste de tout vos déploiements. Cliquez sur le bouton action ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/zSKpQNwMzhay8YzM-image.png) "Affichez les détails du déploiement" pour voir votre déploiement.

##### **Comment relancer un déploiement ?**

- Dans la vue "Audit", retrouver la ligne correspondant au déploiement que vous souhaitez relancer, puis cliquez sur le bouton action ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/cmOVFn2XFI8THgx3-image.png) pour relancer le déploiement.

# Télémaintenance & Prise en main

##### **Que faire si la prise en main à distance (VNC/RDP/PMAD) ne fonctionne pas ?**

- Vérifiez le service TightVNC sur les postes posant problème.
- La prise en main à distance n'est pas accessible si l'ordinateur apparait comme hors ligne : grisé, si c'est le cas vérifier l'état du service medullaagent sur la machine.
- Si votre port SSH par défaut n'est pas 22, assurez vous que le fichiers suivant reprenne bien votre IP ainsi que le port SSH que vous utilisez : **C:\\Program Files\\Medulla\\bin\\reversessh.bat** Si ce n'est pas le cas, alors une modification doit être faite sur votre serveur, dans le fichier : **<span style="color: rgb(0, 0, 0);">/etc/pulse-xmpp-agent/reverse\_ssh\_on.ini.local  
    </span>**Il est nécessaire de faire un redémarrage du service pulse-xmpp-agent-relay.service
- Si votre infrastructure dispose d’une adresse IP publique et que le serveur ne parvient pas à joindre les postes via une adresse IP privée ou un VPN, la connexion s’effectue alors en **reverse** depuis le poste vers le serveur.  
    Pour vérifier le bon fonctionnement de cette connexion, exécutez manuellement le script suivant :  
    `C:\Program Files\Medulla\bin\reversessh.bat`  
    Cela vous permettra d’identifier d’éventuelles erreurs de connexion.

# Test de FLUX

Avant toute installation de **Medulla**, il est **essentiel** de vérifier les échanges entre :

<div id="bkmrk-votre-serveur-medull">- Votre **serveur Medulla**,
- Votre **relais** (le cas échéant),
- Vos **machines clientes**.

</div>Pour ce faire, nous mettons à votre disposition une **<span aria-controls="radix-_r_12o_" aria-expanded="false" aria-haspopup="dialog" class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" data-question="Quels sont les scripts inclus dans cette procédure de test et comment les exécuter ?" data-state="closed" tabindex="0">procédure de test</span>** incluant des scripts dédiés. **Tous les flux doivent être validés avec succès** afin de garantir un <span aria-controls="radix-_r_12p_" aria-expanded="false" aria-haspopup="dialog" class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" data-question="Quels problèmes courants pourraient survenir si les flux ne sont pas validés avant l'installation ?" data-state="closed" tabindex="0">déploiement fluide et un fonctionnement optimal</span> de Medulla.

N’hésitez pas à nous solliciter pour toute assistance ou clarification concernant ces tests.

**Les scripts sont disponibles en téléchargement ici :**

<div id="bkmrk-https%3A%2F%2Fdl.medulla-t">[https://dl.medulla-tech.io/nc/listen\_ports\_debian.sh](https://dl.medulla-tech.io/nc/listen_ports_debian.sh)</div><div id="bkmrk-https%3A%2F%2Fdl.medulla-t-1">[https://dl.medulla-tech.io/nc/listen\_ports\_windows.ps1](https://dl.medulla-tech.io/nc/listen_ports_windows.ps1 "https://dl.medulla-tech.io/nc/listen_ports_windows.ps1")</div><div id="bkmrk-https%3A%2F%2Fdl.medulla-t-2">[https://dl.medulla-tech.io/nc/medulla\_connection\_check.sh](https://dl.medulla-tech.io/nc/medulla_connection_check.sh "https://dl.medulla-tech.io/nc/medulla_connection_check.sh")</div><div id="bkmrk-https%3A%2F%2Fdl.medulla-t-3">[https://dl.medulla-tech.io/nc/medulla\_relay\_connection\_check.sh](https://dl.medulla-tech.io/nc/medulla_relay_connection_check.sh "https://dl.medulla-tech.io/nc/medulla_relay_connection_check.sh")  
[https://dl.medulla-tech.io/nc/windows\_connection\_check\_signed.ps1](https://dl.medulla-tech.io/nc/windows_connection_check_signed.ps1)  
[https://dl.medulla-tech.io/nc/check\_connection\_ldap.sh](https://dl.medulla-tech.io/nc/check_connection_ldap.sh "https://dl.medulla-tech.io/nc/check_connection_ldap.sh")  
[https://dl.medulla-tech.io/nc/check\_connection\_glpi.sh](https://dl.medulla-tech.io/nc/check_connection_glpi.sh "https://dl.medulla-tech.io/nc/check_connection_glpi.sh")  
  
(clique droit sur les liens ci-dessous, puis cliquez sur **"Enregister le lien sous..."**)  
</div><div id="bkmrk---------------------">**-----------------------------------------------------------**</div><div id="bkmrk-"></div>### Prérequis aux tests

Avant de commencer, assurez-vous d'avoir récupéré les scripts de test fournis ci-dessus et de préparer les machines :

<div id="bkmrk-sur-les-serveurs-lin">1. **Sur les serveurs Linux (Medulla &amp; Relai) :**
    
    
    - Installez l'outil nécessaire : `sudo apt update && sudo apt install netcat-openbsd <span style="color: rgb(0, 0, 0);">mariadb-client ldap-utils</span>`
    - Rendez les scripts exécutables :
        
        ```
        chmod +x listen_ports_debian.sh medulla_connection_check.sh medulla_relay_connection_check.sh
        dos2unix *.sh  # Si nécessaire
        ```
        
        <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-88 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQswE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-88"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-88"></div></div></div>
2. **Sur le poste client Windows possédant l’agent Medulla :**
    
    
    - Faire un clic droit sur le script cliquer sur propriétés, cocher la case débloquer l'execution du script et valider.
    
    [![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/scaled-1680-/6Gs5mDYikDrAhhUU-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/6Gs5mDYikDrAhhUU-image.png)
    
    
    - Autorisez l’exécution des scripts PowerShell :
    
    `Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned`
    
    > \# Répondre "Oui pour tous" (A ou T) si demandé
    
    #### Pour powershell v7.5.4 : 
    
    Il n'y a pas besoin de débloquer le script. Il faut lancez la commande vu précédemment.
    
    Il vous demandera si on veut autoriser l'editeur qui publie le script il suffit de valider en cliquant sur R ou A.
    
    [![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/scaled-1680-/vJOscUwLGmSGzsEU-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/vJOscUwLGmSGzsEU-image.png)

</div>### 1. Test Medulla Serveur &lt;-&gt; Medulla Relai

*Vérification de la communication entre le serveur principal et le relai.*

**Sens : Serveur vers Relai**

<div id="bkmrk-sur-le-relai-%28destin">- **A. Sur le Serveur Relai (Destination) :** Lancez l'écoute des ports. **<span style="color: rgb(224, 62, 45);">(Ne pas faire cette étape si Medulla est déjà installée ou si vous êtes en SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -r
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-90 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQtQE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-90"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-90"></div></div></div>
- **B. Sur le Serveur Medulla (Source) :** Lancez le test de connexion.
    
    ```
    ./medulla_connection_check.sh -r <IP_DU_RELAI>
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-91 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQtgE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-91"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-91"></div></div></div>

</div>**Sens : Relai vers Serveur**

<div id="bkmrk-sur-le-serveur-%28dest">- **C. Sur le Serveur Medulla (Destination) :** Lancez l'écoute des ports. **<span style="color: rgb(224, 62, 45);">(Ne pas faire cette étape si Medulla est déjà installée ou si vous êtes en SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -m
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-92 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQtwE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-92"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-92"></div></div></div>
- **D. Sur le Serveur Relai (Source) :** Lancez le test de connexion.
    
    ```
    ./medulla_relay_connection_check.sh -m <IP_DE_MEDULLA>
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-93 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQuAE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-93"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-93"></div></div></div>

</div><div id="bkmrk--3">---

</div>### 2. Test Medulla Serveur &lt;-&gt; Poste Client Windows

*Vérification de la communication directe entre le serveur et les postes clients.*

**Sens : Serveur vers Poste Client**

<div id="bkmrk-a.-sur-le-poste-clie">- **A. Sur le Poste Client (Destination) :** Lancez l'écoute.
    
    ```
    .\listen_ports_windows.ps1
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-94 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQuQE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-94"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-94"></div></div></div>
- **B. Sur le Serveur Medulla (Source) :** Lancez le test vers l'IP du poste.
    
    ```
    ./medulla_connection_check.sh -c client.example.com
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-95 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQugE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-95"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-95"></div></div></div>

</div>**Sens : Poste Client vers Serveur**

<div id="bkmrk-sur-le-serveur-medul">- **C. Sur le Serveur Medulla (Destination) :** Lancez l'écoute. **<span style="color: rgb(224, 62, 45);">(Ne pas faire cette étape si Medulla est déjà installée ou si vous êtes en SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -m
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-96 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQuwE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-96"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-96"></div></div></div>
- **D. Sur le Poste Client (Source) :** Lancez le test vers l'IP du serveur.
    
    ```
    .\windows_connection_check_signed.ps1 -Target <IP_DU_SERVEUR> -Mode pulse
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-97 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQvAE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-97"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-97"></div></div></div>

</div>Un fichier de log a été créé (à l'emplacement ou vous êtes en lançant le script) qui résume plusieurs tests nommé : **LOG\_Test\_Flux.txt**

> *Si vous avez des erreurs de droits suite à la création du fichier de log, essayez de placer les scripts dans le dossier Downloads de l'utilisateur, ou donnez les droits au script **windows\_connection\_check.ps1** de créer un fichier au même emplacement.*

<div id="bkmrk--4"></div><div id="bkmrk-sur-le-relai-%28destin-1"></div>### 3. Test Medulla Relai &lt;-&gt; Poste Client Windows

*Uniquement si les postes doivent communiquer via un Relai.*

**Sens : Relai vers Poste Client**

<div id="bkmrk-sur-le-poste-client--1">- **A. Sur le Poste Client (Destination) :** Lancez l'écoute.
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-98 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQvQE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-98"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-98">  
    </div></div></div>```
    .\listen_ports_windows.ps1
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-98 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQvQE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-98"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-98"></div></div></div>
- **B. Sur le Serveur Relai (Source) :** Lancez le test vers l'IP du poste.
    
    ```
    ./medulla_relay_connection_check.sh -c client.example.com
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-99 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQvgE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-99"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-99"></div></div></div>

</div>**Sens : Poste Client vers Relai**

<div id="bkmrk-sur-le-serveur-relai">- **C. Sur le Serveur Relai (Destination) :** Lancez l'écoute. **<span style="color: rgb(224, 62, 45);">(Ne pas faire cette étape si Medulla est déjà installée ou si vous êtes en SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -r
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-100 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQvwE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-100"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-100"></div></div></div>
- **D. Sur le Poste Client (Source) :** Lancez le test vers l'IP du relai.
    
    ```
    .\windows_connection_check_signed.ps1 -Target <IP_DU_RELAI> -Mode relay
    ```

</div>Un fichier de log a été créé (à l'emplacement ou vous êtes en lançant le script) qui résume plusieurs tests nommé : **LOG\_Test\_Flux.txt**

> *Si vous avez des erreurs de droits suite à la création du fichier de log, essayez de placer les scripts dans le dossier Downloads de l'utilisateur, ou donnez les droits au script **windows\_connection\_check.ps1** de créer un fichier au même emplacement.*

<div id="bkmrk--5"></div><div id="bkmrk--6"></div><div id="bkmrk--7"></div>### 4. Test Medulla Relai DMZ &lt;-&gt; Poste Client Windows NOMADE

*Vérification de la communication directe entre le serveur et les postes clients.*

**<span style="color: rgb(224, 62, 45);">(Les postes nomades peuvent être uniquement contacté sur les ports 5222 et 22)</span>**

**Sens : Poste Client vers Serveur**

<div id="bkmrk-sur-le-serveur-medul-1">- **A. Sur le Serveur Medulla DMZ (Destination) :** Lancez l'écoute. **<span style="color: rgb(224, 62, 45);">(Ne pas faire cette étape si Medulla est déjà installée ou si vous êtes en SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -r
    ```
- **B. Sur le Poste Client NOMADE (Source) :** Lancez le test vers l'IP du serveur.
    
    ```
    .\windows_connection_check_signed.ps1 -Target <IP_DU_SERVEUR> -Mode relay
    ```

</div>### 5. Test Serveur destiné à Medulla -&gt; Votre serveur GLPI

*Vérification de la communication directe entre le serveur et votre serveur GLPI.*

**<span style="color: rgb(224, 62, 45);">(Nécessite le package mariadb-client : *apt install mariadb-client*)</span>**

<div id="bkmrk-sur-le-serveur-medul-2">- **A. Sur le serveur Medulla :** Lancez le test vers la base de donnée GLPI externe.
    
    ```
    ./check_connection_glpi.sh DB_FQDN DB_USERNAME DB_PASSWORD DB_NAME_GLPI
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-94 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQuQE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-94"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-94"></div></div></div><div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-95 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQugE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-95"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-95"></div></div></div>

</div>### 6. Test Serveur destiné à Medulla -&gt; Votre serveur LDAP

<div id="bkmrk--8"></div>*Vérification de la communication directe entre le serveur et votre serveur LDAP.*

**<span style="color: rgb(224, 62, 45);">(Nécessite le package ldap-utils : *apt install ldap-utils*)</span>**

<div id="bkmrk-sur-le-serveur-medul-3">- **A. Sur le serveur Medulla :** Lancez le test vers le serveur LDAP externe.
    
    ```
    ./check_connection_ldap.sh HOST PORT 'BIND_DN' 'PASSWORD' 'BASE_DN'
    ```
    
    <div _ngcontent-ng-c351283025="" class="code-block ng-tns-c351283025-94 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjomKqe9bCRAxUAAAAAHQAAAAAQuQE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[["r_11fb3437d404e316","c_a319558859bc095a",null,"rc_7a55f34d278bc8af",null,null,"fr",null,1,null,null,1,0]]"><div _ngcontent-ng-c351283025="" class="formatted-code-block-internal-container ng-tns-c351283025-94"><div _ngcontent-ng-c351283025="" class="animated-opacity ng-tns-c351283025-94"></div></div></div>

</div>

# Firewall

Si un pare-feu se trouve entre le serveur et les postes, il est essentiel de s’assurer que les ports nécessaires à la communication soient ouverts dans les deux sens (entrant et sortant).  
Les ports suivants doivent être accessibles :

- **22** : SSH (accès distant et transferts sécurisés)
- **9** : Wake-on-LAN
- **5900** : VNC (contrôle à distance)
- **3389** : RDP (connexion Bureau à distance)
- **35621** et **35623** : Backups
- **5985** et **5986** : WinRM (gestion à distance HTTP/HTTPS)

**En résumé :**  
Vérifiez que ces ports ne soient pas bloqués par le pare-feu du serveur, des postes clients ou tout équipement réseau intermédiaire (routeur, pare-feu matériel, etc.).

# Pré-requis IMAGING

##### Configuration PXE/DHCP

Après l’installation et la configuration de votre serveur, un document dédié à la mise en place du DHCP/PXE vous sera transmis.

##### Workshop Imaging

Avant la prise de rendez-vous de votre workshop Imaging, il vous faut préparer quelques points :

- Afin de créer une capture propre, il est nécessaire d'avoir une machine Windows fraiche, sans finir les questions OOBE.

> *Il faut commencer l'installation d'une machine windows, et lorsque l'OOBE apparait, annuler le avec : CTRL + SHIFT + F3*

- Ayez à disposition quelques PC prêt à être déployés.

Il est également possible pour nous de vous fournir des masters pour certains modèle Windows, il vous faut nous transmettre les modèles Windows que vous souhaitez déployer.

# Active Directory

Dans le cadre d'un déploiement On-Premise, trois comptes de service Active Directory distincts doivent être fournis.

#### 1. Compte de Lecture Seule

Ce compte sert à **interroger** le LDAP pour avoir des informations sur les utilisateurs et groupes.

- **Rôle :** **Lecture Seule** (`Read-Only`).
- **Fonction :** Récupère les informations sur l'utilisateur et le groupe via le protocole **LDAP** (ou LDAPS).
- **Permissions requises :** Doit avoir les droits nécessaires pour effectuer des recherches et des lectures d'attributs utilisateur dans l'annuaire Active Directory.
- **Localisation dans l'application :** Les informations d'identification de ce compte seront configurées dans le **fichier de configuration** de Medulla (informations demandés dans le formulaire de livraison).

#### 2. Compte d'Inscription de Machine (Imaging/Mastering)

Ce compte est dédié aux opérations de **provisionnement et d'enregistrement** des nouvelles machines dans le domaine lors du processus d'imaging (ou *mastering*).

- **Rôle :** Droits d'inscription de machine au domaine.
- **Fonction :** Permettre l'ajout d'ordinateurs au domaine Active Directory.
- **Permissions requises :** Doit posséder le droit **"Ajouter des stations de travail au domaine".**
- **Intégration au processus :** Ce compte sera **intégré et utilisé par le** `sysprep` pour exécuter l'opération de jonction au domaine lors du mastering de la machine.

#### 3. Compte d'Exécution de Script (Installation Agent Medulla)

Ce compte est requis pour les tâches d'administration post-déploiement, spécifiquement pour l'**installation à distance de l'agent Medulla** via PowerShell, en ciblant une **Unité d'Organisation (OU)** définie.

- **Rôle :** Lister les ordinateur de l'AD et exécuter des scripts PowerShell à distance avec droits délégués.
- **Fonction :** Lister les ordinateur de l'AD. Installation et configuration de l'agent Medulla sur les postes clients, en ciblant les machines dans une OU spécifique.
- **Permissions requises :**
    
    
    - **Droits Délégués sur l'OU cible :** Doit avoir des droits de modification des objets `Computer` et des droits permettant l'exécution de commandes à distance (via **WinRM** ou une solution équivalente) sur les machines de l'OU spécifiée.
    - **Accès au partage réseau :** Si le script ou l'installeur de l'agent Medulla est stocké sur un partage, le compte doit avoir les droits de **lecture** sur ce partage.
    - **Lister les ordinateurs de l'AD :** Doit avoir le droits de lister les ordinateurs de l'AD pour sélectionner les ordinateurs sur lesquelles il faut installer l'agent.
- **Utilisation :** Ce compte sera utilisé par l'application Python pour initier et valider l'exécution des scripts PowerShell sur les machines, garantissant que l'agent est installé et que la machine est correctement rattachée à la bonne structure d'OU.

# J'ai déjà un serveur PXE sur mon réseau, est-ce un problème ?

### Coexistence avec un Serveur PXE Existant

L'installation de **Medulla** comprend la mise en place d'un **serveur PXE** (Preboot Execution Environment) dédié pour faciliter le déploiement. Nous sommes conscients que votre environnement possède peut-être déjà un serveur PXE opérationnel.

**Ceci n'est pas un problème.**

Le secret de la coexistence réside dans le protocole **DHCP** (Dynamic Host Configuration Protocol), qui est le chef d'orchestre du processus de démarrage réseau (PXE).

---

#### 1. Le DHCP est l'unique décideur

Le serveur PXE (de Medulla ou l'existant) ne peut pas s'imposer seul. C'est le **serveur DHCP** qui dirige le client vers le bon serveur d'amorçage.

Lorsque vous allumez une machine qui doit démarrer par PXE, elle envoie une requête DHCP. Le serveur DHCP ne lui fournit pas seulement une adresse IP, mais aussi deux informations cruciales pour le démarrage réseau :

Même si deux serveurs PXE écoutent le réseau, **seul le serveur DHCP a l'autorité** pour dire au client quel serveur utiliser.

Nous fournissons une configuration DHCP/PXE après installation du serveur Medulla.

---

#### 2. Le Filtrage Sélectif (Adresse MAC / Scopes)

Il est possible de gérer le filtrage par adresse MAC.

- Contrôle par Adresse MAC :
    
    Vous pouvez configurer le serveur DHCP pour qu'il examine l'adresse MAC du client qui fait la demande.
    
    
    - Si c'est la MAC `00:1A:2B:3C:4D:5E`, le DHCP envoie l'**Option 66** pointant vers le **PXE de Medulla**.
    - Pour toutes les autres adresses, le DHCP n'envoie aucune option PXE, ou pointe vers votre **PXE existant**.
- Contrôle par Étendue (Scope) ou Classe de Fournisseur (Vendor Class) :
    
    Le DHCP peut également appliquer ces règles de routage PXE à des plages d'adresses IP spécifiques ou en fonction d'un identifiant spécifique envoyé par le client (la Vendor Class du client PXE).

En résumé, les deux serveurs PXE peuvent exister en parallèle, mais ils sont **inactifs** tant que le DHCP ne donne pas au client l'ordre formel de contacter l'un d'eux via la directive **`next-server`**.

# Schéma de flux simplifié de Medulla

## Règles de flux Simplifiées

Les règles sont interprétées comme suit :

- `SOURCE -> DEST` signifie que le **flux est initié** de la SOURCE vers la DESTINATION.
- Si le protocole n'est pas spécifié, alors, il est en TCP par défaut.

##### Si vous disposez d'un serveur Medulla unique, prenez en compte le tableau :

- 1. Sans Serveur Relais

##### Si vous disposez d'un serveur Medulla et d'un serveur relais, prenez en compte le tableau :

- 2. Avec Serveur Relais Classique

##### Si vous disposez d'un serveur Medulla et d'un serveur relais DMZ, prenez en compte le tableau :

- 3. Avec Serveur Relais DMZ

##### Accès Medulla vers l'extérieur :

- updates.siveo.net:443
- download.windowsupdate.com:80

##### Accès Medulla vers autres serveur interne :

- Votre serveur GLPI (si vous en possédez)
- Votre serveur LDAP (si vous en possédez, notre documentation LDAP : [LDAP DOC](https://docs.medulla-tech.io/books/medulla-faq/page/active-directory))

##### Accès depuis votre Machine Admin vers Medulla :

<table data-path-to-node="6" id="bkmrk-tron%C3%A7on-direction-du" style="width: 100%; height: 106.563px;"><thead><tr style="height: 46.5938px;"><td style="width: 30.7509%; height: 46.5938px;">**Liaison**</td><td style="width: 35.6307%; height: 46.5938px;">**Ports Utilisés (DEST)**</td><td style="width: 33.6184%; height: 46.5938px;">**Remarques**</td></tr></thead><tbody><tr style="height: 59.9688px;"><td style="width: 30.7509%; height: 59.9688px;"><span data-path-to-node="6,1,0,0">**Votre poste administrateur Interne ➡️ Serveur Medulla**</span></td><td style="width: 35.6307%; height: 59.9688px;"><span data-path-to-node="6,1,2,0">139/445</span>

<span data-path-to-node="6,1,2,0">8384</span>

</td><td style="width: 33.6184%; height: 59.9688px;"><span data-path-to-node="6,1,3,0">Trafic initié par le **poste admin Interne** vers **Medulla**.</span></td></tr></tbody></table>

#### 1. Sans Serveur Relais

<table data-path-to-node="6" id="bkmrk-liaison-ports-utilis" style="width: 100%; height: 675.094px;"><thead><tr style="height: 46.5938px;"><td style="width: 30.7509%; height: 46.5938px;">**Liaison**</td><td style="width: 35.6307%; height: 46.5938px;">**Ports Utilisés (DEST)**</td><td style="width: 33.6184%; height: 46.5938px;">**Remarques**</td></tr></thead><tbody><tr style="height: 180.969px;"><td style="width: 30.7509%; height: 180.969px;"><span data-path-to-node="6,1,0,0">**Poste interne ➡️ Serveur Medulla**</span></td><td style="width: 35.6307%; height: 180.969px;"><span data-path-to-node="6,1,2,0">22 (SSH)  
67/69 (UDP)  
80/443  
111/2049 (TCP &amp; UDP)  
5222  
8443  
9990  
9999,  
22067  
55415  
</span></td><td style="width: 33.6184%; height: 180.969px;"><span data-path-to-node="6,1,3,0">Trafic initié par le **poste interne** vers **Medulla**.</span></td></tr><tr style="height: 130.578px;"><td style="width: 30.7509%; height: 130.578px;"><span data-path-to-node="6,2,0,0">**Serveur Medulla <span data-path-to-node="6,1,0,0">➡️ </span>Poste interne** </span></td><td style="width: 35.6307%; height: 130.578px;"><span data-path-to-node="6,2,2,0"><span data-path-to-node="6,1,2,0">9  
22 </span>(SSH)  
3389  
5900  
5985/5986  
35621  
35623  
</span></td><td style="width: 33.6184%; height: 130.578px;"><span data-path-to-node="6,2,3,0">Trafic initié par le **serveur Medulla** vers **les postes internes**.</span></td></tr></tbody></table>

#### 2. Avec Serveur Relais Classique

<table data-path-to-node="6" id="bkmrk-liaison-ports-utilis-1" style="width: 100%; height: 840.25px;"><thead><tr style="height: 46.5938px;"><td style="width: 30.7509%; height: 46.5938px;">**Liaison**</td><td style="width: 35.6377%; height: 46.5938px;">**Ports Utilisés (DEST)**</td><td style="width: 33.6114%; height: 46.5938px;">**Remarques**</td></tr></thead><tbody><tr style="height: 180.969px;"><td style="width: 30.7509%; height: 180.969px;"><span data-path-to-node="6,1,0,0">**Poste interne ➡️ Serveurs Medulla**</span></td><td style="width: 35.6377%; height: 180.969px;"><span data-path-to-node="6,1,2,0">22 (SSH)  
67/69 (UDP)  
80/443  
111/2049 (TCP &amp; UDP)  
5222  
8443  
9990  
9999,  
22067  
55415  
</span></td><td style="width: 33.6114%; height: 180.969px;"><span data-path-to-node="6,1,3,0">Trafic initié par le **poste interne** vers **Medulla**.</span></td></tr><tr style="height: 130.578px;"><td style="width: 30.7509%; height: 130.578px;"><span data-path-to-node="6,2,0,0">**Serveurs Medulla <span data-path-to-node="6,1,0,0">➡️ </span>Poste interne** </span></td><td style="width: 35.6377%; height: 130.578px;"><span data-path-to-node="6,2,2,0"><span data-path-to-node="6,1,2,0">9  
22 </span>(SSH)  
3389  
5900  
5985/5986  
35621  
35623  
</span></td><td style="width: 33.6114%; height: 130.578px;"><span data-path-to-node="6,2,3,0">Trafic initié par le **serveur Medulla** vers **les postes internes**.</span></td></tr><tr style="height: 29.7969px;"><td style="width: 30.7509%; height: 29.7969px;"><span data-path-to-node="6,3,0,0">---</span></td><td style="width: 35.6377%; height: 29.7969px;"><span data-path-to-node="6,3,2,0">---</span></td><td style="width: 33.6114%; height: 29.7969px;"><span data-path-to-node="6,3,3,0">---</span></td></tr><tr style="height: 97.9844px;"><td style="width: 30.7509%; height: 97.9844px;"><span data-path-to-node="6,4,0,0">**Serveur Medulla ➡️ Serveur Relais**</span></td><td style="width: 35.6377%; height: 97.9844px;"><span data-path-to-node="6,4,2,0"><span data-path-to-node="6,1,2,0">22 </span>(SSH)</span>

<span data-path-to-node="6,4,2,0">5269  
8081</span>

<span data-path-to-node="6,4,2,0">9990  
22000  
</span>

</td><td style="width: 33.6114%; height: 97.9844px;"><span data-path-to-node="6,4,3,0">Trafic initié par **Medulla** vers le **Serveur DMZ**.</span></td></tr><tr style="height: 130.562px;"><td style="width: 30.7509%; height: 130.562px;"><span data-path-to-node="6,5,0,0">**Serveur Relais <span data-path-to-node="6,4,0,0">➡️ </span>Serveur Medulla** </span></td><td style="width: 35.6377%; height: 130.562px;"><span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">22 </span>(SSH)</span>

<span data-path-to-node="6,5,2,0">5269  
7080  
8443  
9999  
22067  
22000  
</span>

</td><td style="width: 33.6114%; height: 130.562px;"><span data-path-to-node="6,5,3,0">Trafic initié par le **Serveur DMZ** vers **Medulla**.</span></td></tr><tr style="height: 29.7969px;"><td style="width: 30.7509%; height: 29.7969px;"><span data-path-to-node="6,5,0,0">---</span></td><td style="width: 35.6377%; height: 29.7969px;"><span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">  
</span></span></td><td style="width: 33.6114%; height: 29.7969px;"><span data-path-to-node="6,5,3,0">  
</span></td></tr><tr style="height: 113.781px;"><td style="width: 30.7509%; height: 113.781px;"><span data-path-to-node="6,5,0,0">**<span data-path-to-node="6,7,0,0">Poste interne ➡️ Serveur Relais</span>**</span></td><td style="width: 35.6377%; height: 113.781px;"><span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">22</span></span>

<span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">69/69 (UDP)</span></span>

<span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">80/443</span></span>

<span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">111/2049 (TCP &amp; UDP)</span></span>

<span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">5222</span></span>

9990

</td><td style="width: 33.6114%; height: 113.781px;"><span data-path-to-node="6,5,3,0"><span data-path-to-node="6,7,3,0">Trafic initié par le **poste interne** vers le **Serveur Relais**.</span></span></td></tr><tr style="height: 80.1875px;"><td style="width: 30.7509%; height: 80.1875px;"><span data-path-to-node="6,5,0,0">**<span data-path-to-node="6,7,0,0">Serveur Relais ➡️ Poste interne</span>**</span></td><td style="width: 35.6377%; height: 80.1875px;"><span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">9</span></span>

<span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">22</span></span>

<span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">3389</span></span>

<span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">5900</span></span>

</td><td style="width: 33.6114%; height: 80.1875px;"><span data-path-to-node="6,5,3,0"><span data-path-to-node="6,7,3,0">Trafic initié par le **Serveur Relais vers le **poste interne**.</span></span></td></tr></tbody></table>

#### 3. Avec Serveur Relais DMZ

<table data-path-to-node="6" id="bkmrk-liaison-ports-utilis-2" style="width: 100%; height: 759.078px;"><thead><tr style="height: 46.5938px;"><td style="width: 30.7509%; height: 46.5938px;">**Liaison**</td><td style="width: 35.6307%; height: 46.5938px;">**Ports Utilisés (DEST)**</td><td style="width: 33.6184%; height: 46.5938px;">**Remarques**</td></tr></thead><tbody><tr style="height: 180.969px;"><td style="width: 30.7509%; height: 180.969px;"><span data-path-to-node="6,1,0,0">**Poste interne ➡️ Serveur Medulla**</span></td><td style="width: 35.6307%; height: 180.969px;"><span data-path-to-node="6,1,2,0">22 (SSH)  
67/69 (UDP)  
80/443  
111/2049 (TCP &amp; UDP)  
5222  
8443  
9990  
9999,  
22067  
55415  
</span></td><td style="width: 33.6184%; height: 180.969px;"><span data-path-to-node="6,1,3,0">Trafic initié par le **poste interne** vers **Medulla**.</span></td></tr><tr style="height: 130.578px;"><td style="width: 30.7509%; height: 130.578px;"><span data-path-to-node="6,2,0,0">**Serveur Medulla <span data-path-to-node="6,1,0,0">➡️ </span>Poste interne** </span></td><td style="width: 35.6307%; height: 130.578px;"><span data-path-to-node="6,2,2,0"><span data-path-to-node="6,1,2,0">9  
22 </span>(SSH)  
3389  
5900  
5985/5986  
35621  
35623  
</span></td><td style="width: 33.6184%; height: 130.578px;"><span data-path-to-node="6,2,3,0">Trafic initié par le **serveur Medulla** vers **les postes internes**.</span></td></tr><tr style="height: 29.7969px;"><td style="width: 30.7509%; height: 29.7969px;"><span data-path-to-node="6,3,0,0">---</span></td><td style="width: 35.6307%; height: 29.7969px;"><span data-path-to-node="6,3,2,0">---</span></td><td style="width: 33.6184%; height: 29.7969px;"><span data-path-to-node="6,3,3,0">---</span></td></tr><tr style="height: 113.781px;"><td style="width: 30.7509%; height: 113.781px;"><span data-path-to-node="6,4,0,0">**Serveur Medulla ➡️ Serveur Relais DMZ**</span></td><td style="width: 35.6307%; height: 113.781px;"><span data-path-to-node="6,4,2,0"><span data-path-to-node="6,1,2,0">22 </span>(SSH)</span>

<span data-path-to-node="6,4,2,0">4369</span>

<span data-path-to-node="6,4,2,0">4370 à 4380  
5269  
8081  
22000  
</span>

</td><td style="width: 33.6184%; height: 113.781px;"><span data-path-to-node="6,4,3,0">Trafic initié par **Medulla** vers le **Serveur DMZ**.</span></td></tr><tr style="height: 164.172px;"><td style="width: 30.7509%; height: 164.172px;"><span data-path-to-node="6,5,0,0">**Serveur Relais DMZ <span data-path-to-node="6,4,0,0">➡️ </span>Serveur Medulla** </span></td><td style="width: 35.6307%; height: 164.172px;"><span data-path-to-node="6,5,2,0"><span data-path-to-node="6,1,2,0">22 </span>(SSH)</span>

<span data-path-to-node="6,5,2,0">4369</span>

<span data-path-to-node="6,5,2,0"><span data-path-to-node="6,4,2,0">4370 à 4380</span>  
5269  
7080  
8443  
9999  
22067  
22000  
</span>

</td><td style="width: 33.6184%; height: 164.172px;"><span data-path-to-node="6,5,3,0">Trafic initié par le **Serveur DMZ** vers **Medulla**.</span></td></tr><tr style="height: 29.7969px;"><td style="width: 30.7509%; height: 29.7969px;"><span data-path-to-node="6,6,0,0">---</span></td><td style="width: 35.6307%; height: 29.7969px;"><span data-path-to-node="6,6,2,0">---</span></td><td style="width: 33.6184%; height: 29.7969px;"><span data-path-to-node="6,6,3,0">---</span></td></tr><tr style="height: 63.3906px;"><td style="width: 30.7509%; height: 63.3906px;"><span data-path-to-node="6,7,0,0">**Poste extérieur ➡️ Serveur DMZ**</span></td><td style="width: 35.6307%; height: 63.3906px;"><span data-path-to-node="6,7,2,0"><span data-path-to-node="6,1,2,0">22 </span>(SSH)  
5222</span></td><td style="width: 33.6184%; height: 63.3906px;"><span data-path-to-node="6,7,3,0">Trafic initié par le **poste extérieur** vers le **Serveur DMZ**.</span>

</td></tr></tbody></table>

#### Description de ports

Port 9 : utilisé pour le Wake on LAN (WOL) afin de réveiller un poste à distance.  
  
Port 22 (SSH) : port SSH utilisé par Medulla pour les opérations distantes, l’exécution de commandes et l’administration des agents.  
  
Ports 67 et 69 (UDP) : utilisés pour DHCP et TFTP, notamment lors du démarrage PXE ou pour le chargement d’images de déploiement.  
  
Ports 80 et 443 : HTTP et HTTPS, utilisés pour l’accès web et les échanges sécurisés avec les services Medulla.  
  
Port 111 (TCP et UDP) : utilisé par Portmapper / RPCbind, nécessaire pour les services NFS et certains appels réseau internes.  
  
Port 3389 : utilisé pour RDP afin de se connecter à distance aux postes Windows.

Port 4369 : utilisé pour un cluster ejabberd si vous possédez un relai DMZ

Port 4370 à 4380 : utilisé pour un cluster ejabberd si vous possédez un relai DMZ  
  
Port 5222 : utilisé par XMPP pour la communication entre les agents Medulla et le serveur.  
  
Port 5269 : utilisé par XMPP pour la communication serveur à serveur, notamment entre Medulla et le serveur relais en DMZ.  
  
Port 5900 : utilisé par VNC pour la prise de contrôle à distance.  
  
Ports 5985 et 5986 : utilisés par WinRM (HTTP et HTTPS) pour les commandes distantes sur Windows.  
  
Ports 7080 et 8081 : utilisés par des services internes ou des API de gestion nécessaires au serveur relais ou aux composants Medulla.  
  
Port 8443 : HTTPS utilisé par l’interface ou les API sécurisées de Medulla.  
  
Port 9990 : utilisé par un service interne Medulla pour la gestion et la supervision.  
  
Port 9999 : utilisé comme port interne de synchronisation ou d’échange entre le serveur Medulla et des composants comme le relais.  
  
Port 22000 : utilisé par Syncthing comme canal principal pour la synchronisation de données (packages, artefacts, inventaires).  
  
Port 22067 : utilisé par Syncthing comme canal relayé, utile pour les postes nomades ou situés derrière un NAT.  
  
Ports 35621, 35623 et 55415 : ports dynamiques utilisés par les agents Medulla pour la communication en temps réel, l’inventaire, la synchronisation ou l’exécution de tâches.

# OIDC

#### Lister mes configurations OIDC

Rendez vous sur la vue Admin &gt; Gérer les providers.

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/m8hUXvE5dh2rZV26-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/m8hUXvE5dh2rZV26-image.png)

Vous avez ici la liste des OIDC déjà configuré qu'il est possible de modifier.

#### Créer une configuration OIDC

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/HxOYYjzUOcZEDUk3-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/HxOYYjzUOcZEDUk3-image.png)

"Nom du provider" sera le titre qui s'affichera sur la page d'accueil.

"URL du logo" correspond au lien internet pour configurer un logo au bouton de login OIDC.

"URL de l'émetteur" correspond au lien internet qui redirige vers votre OIDC.

"ID Client" correspond à l'identifiant de votre OIDC.

"Secret Client" correspond au mot de passe de votre OIDC.

- (Optionnel)

"LDAP uid" correspond au mappage de l'uid par votre OIDC

"LDAP givenName" correspond au mappage du givenName de votre OIDC

"LDAP sn" correspond au mappage du sn de votre OIDC

"LDAP mail" correspond au mappage du mail de votre OIDC

Appuyez ensuite sur le bouton **"Créer le provider"** pour avoir le possibilité de vous connecter via un OIDC sur votre plateforme.

# Vues DNS et Relai Medulla en DMZ

<section id="bkmrk-dans-une-architectur" style="font-family: Arial, Helvetica, sans-serif; color: #111827; font-size: 14px; line-height: 1.5;"><span style="color: rgb(52, 73, 94);">Dans une architecture Medulla, un **relai peut être positionné en DMZ** afin de permettre aux postes externes d’accéder à la plateforme sans exposer directement le serveur Medulla interne si vous ne possédez pas de VPN.</span><span style="color: rgb(52, 73, 94);">La configuration des agents Medulla étant unique pour l'ensemble du parc, elle ne supporte qu'un seul nom de domaine. Pour permettre aux machines de joindre le serveur aussi bien depuis le réseau privé que depuis l'extérieur via cette adresse unique, l'utilisation d'un nom de domaine unique couplé à des **vues DNS (Split-Horizon)** ou d'un **Round-Robin** est nécessaire.</span>

</section>#### Vues DNS

<section id="bkmrk-principe-une-vue-dns" style="font-family: Arial, Helvetica, sans-serif; color: #111827; font-size: 14px; line-height: 1.5;">### Principe

Une vue DNS permet de fournir **des réponses différentes pour un même nom** selon l’origine de la requête.

<div style="max-width: 900px; margin: 0 auto; padding: 16px 0;">- Postes internes → serveur Medulla interne
- Postes externes → relai Medulla en DMZ

</div>### Avantages

- Un seul nom DNS à configurer
- Aucune différence de configuration côté postes
- Le serveur Medulla interne n’est pas exposé
- Architecture claire et sécurisée

### À retenir

Les vues DNS permettent d’orienter automatiquement les postes vers le bon point d’accès Medulla, en conservant un nom unique et une configuration simple.  
  
Article de référence sur Bind9 : [https://kb.isc.org/docs/aa-00851](https://kb.isc.org/docs/aa-00851)

</section>#### Round-Robin

Egalement, si vous ne souhaitez pas configurer de Vues DNS, il est possible d’opter pour une solution alternative en mettant en place un mécanisme de ***Round-Robin***. Ce dernier permet de répartir les requêtes entre plusieurs adresses IP associées à un même nom de domaine, garantissant ainsi une répartition équilibrée des connexions.

Pour cela, il est nécessaire de procéder en deux étapes :

1. Définir l’adresse IP interne du serveur principal Medulla.
2. Définir l’adresse IP publique du serveur relais DMZ.

# Filtre les types de machines via ID GLPI

Pour le filtre, dans la section main de /etc/mmc/plugins/glpi.ini.local il faut ajouter :  
filter\_on = &lt;le\_critère&gt;

> \#Display only computers that match one of these filters:  
> \* state  
> \* type  
> \* entity  
> \* autoupdatesystems\_id
> 
> \#Each filter may contain a list of values separated by pipe  
> \#Filters are ids separated by spaces
> 
> i.e. state=1 type=2|3|7 entity=2|5  
> filter\_on = state=3

# Votre GLPI avec Utilisateur Read-Only

Medulla nécessite la création de vues spécifiques dans la base de données **GLPI** pour fonctionner correctement.

##### GLPI Read-Only

Si vous nous fournissez un utilisateur qui a des droits en lecture seul sur votre base GLPI, vous devrez appliquer manuellement un <span aria-controls="radix-_r_4iv_" aria-expanded="false" aria-haspopup="dialog" class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" data-question="Où puis-je obtenir le fichier SQL nécessaire pour créer les vues manuellement dans GLPI?" data-state="closed" tabindex="0">fichier SQL avant l'installation</span> de Medulla. Ce fichier contient les requêtes nécessaires pour créer les vues requises.

Voici le liens du fichier SQL :

[https://dl.medulla-tech.io/nc/glpi-100.sql](https://dl.medulla-tech.io/nc/glpi-100.sql)

##### GLPI accès en écriture

Si vous autorisez l'accès en **écriture** à votre base de données GLPI, <span aria-controls="radix-_r_4j0_" aria-expanded="false" aria-haspopup="dialog" class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" data-question="Comment Medulla vérifie-t-elle les permissions d'écriture avant d'appliquer les vues automatiquement?" data-state="closed" tabindex="0">Medulla appliquera automatiquement les vues nécessaires</span> lors de l'installation.

---

> *<span aria-controls="radix-_r_4j1_" aria-expanded="false" aria-haspopup="dialog" class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" data-question="Que se passe-t-il si les vues ne sont pas créées correctement dans GLPI lors de l'installation de Medulla?" data-state="closed" tabindex="0">Ces vues sont obligatoires pour le fonctionnement de Medulla</span>.*

# Désactiver la convergence du package Extract drivers

Allez sur le serveur Medulla.

Editez les fichiers :

- /etc/pulse-xmpp-agent-substitute/registeryagent.ini
- /etc/pulse-xmpp-agent-substitute/registeryagent.ini.local

Modifiez le paramètre concerné :

```
[extractdrivers] 
# Add the possibility to enable or disable the extraction drivers mecanic
# valeurs acceptées 0, false, False
# valeurs acceptées 1, true, True
activate=0
```

Enregistrer les fichiers.

Relancer le service :

```bash
systemctl restart pulse-xmpp-master-substitute-registration.service
```

# Guide de Configuration : Authentification OIDC et Synchronisation des Utilisateurs

Si vous utilisez une infrastructure **On-Premise**, et que vous choisissez l'authentification via le protocole **OIDC (OpenID Connect)**. Il est essentiel de comprendre comment les comptes utilisateurs sont acheminés et gérés entre votre fournisseur d'identité et l'interface GLPI, si celui-ci est vide d'utilisateur (fraichement installé en même temps que Medulla).

### 1. Comprendre le flux d'authentification

Dans cette architecture, la gestion des accès suit un parcours spécifique :

1. **Stockage :** Vos utilisateurs OIDC sont provisionnés dans le **LDAP local** du serveur Medulla.
2. **Autorisations (ACL) :** Bien que l'authentification soit gérée par l'OIDC, les droits d'accès et les permissions (profils) sont pilotés directement au sein de GLPI.

> **Symptôme d'une absence de synchronisation :** Si, après votre connexion via OIDC, vous arrivez sur une page GLPI vide ou sans menus, cela signifie que votre compte n'a pas encore été importé dans la base de données GLPI. Sans cette étape, le système ne peut pas vous attribuer de profil ni de droits d'accès.
> 
> L'ajout dans le GLPI des utilisateurs lors de la connexion via l'OIDC est maintenant automatique si :
> 
> - Le GLPI est installé par défaut avec Medulla
> - Votre GLPI est accessible en read-write

---

### 2. Procédure de synchronisation manuelle

Pour rendre vos utilisateurs actifs dans GLPI, vous devez effectuer une liaison avec l'annuaire LDAP local. Voici la marche à suivre :

#### Étape A : Accéder à l'interface de liaison

1. Connectez vous à GLPI avec un compte administrateur local.
2. Allez dans le menu **Administration** &gt; **Utilisateurs**.
3. Cliquez sur le bouton **Liaison annuaire LDAP**.

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/scaled-1680-/NxP9d5b7MOiN6bTI-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/NxP9d5b7MOiN6bTI-image.png)

#### Étape B : Importer les comptes

1. Cliquez sur le lien **Importation de nouveaux utilisateurs**.
2. Cliquez sur le bouton **Rechercher** pour lister les utilisateurs présents dans le LDAP de Medulla.
3. Sélectionnez les utilisateurs souhaités (ou l'intégralité) et validez la synchronisation.

# Augmenter le timeout de la connexion à l'interface

Rendez vous sur le fichier /etc/mmc/mmi.ini

Modifier la valeur **sessiontimeout**. (Celui-ci est en secondes)

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/scaled-1680-/4HdPtXnZmQeareo2-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/4HdPtXnZmQeareo2-image.png)

# Activation Support / WSUS / CVE

<p class="callout info">**S'applique à:** Medulla – Support / WSUS / CVE  
**Version:** 5.4.3 ou ultérieure  
**Environnement:** On-Premise  
**Categorie:** Support</p>

Après la mise à jour de votre installation Medulla, une action complémentaire est nécessaire pour activer le support.

Veuillez récupérer le fichier suivant sur votre serveur :

```
/etc/mmc/plugins/security.ini.local
```

Ce fichier doit ensuite être transmis à votre interlocuteur commercial.

Cette étape permet d’activer votre accès au support ainsi que les services associés.

# Changer le FQDN du serveur

Récupérer le script à ce lien :

[https://dl.medulla-tech.io/nc/rename\_fqdn\_and\_protocol.py](https://dl.medulla-tech.io/nc/rename_fqdn_and_protocol.py)

`chmod +x rename_fqdn_and_protocol.py`

Pour voir les options du script :

`./rename_fqdn_and_protocol --help `


##### Modifier le FQDN du serveur

Pour modifier medulla.mondomaine.lan en medulla.mondomaine.fr voici l'exemple d'utilisation de la commande :

`./rename_fqdn_and_protocol --old-fqdn medulla.mondomaine.lan --new-fqdn medulla.mondomaine.fr`

##### Modifier le protocol

Il est également possible de changer le procotol http à https dans les URL en même temps :

`./rename_fqdn_and_protocol --old-fqdn medulla.mondomaine.lan --new-fqdn medulla.mondomaine.fr --new-protocol https`

##### Re-générer l'agent

Si les postes doivent également communiquer directement vers les nouveau FQDN, il est possible de re-générer l'agent avec le nouveau FQDN :

`./rename_fqdn_and_protocol --old-fqdn medulla.mondomaine.lan --new-fqdn medulla.mondomaine.fr --update-agent-conf`

Pour plus d'informations et que vous possédez un contrat de support Medulla, contactez support@medulla-tech.io

# Changer le port SSH entre Serveur - Poste

Récupérer les scripts à ces liens :

[https://dl.medulla-tech.io/nc/change\_ssh\_port\_on\_agent.py](https://dl.medulla-tech.io/nc/change_ssh_port_on_agent.py)

[https://dl.medulla-tech.io/nc/change\_ssh\_port\_on\_server.py](https://dl.medulla-tech.io/nc/change_ssh_port_on_server.py)

`chmod +x change_ssh_port_on_agent.py`

`chmod +x change_ssh_port_on_server.py`

Pour voir les options du script :

`./change_ssh_port_on_agent.py --help`

`./change_ssh_port_on_server.py --help`

<p class="callout info">Il est obligatoire de modifier le port avec les deux script</p>

<p class="callout info">Le port doit être le même sur les deux script</p>


##### Modifier le port sur le serveur

Pour modifier le port 22 pour le port 2002 voici l'exemple d'utilisation de la commande :

`./change_ssh_port_on_agent.py --new-ssh-port 2002`

`./change_ssh_port_on_server.py --new-ssh-port 2002`

L'agent sera regénéré suite à l'exécution du script **"change\_ssh\_port\_on\_agent.py"**, il faut alors re déployer l'agent sur vos postes.

# GLPI - Connecter un GLPI externe

<p class="callout info">**S'applique à**: Medulla/GLPI  
**Version de Medulla**: toutes  
**Version de GLPI**: 10.0.x  
**Environnement**: On-Premise  
**Categorie**: Medulla</p>

#### Prérequis

Avant de configurer l’intégration entre Medulla et GLPI, assurez-vous que les éléments suivants sont disponibles et correctement configurés.

Télécharger le script ici : [https://dl.medulla-tech.io/ma/change\_itsm\_parameters.py](https://dl.medulla-tech.io/ma/change_itsm_parameters.py)

##### 1. Accès base de données GLPI

<span style="color: rgb(45, 194, 107);">Créer un utilisateur MySQL/MariaDB dédié pour Medulla avec les permissions suivantes :</span>

\- Lecture seule (`READ ONLY`) ou lecture/écriture selon les besoins  
\- Accès à l’ensemble de la base de données GLPI

##### 2. Connectivité réseau

Autoriser la communication entre le serveur Medulla et le serveur de base de données GLPI :

<span style="color: rgb(185, 106, 217);">- Port `3306` ouvert (ou port personnalisé selon votre configuration)</span>

##### 3. Création d’un utilisateur API GLPI

Créer un utilisateur GLPI dédié aux appels API nommé comme vous le souhaitez :

<p class="callout info">Sur GLPI dans `Administration &gt; Utilisateurs`</p>

<span style="color: rgb(230, 126, 35);">- Type : utilisateur standard (nom d'utilisateur / mot de passe)</span>  
\- Profil recommandé :  
\- `Read-Only` ou `Super-Admin`  
\- Affectation :  
\- Entité racine  
\- Mode récursif activé

Générer ensuite un jeton API utilisateur (`user\_token`)

##### 4. Création d’un client API GLPI

Créer un client API nommé `MMC`.

<p class="callout info">Sur GLPI dans `Configuration &gt; Générale &gt; API`</p>

Générer ensuite le jeton d’application (`app\_token`)

##### 5. Importer des vues SQL sur votre base de donnée GLPI

Dans votre base de donnée GLPI vous devez importez le fichier téléchargé ici :

[https://dl.medulla-tech.io/nc/glpi-100.sql](https://dl.medulla-tech.io/nc/glpi-100.sql)

\---

#### Utilisation du script

##### Commande d’aide

> ./change\_itsm\_parameters.py --help
> 
> usage: change\_itsm\_parameters.py \[-h\] --url URL --db-host DB\_HOST \[--db-port DB\_PORT\] --db-name DB\_NAME --db-user DB\_USER --db-pass DB\_PASS --api-url API\_URL \[--api-user API\_USER\] \[--api-pass API\_PASS\] \[--readonly READONLY\] \[--crypt-key CRYPT\_KEY\] \[--inv-forward INV\_FORWARD\] \[--inv-forward-url INV\_FORWARD\_URL\] \[--inv-plugin INV\_PLUGIN\] \[--inv-agent INV\_AGENT\] \[--inv-agent-disabled INV\_AGENT\_DISABLED\]
> 
> Update ITSM parameters
> 
> options:  
>  -h, --help show this help message and exit  
> \--url URL ITSM provider URL  
> \--db-host DB\_HOST ITSM provider database host  
> \--db-port DB\_PORT ITSM provider database port  
> \--db-name DB\_NAME ITSM provider database name  
> \--db-user DB\_USER ITSM provider database user  
> \--db-pass DB\_PASS ITSM provider database password  
> \--api-url API\_URL ITSM provider API URL  
> \--api-user API\_USER ITSM provider API user  
> \--api-pass API\_PASS ITSM provider API password  
> \--readonly READONLY Whether ITSM provider database is read-only for Medulla (optional)  
> \--crypt-key CRYPT\_KEY  
>  Decoded GLPI crypt key file - base64 /etc/glpi/glpicrypt.key (optional)  
> \--inv-forward INV\_FORWARD  
>  Whether to forward inventory data to ITSM provider (optional)  
> \--inv-forward-url INV\_FORWARD\_URL  
>  URL to forward inventory data to (optional)  
> \--inv-plugin INV\_PLUGIN  
>  Inventory plugin to use - glpiinventory or fusioninventory(optional)  
> \--inv-agent INV\_AGENT  
>  Inventory agent to use on client machine - glpiagent or fusioninventory (optional, required if --inv-forward is true)  
> \--inv-agent-disabled INV\_AGENT\_DISABLED  
>  Whether to include inventory agent in Medulla agent (optional)

##### Exemples d'utilisation :

> ./change\_itsm\_parameters.py \\  
> \--url https://glpi.mon-domaine.fr/ \\  
> \--db-host 10.10.0.101 \\  
>  <span style="color: rgb(185, 106, 217);">--db-port 3306 \\</span>  
> \--db-name GLPI \\  
> <span style="color: rgb(45, 194, 107);"> --db-user medulla\_glpi \\</span>  
> <span style="color: rgb(45, 194, 107);"> --db-pass yJxI40UzO8Jn7dd7K5Yaml \\</span>  
> \--api-url https://glpi.mon-domaine.fr/apirest.php/ \\  
> <span style="color: rgb(230, 126, 35);"> --api-user medulla\_APIUSER \\</span>  
> <span style="color: rgb(230, 126, 35);"> --api-pass fLN1Zomh877obPhk \\</span>

# FAQ - SaaS Privé

# Pré-requis réseau pour Medulla SaaS Privé

Se reporter à :   
  
[https://docs.medulla-tech.io/books/medulla-faq/page/faq-pre-requis-reseau-pour-medulla-saas](https://docs.medulla-tech.io/books/medulla-faq/page/pre-requis-reseau-pour-medulla-saas)

# Postes Clients (état & visibilité)

##### **Pourquoi certains postes apparaissent hors ligne alors qu’ils sont allumés ?**

- Vérifiez le service medullaagent et medullanetnotify sur les postes hors ligne, si les services sont bien "running" mais que le poste apparait hors ligne sur l'interface (poste grisé) alors merci de prendre contacte avec le service Support ou votre Administrateur.
- Si présence d'erreur dans les logs de l'agent (sur le poste) "C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log", reportez les au service Support ou votre Administrateur.

##### **Pourquoi les inventaires ou informations remontées sont incomplets ou erronés.**

- Assurez vous que l'adresse MAC du poste qui ne remonte pas sont inventaire n'est pas déjà utilisé, pour voir si un poste a des difficultés à remonter son inventaire, il est impossible de déployer sur le poste, même s'il parait en ligne sur l'interface (icone de l'ordinateur bleu), l'icône de déploiement du poste dans les "actions" apparaitra grisé.

# Déploiement (télédiffusion)

##### **Pourquoi mes déploiements restent bloqués en Pending ?**

- Le status Pending, montre que les déploiements vont bientôt être pris en compte, si le blocage persiste, merci de prendre contact avec le service Support ou votre Administrateur.

##### **Pourquoi mes déploiements restent bloqués en Deployment Start ?**

- Le status Deployment Start, montre que les déploiements vont bientôt être pris en compte, si le blocage persiste, merci de prendre contact avec le service Support ou votre Administrateur.

##### **Que faire en cas d’erreur de déploiement : Abort Package Execution ?**

- Vous devez vérifier le script lié au package, l'erreur indique qu'il ne s'exécute pas correctement. Vous pouvez tester d'exécuter le script à la main sur votre machine.
- Vérifiez le retour donné par l'audit du déploiement, celui ci peut donner des indices sur la raison de l'erreur.

##### **Que faire en cas d'erreur de déploiement : Transfer Failed ?**

- Votre ordinateur n'arrive pas à récupérer le package à cause de Rsync. Veuillez vérifier les droits de Rsync sur plusieurs dossier pour l'utilisateur pulseuser, les droits doivent être placés comme cela :

```bash
C:\Progra~1\Pulse\var\tmp\packages BUILTIN\Users:(OI)(CI)(F)
                                   NT SERVICE\TrustedInstaller:(I)(F)
                                   NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
                                   NT AUTHORITY\SYSTEM:(I)(F)
                                   NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                                   BUILTIN\Administrators:(I)(F)
                                   BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                                   BUILTIN\Users:(I)(RX)
                                   BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
                                   CREATOR OWNER:(I)(OI)(CI)(IO)(F)
                                   APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                   APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
                                   APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)
                                   APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)

C:\Users\pulseuser\.ssh NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
                        BUILTIN\Administrators:(I)(OI)(CI)(F)
                        NOM_MACHINE\pulseuser:(I)(OI)(CI)(F)

C:\Users\pulseuser\.ssh\authorized_keys NOM_MACHINE\pulseuser:(F)
                                        NT AUTHORITY\SYSTEM:(F)
```

##### **Pourquoi mes télédiffusions ne démarrent pas ou son long à démarrer ?**

- Si vos déploiements mettent du temps à démarrer, il est possible que votre déploiement placé en file d'attente soit ralenti par la charge actuelle de la plateforme SaaS.
- Si vos déploiements restent bloquer, veuillez prendre contact avec le service Support ou votre Administrateur.

##### **Comment arrêter un déploiement ?**

- Vous disposez d'un bouton "Stop Deploy" dans l'audit d'un déploiement pour arrêter le déploiement en cours.

##### **Comment voir le résultat de mon déploiement ?**  


- Dans la vue "Audit" vous pouvez retrouver la liste de tout vos déploiements. Cliquez sur le bouton action ![details.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/q65sgJD2FZnkt0Lf-details.png) "Affichez les détails du déploiement" pour voir votre déploiement.

##### **Comment relancer un déploiement ?**

- Dans la vue "Audit", retrouver la ligne correspondant au déploiement que vous souhaitez relancer, puis cliquez sur le bouton action ![reload.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/dgXn57hnw81vXtG5-reload.png) pour relancer le déploiement.

# Packages

##### **Je n'arrive pas à ajouter un fichier dans mon package.**  


- Une fois que vous avez ajouter un fichier à votre package, il est en attente, il ne faut pas oublier de cliquer sur "Transmettre le package en attente".

##### **J'ai créé un package mais il n'est pas disponible au déploiement, pourquoi ?**

- Si votre package n'est pas visible dans la liste des packages, ou visible lorsque vous souhaitez le déployer, alors il est en attente de synchronisation sur les relais, patientez quelques instant avant de le voir apparaitre dans la "Liste des packages".

##### **Pourquoi mon package n'est pas disponible dans la page d'ajout de package au Kiosk ?**

- Votre package doit avoir un inventaire d'associé afin d'être visible dans la liste des packages disponible pour le Kiosk.

# Console & Administration

##### **Pourquoi la console est lente, instable ou inaccessible ?**

<div id="bkmrk-il-est-possible-que-">- Il est possible que la plateforme soit surchargé. Veuillez patientez quelques minutes le temps que nous résolvions le problème. Si le problème persiste, merci de prendre contacte avec le service Support ou votre Administrateur.

</div>##### **Comment résoudre les problèmes de droits utilisateurs ?**

<div id="bkmrk-un-utilisateur-dispo">- Un utilisateur dispose d'un profile avec des droits prédéfini par Medulla. Si vous êtes Super-Admin, vous pouvez changer sont profile, rendez vous dans la vue "Admin" puis "Gestions des entités", cliquez sur le bouton ![7OaEkD2YqPh62cN2-usergroup.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/5qfwmk0eo9ywukmP-7oaekd2yqph62cn2-usergroup.png) "Gérer les utilisateurs" sur la ligne de l'entité dans laquelle se trouve l'utilisateur. Cliquez sur le bouton ![edit.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/UmCzCWO3WNiGoJR3-edit.png) "Edition" pour l'utilisateur concerné pour modifier son profile.

</div>##### **Pourquoi je n’ai pas accès à certains groupes, audits ou tâches planifiées ?**

<div id="bkmrk-si-vous-n%27%C3%AAtes-pas-s">- Si vous n'êtes pas Super-Admin, contacter une personne ayant le profile Super-Admin afin qu'il modifie votre "Profile".

</div>##### **Que faire en cas de blocage sur la console ou d’erreurs XMPP ?**

<div id="bkmrk-essayer-de-vous-d%C3%A9co">- Essayer de vous déconnecter puis reconnecter, vous pouvez également tenter de supprimer le cache et les cookies de votre navigateur. Si le problème persiste, merci de prendre contact avec le service Support ou votre Administrateur, en expliquant votre situation avec un maximum de détail et de communiquer l'erreur qui vous a été affichée.

</div>

# Télémaintenance & Prise en main

##### **Que faire si la prise en main à distance (VNC/RDP/PMAD) ne fonctionne pas ?**

- Vérifiez le service TightVNC sur les postes posant problème.
- La prise en main à distance n'est pas accessible si l'ordinateur apparait comme hors ligne : grisé, si c'est le cas vérifier l'état du service medullaagent sur la machine.

# FAQ - Toute plateforme

# Postes Clients (état & visibilité)

<p class="callout info">**S'applique à:** Medulla – Agents  
**Version:** 5.4.3 ou ultérieure  
**Environnement:** On-Premise - SaaS mutualisés et SaaS privés  
**Categorie:** Support</p>

##### **Pourquoi certains postes apparaissent hors ligne alors qu’ils sont allumés ?**

- Vérifiez le service medullaagent et medullanetnotify sur les postes hors ligne, si les services sont bien "running" mais que le poste apparait hors ligne sur l'interface (poste grisé) alors merci de prendre contacte avec le service Support ou votre Administrateur.
- Si présence d'erreur dans les logs de l'agent (sur le poste) "C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log", reportez les au service Support ou votre Administrateur.

##### **Pourquoi les inventaires ou informations remontées sont incomplets ou erronés.**

- Assurez vous que l'adresse MAC du poste qui ne remonte pas sont inventaire n'est pas déjà utilisé, pour voir si un poste a des difficultés à remonter son inventaire, il est impossible de déployer sur le poste, même s'il parait en ligne sur l'interface (icone de l'ordinateur bleu), l'icône de déploiement du poste dans les "actions" apparaitra grisé.

# Packages

<p class="callout info">**Medulla Modules Packages / Toutes versions / SaaS Public et privé et On premise / Maintenance**</p>

##### **Je n'arrive pas à ajouter un fichier dans mon package.**  


- Une fois que vous avez ajouter un fichier à votre package, il est en attente, il ne faut pas oublier de cliquer sur "Transmettre le package en attente".

##### **J'ai créé un package mais il n'est pas disponible au déploiement, pourquoi ?**

- Si votre package n'est pas visible dans la liste des packages, ou visible lorsque vous souhaitez le déployer, alors il est en attente de synchronisation sur les relais, patientez quelques instant avant de le voir apparaitre dans la "Liste des packages".

##### **Pourquoi mon package n'est pas disponible dans la page d'ajout de package au Kiosk ?**

- Votre package doit avoir un inventaire d'associé afin d'être visible dans la liste des packages disponible pour le Kiosk.

# Console & Administration

<p class="callout info">**Medulla / Toutes versions / SaaS Public et privé et On premise / Maintenance**</p>

##### **Pourquoi la console est lente, instable ou inaccessible ?**

<div id="bkmrk-il-est-possible-que-">- Il est possible que la plateforme soit surchargé. Veuillez patientez quelques minutes le temps que nous résolvions le problème. Si le problème persiste, merci de prendre contacte avec le service Support ou votre Administrateur.

</div>##### **Comment résoudre les problèmes de droits utilisateurs ?**

<div id="bkmrk-un-utilisateur-dispo">- Un utilisateur dispose d'un profile avec des droits prédéfini par Medulla. Si vous êtes Super-Admin, vous pouvez changer sont profile, rendez vous dans la vue "Admin" puis "Gestions des entités", cliquez sur le bouton ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/OMlud2dUiDDo1Ovk-image.png) "Gérer les utilisateurs" sur la ligne de l'entité dans laquelle se trouve l'utilisateur. Cliquez sur le bouton ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/IFSWnlgKgaceWTeL-image.png) "Edition" pour l'utilisateur concerné pour modifier son profile.

</div>##### **Pourquoi je n’ai pas accès à certains groupes, audits ou tâches planifiées ?**

<div id="bkmrk-si-vous-n%27%C3%AAtes-pas-s">- Si vous n'êtes pas Super-Admin, contacter une personne ayant le profile Super-Admin afin qu'il modifie votre "Profile".

</div>##### **Que faire en cas de blocage sur la console ou d’erreurs XMPP ?**

<div id="bkmrk-essayer-de-vous-d%C3%A9co">- Essayer de vous déconnecter puis reconnecter, vous pouvez également tenter de supprimer le cache et les cookies de votre navigateur. Si le problème persiste, merci de prendre contact avec le service Support ou votre Administrateur, en expliquant votre situation avec un maximum de détail et de communiquer l'erreur qui vous a été affichée.

</div>

# Télémaintenance & Prise en main

<p class="callout info">**Medulla Modules Ordinateurs / Toutes versions / SaaS Public et privé et On premise / Maintenance**</p>

##### **Que faire si la prise en main à distance (VNC/RDP/PMAD) ne fonctionne pas ?**

- Vérifiez le service TightVNC sur les postes posant problème.
- La prise en main à distance n'est pas accessible si l'ordinateur apparait comme hors ligne : grisé, si c'est le cas vérifier l'état du service medullaagent sur la machine.

# Mettre l'agent en Debug

<p class="callout info">**Medulla / Toutes versions / SaaS Public et privé et On premise / Maintenance**</p>

Pour mettre l'agent en **DEBUG**, rien de plus simple.

Rendez vous sur le fichier **agentconf.ini** qui se trouve dans : **C:\\Program Files\\Medulla\\etc\\agentconf.ini**

Dans la section **\[global\]**

- Modifier la valeur **log\_level = <span style="color: rgb(224,62,45);">INFO</span>** pour **log\_level = <span style="color: rgb(45,194,107);">DEBUG</span>**
- Modifier la valeur **log\_level\_slixmpp = <span style="color: rgb(224,62,45);">FATAL</span>**<span style="color: rgb(224,62,45);"> </span>pour **log\_level\_slixmpp = <span style="color: rgb(45,194,107);">DEBUG</span>**

# Problème d'agent Windows

<p class="callout info">**Medulla / Toutes versions / SaaS Public et privé et On premise / Maintenance**</p>

Votre problème concerne une interaction entre **Medulla et un poste Windows** (agent qui ne remonte pas, actions non appliquées, poste invisible, etc.) ?

Afin de faciliter le diagnostic, Medulla met à disposition un **script de vérification** qui permet de contrôler la connectivité réseau, l’état de l’agent et la configuration du poste.

**Téléchargement du script :**  
[https://dl.medulla-tech.io/nc/windows\_connection\_check\_signed.ps1](https://dl.medulla-tech.io/nc/windows_connection_check_signed.ps1)

(clique droit sur le lien ci-dessous, puis cliquez sur **"Enregister le lien sous..."**)

#### Prérequis aux tests

Avant de commencer, assurez-vous d’avoir récupéré le script ci-dessus et de préparer les machines.

**Sur le poste client Windows possédant l’agent Medulla :**

- Faire un clic droit sur le script cliquer sur propriétés, cocher la case débloquer l'execution du script et valider.

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/scaled-1680-/6Gs5mDYikDrAhhUU-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/6Gs5mDYikDrAhhUU-image.png)

- Autorisez l’exécution des scripts PowerShell :

`Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned`

> \# Répondre "Oui pour tous" (A ou T) si demandé

#### Pour powershell v7.5.4 : 

Il n'y a pas besoin de débloquer le script. Il faut lancez la commande vu précédemment.

Il vous demandera si on veut autoriser l'editeur qui publie le script il suffit de valider en cliquant sur R ou A.

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/scaled-1680-/vJOscUwLGmSGzsEU-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/vJOscUwLGmSGzsEU-image.png)

#### Test Medulla Serveur &lt;- Poste Client Windows

*Vérification de la communication directe entre le serveur et les postes clients.*

**Sur le Poste Client (Source) :** Lancez le test **vers le nom d’hôte** ou **l’IP du serveur**.

`<em>.\windows_connection_check_signed.ps1 -Target <IP_DU_SERVEUR> -Mode pulse</em>`

Un fichier de log est créé (à l’emplacement depuis lequel vous lancez le script) et résume les tests effectués : **LOG\_Test\_Flux.txt**

> *Si vous avez des erreurs de droits lors de la création du fichier de log, essayez de placer le script dans le dossier **Downloads** de l’utilisateur, ou donnez les droits au script **windows\_connection\_check.ps1** pour créer un fichier au même emplacement.*

#### Medulla On-Premise

Si vous avez un serveur Medulla On-Premise, vous avez également la possibilité de lancer un diagnostic du serveur vers le poste :

**Sur le Serveur Medulla (Source) :** Lancez le test vers le **nom d’hôte** ou **l’IP du poste**.

`./medulla_connection_check.sh -c client.example.com`

**Recommandation :** merci de joindre le fichier **LOG\_Test\_Flux.txt** lors de votre demande de support.

# FAQ - ACL

Gestion des ACL dans Medulla

# Introduction

##### <span style="text-decoration: underline;">Définitions : </span>

**ACL :** Défini les accès à chacune des fonctionnalités de Medulla en fonction du profil de l’utilisateur connecté.  
Les ACL évoluent à chaque release de Medulla au fur et à mesure de l’enrichissement des fonctionnalités

**Profil :** Défini dans l’outil d’ITSM et permet de définir les habilitations d’un utilisateur sur une entité.  
3 profils sont définis: Super-Admin, Admin et Technician

**Restriction:** Pas de différentiation de couple profil/entité dans Medulla. Si un utilisateur a des profils différents dans différentes entités, ce sera toujours son profil le plus permissif qui sera appliqué sur toutes les entités permises.

##### <span style="text-decoration: underline;">Configuration : </span>

Les ACL se configurent dans le fichier : **/etc/mmc/plugins/glpi.ini.local**

Les 3 paramètres sont:  **profile\_acl\_Super-Admin**  
**profile\_acl\_Admin**  
**profile\_acl\_Technician**

##### <span style="text-decoration: underline;">Etapes de configuration : </span>

1- Dans la liste lister les fonctionnalités voulues  
2- Transformer les ACLs en une chaine continue et terminer par /  
3- Reporter la chaine dans le fichier de configuration pour le profil voulu  
4 - Redémarrer les services<span style="text-decoration: underline;">  
</span>

# Les ACL

##### <span style="text-decoration: underline;">Dashboard : </span>

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/inrdT7Z8JOc1JgmD-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/inrdT7Z8JOc1JgmD-image.png)

##### <span style="text-decoration: underline;">Inventaire : </span>

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/r6AZQyD1bbxCrsnu-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/r6AZQyD1bbxCrsnu-image.png)

##### <span style="text-decoration: underline;">Packaging : </span>

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/h5AqpWfqEJDO304S-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/h5AqpWfqEJDO304S-image.png)

##### <span style="text-decoration: underline;">Package Deploiement :</span>

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/ikJmhZ4KXAI5vnvl-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/ikJmhZ4KXAI5vnvl-image.png)

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/Xzzknp1X78jAUlyF-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/Xzzknp1X78jAUlyF-image.png)

# Les ACL suite

##### <span style="text-decoration: underline;">Imaging : </span>

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/qhfdos09hNUp3rGF-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/qhfdos09hNUp3rGF-image.png)

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/SzlmEvvqFIjRWlvO-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/SzlmEvvqFIjRWlvO-image.png)

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/xrxNRxWLoKxr0tyQ-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/xrxNRxWLoKxr0tyQ-image.png)

##### <span style="text-decoration: underline;">Updates: </span>

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/042VtpGndiggswns-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/042VtpGndiggswns-image.png)

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/vuA8sfkE4XdKHTr2-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/vuA8sfkE4XdKHTr2-image.png)

##### <span style="text-decoration: underline;">Admin On premise Super Admin Server Management : </span>

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/GE42pd2EC95y7Kw0-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/GE42pd2EC95y7Kw0-image.png)

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/MgY7cuigWxZb9SEb-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/MgY7cuigWxZb9SEb-image.png)

# FAQ - Interface

# Console & Administration

<p class="callout info">**S'applique à: Medulla – Interface  
Version: Toutes   
Environnement: On-Premise / SaaS Privé / SaaS mutualisé  
Categorie: Interface Medulla / support**</p>

##### **Pourquoi la console est lente, instable ou inaccessible ?**

<div id="bkmrk-il-est-possible-que-">- Il est possible que la plateforme soit surchargé. Vous avez la possibilité de regarder si vous trouvez des erreurs dans les logs tel que "/var/log/mmc/mmc-agent" ou "/var/log/mmc/master-\*.log". Si vous êtes en Saas, merci de nous contacter.

</div>##### **Comment résoudre les problèmes de droits utilisateurs ?**

<div id="bkmrk-un-utilisateur-dispo">- Un utilisateur dispose d'un profile avec des droits prédéfini par Medulla. Si vous êtes Super-Admin, vous pouvez changer sont profile, rendez vous dans la vue "Admin" puis "Gestions des entités", cliquez sur le bouton ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/OMlud2dUiDDo1Ovk-image.png) "Gérer les utilisateurs" sur la ligne de l'entité dans laquelle se trouve l'utilisateur. Cliquez sur le bouton ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/IFSWnlgKgaceWTeL-image.png) "Edition" pour l'utilisateur concerné pour modifier son profile.

</div>##### **Pourquoi je n’ai pas accès à certains groupes, audits ou tâches planifiées ?**

<div id="bkmrk-si-vous-n%27%C3%AAtes-pas-s">- Si vous n'êtes pas Super-Admin, contacter une personne ayant le profile Super-Admin afin qu'il modifie votre "Profile".

</div>##### **Que faire en cas de blocage sur la console ou d’erreurs XMPP ?**

<div id="bkmrk-essayer-de-vous-d%C3%A9co">- Essayer de vous déconnecter puis reconnecter, vous pouvez également tenter de supprimer le cache et les cookies de votre navigateur. Si le problème persiste, merci de prendre contact avec le service Support ou votre Administrateur, en expliquant votre situation avec un maximum de détail et de communiquer l'erreur qui vous a été affichée.

</div>

# Augmenter le timeout des sessions Web  (MMC / XMLRPC)

<p class="callout info">**S'applique à: Medulla – Server  
Version:**  **Medulla ≥ 5.2.2   
Environnement: On-Premise  
Categorie: Interface Web**</p>

## Problème

Certaines actions longues dans Medulla peuvent provoquer :

- des déconnexions MMC,
- des erreurs de timeout XMLRPC,
- des coupures de session pendant des déploiements ou actions distantes.

Il est alors nécessaire d’augmenter les valeurs de `sessiontimeout`.

---

## 1. Timeout session PHP MMC

### Fichier à modifier

Sur le serveur Medulla :

```
/etc/mmc/mmc.ini.local
```

### Paramètre à ajouter ou modifier

```
[global]
sessiontimeout = 3600
```

Ce paramètre correspond au timeout des sessions PHP/MMC.

Les valeurs sont exprimées en secondes.

<table id="bkmrk-exemples-timeout-mm"><thead><tr><th>Valeur</th><th>Durée</th></tr></thead><tbody><tr><td>`900`</td><td>15 minutes</td></tr><tr><td>`3600`</td><td>1 heure</td></tr><tr><td>`7200`</td><td>2 heures</td></tr></tbody></table>

---

## 2. Timeout session XMLRPC / Agent

### Fichier à modifier

Sur le serveur Medulla :

```
/etc/mmc/agent/config.ini.local
```

### Paramètre à ajouter ou modifier

```
[main]
sessiontimeout = 3600
```

Ce paramètre correspond au timeout des sessions XMLRPC utilisées par les échanges MMC ↔ Agent.

Les valeurs sont exprimées en secondes.

<table id="bkmrk-exemples-timeout-xm"><thead><tr><th>Valeur</th><th>Durée</th></tr></thead><tbody><tr><td>`900`</td><td>15 minutes</td></tr><tr><td>`3600`</td><td>1 heure</td></tr><tr><td>`7200`</td><td>2 heures</td></tr></tbody></table>

---

## 3. Point important

Les deux valeurs doivent rester cohérentes entre elles :

<table id="bkmrk-composant-fichier-ty"><thead><tr><th>Composant</th><th>Fichier</th><th>Type de session</th></tr></thead><tbody><tr><td>MMC / PHP</td><td>`/etc/mmc/mmc.ini.local`</td><td>Session PHP</td></tr><tr><td>Agent / XMLRPC</td><td>`/etc/mmc/agent/config.ini.local`</td><td>Session XMLRPC</td></tr></tbody></table>

---

## 4. Valeurs par défaut

Les fichiers d’origine utilisent généralement les valeurs suivantes :

```
sessiontimeout = 7200
```

ou :

```
sessiontimeout = 900
```

Ces valeurs peuvent être insuffisantes pour :

- les gros déploiements,
- les actions VNC longues,
- les synchronisations,
- les opérations distantes prolongées.

# FAQ - Utilisation Medulla

# Déploiement (télédiffusion)

##### **Pourquoi mes déploiements restent bloqués en Pending ?**

- Le status Pending, montre que les déploiements vont bientôt être pris en compte, si le blocage persiste, merci de prendre contact avec le service Support ou votre Administrateur.

##### **Pourquoi mes déploiements restent bloqués en Deployment Start ?**

- Le status Deployment Start, montre que les déploiements vont bientôt être pris en compte, si le blocage persiste, merci de prendre contact avec le service Support ou votre Administrateur.

##### **Que faire en cas d’erreur de déploiement : Abort Package Execution ?**

- Vous devez vérifier le script lié au package, l'erreur indique qu'il ne s'exécute pas correctement. Vous pouvez tester d'exécuter le script à la main sur votre machine.
- Vérifiez le retour donné par l'audit du déploiement, celui ci peut donner des indices sur la raison de l'erreur.

##### **Que faire en cas d'erreur de déploiement : Transfer Failed ?**

- Votre ordinateur n'arrive pas à récupérer le package à cause de Rsync. Veuillez vérifier les droits de Rsync sur plusieurs dossier pour l'utilisateur pulseuser, les droits doivent être placés comme cela :

```bash
C:\Progra~1\Pulse\var\tmp\packages BUILTIN\Users:(OI)(CI)(F)
                                   NT SERVICE\TrustedInstaller:(I)(F)
                                   NT SERVICE\TrustedInstaller:(I)(CI)(IO)(F)
                                   NT AUTHORITY\SYSTEM:(I)(F)
                                   NT AUTHORITY\SYSTEM:(I)(OI)(CI)(IO)(F)
                                   BUILTIN\Administrators:(I)(F)
                                   BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
                                   BUILTIN\Users:(I)(RX)
                                   BUILTIN\Users:(I)(OI)(CI)(IO)(GR,GE)
                                   CREATOR OWNER:(I)(OI)(CI)(IO)(F)
                                   APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
                                   APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)
                                   APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)
                                   APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(OI)(CI)(IO)(GR,GE)

C:\Users\pulseuser\.ssh NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
                        BUILTIN\Administrators:(I)(OI)(CI)(F)
                        NOM_MACHINE\pulseuser:(I)(OI)(CI)(F)

C:\Users\pulseuser\.ssh\authorized_keys NOM_MACHINE\pulseuser:(F)
                                        NT AUTHORITY\SYSTEM:(F)
```

##### **Pourquoi mes télédiffusions ne démarrent pas ou son long à démarrer ?**

- Si vos déploiements mettent du temps à démarrer, il est possible que votre déploiement placé en file d'attente soit ralenti par la charge actuelle de la plateforme SaaS.
- Si vos déploiements restent bloquer, veuillez prendre contact avec le service Support ou votre Administrateur.

##### **Comment arrêter un déploiement ?**

- Vous disposez d'un bouton "Stop Deploy" dans l'audit d'un déploiement pour arrêter le déploiement en cours.

##### **Comment voir le résultat de mon déploiement ?**  


- Dans la vue "Audit" vous pouvez retrouver la liste de tout vos déploiements. Cliquez sur le bouton action ![details.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/q65sgJD2FZnkt0Lf-details.png) "Affichez les détails du déploiement" pour voir votre déploiement.

##### **Comment relancer un déploiement ?**

- Dans la vue "Audit", retrouver la ligne correspondant au déploiement que vous souhaitez relancer, puis cliquez sur le bouton action ![reload.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/dgXn57hnw81vXtG5-reload.png) pour relancer le déploiement.

# Packages

##### **Je n'arrive pas à ajouter un fichier dans mon package.**  


- Une fois que vous avez ajouter un fichier à votre package, il est en attente, il ne faut pas oublier de cliquer sur "Transmettre le package en attente".

##### **J'ai créé un package mais il n'est pas disponible au déploiement, pourquoi ?**

- Si votre package n'est pas visible dans la liste des packages, ou visible lorsque vous souhaitez le déployer, alors il est en attente de synchronisation sur les relais, patientez quelques instant avant de le voir apparaitre dans la "Liste des packages".

##### **Pourquoi mon package n'est pas disponible dans la page d'ajout de package au Kiosk ?**

- Votre package doit avoir un inventaire d'associé afin d'être visible dans la liste des packages disponible pour le Kiosk.

##### **Augmenter la taille d'Upload de package** 

Réalisez ces commandes avec la taille souhaitée, **post\_max\_size** et **upload\_max\_filesize** correspondent à la nouvelle taille d'upload souhaitée.

```
crudini --set /etc/php/8.2/fpm/php.ini PHP post_max_size 800M 
crudini --set /etc/php/8.2/fpm/php.ini PHP upload_max_filesize 800M
crudini --set /etc/php/8.2/fpm/php.ini PHP memory_limit 2048M
crudini --set /etc/php/8.2/fpm/php.ini PHP max_execution_time 60
crudini --set /etc/php/8.2/fpm/php.ini PHP max_input_time 60
systemctl restart php8.2-fpm
```

<p class="callout warning">**memory\_limit** doit correspondre à minimum 2.5x la taille d'upload.</p>

<p class="callout warning">Des ralentissements peuvent suivre cette modification. Restez raisonnable dans l'augmentation.</p>

# Mises à jour (Windows Updates)

##### **Vos postes ne remontent aucune mises à jour ?**

- Vérifier dans le sous menu "Validation de produits Microsoft" que vous avez bien activé les bon produits pour les postes Windows 10 ou 11.

- Vérifier le fichier de log "/tmp/medulla-generate-winupdate-packages.log", si celui-ci contient : Error downloading https://updates.medulla-tech.io/updates\_protected/xxxx-xxxxxx-dumptable\_update\_data.sql, merci d'ouvrir un ticket auprès du support Medulla en indiquant les erreurs relevées dans le fichier de log.

- Vérifier le fichier de log "/var/log/mmc/medulla-mariadb-synchro-update-package.log", si celui-ci contient des erreurs, merci d'ouvrir un ticket auprès du support Medulla, en indiquant les erreurs relevées dans le fichier de log.

<p class="callout warning">Cette fonctionnalité nécessite un contrat de support actif.  
Ce module repose sur des traitements avancés (analyse des vulnérabilités, corrélation des données, calcul des états) réalisés sur les serveurs Medulla.  
Le contrat de support permet de financer l’infrastructure nécessaire à ces traitements ainsi que leur maintien en conditions opérationnelles.  
Le contrat de support inclut également :  
le support technique et l’assistance,  
l’accès aux nouvelles fonctionnalités soumises à un contrat de support actif,  
participation à l’amélioration continue de la solution.  
Pour activer ces fonctionnalités, nous vous invitons à souscrire un contrat de support en nous contactant à l’adresse suivante : <medulla@medulla-tech.io></p>

# Les menus d'imaging

<p class="callout info">**S'applique à:** Medulla – Imaging  
**Version:** 5.4.3 ou ultérieure  
**Environnement:** On-Premise / SaaS Privé avec relais imaging.  
**Categorie:** Utilisation</p>

Ce document se focalise sur la gestion et la génération des menus d'imaging.

##### Qu'est-ce qu'un menu d'imaging?

Un menu d'imaging est une collection de services et de masters associés à une machine, utilisables lors de la séquence de boot (réseau) d'une machine.  
Lors d'un démarrage PXE, la machine demande son menu à son serveur. Plusieurs cas de figure sont possibles:

- La machine n'a pas de menu associé: le serveur lui associe un menu par défaut
- La machine fait partie d'un groupe de machines: le serveur lui envoie le menu associé à ce groupe.
- La machine ne fait pas partie d'un groupe et a un menu associé: le serveur lui envoie ce menu.

La suite du déroulement du processus d'imaging, dépend du contenu de ce menu.

Il existe différents niveaux de menus:

- Les menus du serveur d'imaging 
    - Le menu register
    - Le menu par défaut
- Le menu de machine
- Le menu de groupes

##### Les menus du serveur d'imaging:

- Le menu register:

Ce menu est invariant. Il est composé des services suivants:  
\- **continue**: ce service permet de démarrer la machine normalement.  
\- **register:** ce service permet d'enregistrer une machine dans le système d'imaging.

- Le menu par défaut

Chaque serveur d'imaging reçoit un menu par défaut. Ce menu est composé des services suivants:  
\- `continue`: ce service permet de démarrer la machine normalement.  
\- `backup`: créé une copie du disque de la machine dans le système d'imaging.

- Modifications

Ce menu est modifiable depuis l'interface MMC.

Les modifications du menu par défaut n'affectent pas les menus des machines ou des groupes. Pour que les machines bénéficient des modifications du menu par défaut, il est nécessaire de lancer un "reset" des menus de l'entité.

- Ajouter / retirer un service

Plusieurs services pouvant être ajoutés au menu sont disponibles.

<p class="callout success">La page définissant les services disponibles dans un menu est la suivante:  
MMC &gt; Imaging &gt; Gérer les services de menu.</p>

Dans cette page, les services sont associés à l'entité sélectionnée. En changeant d'entité, on modifie la liste des services associée à cette entité.

- Ajouter / retirer un master

Cette section ne prend pas en compte comment transformer une image en master.

Des masters présent sur le serveur d'imaging peuvent être associés au menu par défaut.

<p class="callout success">La page permettant d'associer des masters au menu par défaut est la suivante:  
MMC &gt; Imaging &gt; Gérer les masters.</p>

- Modifier l'ordre des services et des masters

<p class="callout success">Les différents services et masters associés au menu par défaut sont visibles à travers la page suivante:  
`MMC &gt; Imaging &gt; Menu de démarrage par défaut`.</p>

Dans cette page il est possible de modifier l'ordre des éléments du menu. Il est également possible de modifier des paramètres spécifiques aux éléments associés.

- Services minimum d'un menu

<p class="callout warning">A l'heure actuelle, un menu doit comporter au minimum un service (ou une image). En général le service de base est le `continue` pour être fonctionnel.</p>

Le service minimal doit valider les options suivantes:

\- **Par défaut** validé pour que ce service soit sélectionné par défaut  
\- **Visible validé** pour que ce service soit visible dans le menu de démarrage  
\- **Par défaut WOL** validé pour ne pas avoir de traceback même si je ne sais pas à quoi sert cette option.

<p class="callout warning">Un correctif est envisagé pour ne pas permettre la suppression du dernier service d'un menu.</p>

- Le menu de machine

<p class="callout success">Le menu d'une machine est accessible depuis la page suivante:  
**MMC &gt; Machines &gt; action:Gestion de l'imaging.**</p>

Cette page est organisée en trois onglets:  
\- **Menu de démarrage** cet onglet permet de visualiser et de modifier le menu.  
\- **Services de menu** cet onglet permet d'associer des services au menu de la machine.  
\- **Images et master** cet onglet permet d'associer des masters au menu de la machine.

Un menu de machine ne devrait pas être vide. Si c'est le cas, plusieurs possibilités:  
\- La machine a copié un menu par défaut vide (peu probable, dans la mesure où en général la copie dans cette situation génère une traceback).  
\- Un administrateur a supprimé tous les éléments du menu de la machine.

- Le menu de groupes

Basiquement le menu d'un groupe est similaire au menu d'une machine. Cependant, il est associé à un groupe imaging, et non à une machine spécifique.

<p class="callout success">Pour y accéder, il faut se rendre sur la page suivante:  
MMC &gt; Imaging &gt; Tous les groupes d'imaging &gt; action:Gestion de l'imaging.</p>

Le menu d'un groupe prévaut sur le menu d'une machine. Lorsqu'on demande la page de menu d'une machine, il est possible de ne **\*\*pas voir\*\*** la ligne d'en-tête stipulant que la machine fait partie d'un groupe.

Dans ce cas, la machine montre son menu personnalisé, et non celui du groupe. Ce qui peut entraîner une confusion pour l'administrateur.

# FAQ - Agents

# Postes Clients (état & visibilité)

<p class="callout info">**S'applique à: Medulla – Agent  
Version: Toutes   
Environnement: On-Premise / SaaS Privé / SaaS mutualisé  
Categorie: Agent Medulla / support**</p>

##### **Pourquoi certains postes apparaissent hors ligne alors qu’ils sont allumés ?**

- Vérifiez le service medullaagent et medullanetnotify sur les postes hors ligne, si les services sont bien "running" mais que le poste apparait hors ligne sur l'interface (poste grisé) alors merci de prendre contacte avec le service Support ou votre Administrateur.
- Si présence d'erreur dans les logs de l'agent (sur le poste) "C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log", reportez les au service Support ou votre Administrateur.

##### **Pourquoi les inventaires ou informations remontées sont incomplets ou erronés.**

- Assurez vous que l'adresse MAC du poste qui ne remonte pas sont inventaire n'est pas déjà utilisé, pour voir si un poste a des difficultés à remonter son inventaire, il est impossible de déployer sur le poste, même s'il parait en ligne sur l'interface (icone de l'ordinateur bleu), l'icône de déploiement du poste dans les "actions" apparaitra grisé.

# GPO

<p class="callout info">**S'applique à:** Medulla – Agent  
**Version:** Toutes   
**Environnement:** On-Premise / SaaS Privé / SaaS mutualisé  
**Categorie:** Agent Medulla</p>

### Déploiement de l'agent Medulla via GPO

####   
Quelle est la meilleure méthode pour déployer l'agent Medulla sur tous les postes d'un domaine Active Directory ?

  
La méthode recommandée est d'utiliser une **tâche planifiée via Group Policy Preferences (GPP)** avec l'option **"Apply once and do not reapply"**.

  
Cette méthode est :  
\- Compatible avec n'importe quel fichier EXE (pas besoin de MSI)  
\- Exécutée une seule fois par poste  
\- Lancée avec les droits SYSTEM (administrateur)  
\- Officiellement supportée par Microsoft  
\- Fiable et évite les réinstallations répétées

####   
Comment mettre en place cette méthode ?

#####   
Étape 1 : Préparer le fichier d'installation

1\. Copiez l'installeur dans un partage réseau accessible : *(Assurez-vous que le chemin est accessible par "Tout le monde" ou "Ordinateurs du domaine" en lecture).*

> \\\\SERVEUR\\DEPLOIEMENT\\Medulla-Agent-windows-FULL-latest.exe

Créer un script powershell comme ceci :

> $CheminSetup = "\\\\SERVEUR\\DEPLOIEMENT\\Medulla-Agent-windows-FULL-latest.exe"  
> $Arguments = "/S"
> 
> $NomDuService = "medullaagent"
> 
> $ServiceStatus = Get-Service -Name $NomDuService -ErrorAction SilentlyContinue
> 
> if ($ServiceStatus) {  
>  Write-Output "Le service $NomDuService existe déjà. Installation annulée."  
>  Exit 0  
> }
> 
> try {  
>  Start-Process -FilePath $CheminSetup -ArgumentList $Arguments -Wait -NoNewWindow -ErrorAction Stop  
> }  
> catch {  
>  Write-Error "Erreur d'installation : $\_"  
>  Exit 1  
> }

  
2\. Configurez les droits sur le partage :  
\- **Lecture** pour le groupe **Domain Computers**

#####   
Étape 2 : Créer la GPO

  
1\. Ouvrez la console **Group Policy Management**  
2\. Créez une nouvelle GPO, par exemple : `Déploiement Agent Medulla`

#####   
Étape 3 : Configurer la tâche planifiée

1\. Éditez la GPO et naviguez vers :

> Configuration de l'ordinateur  
>  → Préférences  
>  → Panneau de configuration  
>  → Tâches planifiées

2\. Faites un clic droit → **Nouveau** → **Tâche immédiate (au moins Windows 7)**

  
3\. Dans l'onglet **Général** :  
\- Nom : `Installation Agent Medulla`  
\- Compte : **SYSTEM**  
\- Exécuter avec les privilèges les plus élevés

  
4\. Dans l'onglet **Actions** :

- **Action :** Démarrer un programme.
- **Programme/script :** `chemin_install_powerhselle/powershell.exe`
- **Ajouter des arguments :** `-ExecutionPolicy Bypass -File "\\Serveur\Partage\VotreScript.ps1"` *(Assurez-vous que le chemin est accessible par "Tout le monde" ou "Ordinateurs du domaine" en lecture).*

#####   
Étape 4 : Appliquer la GPO

  
1\. Liez la GPO à l'**Unité d'Organisation (OU)** contenant vos postes  
2\. Sur un poste de test, lancez :

> gpupdate /force

  
3\. Redémarrez le poste ou attendez la prochaine mise à jour des stratégies

<p class="callout warning">Attention il est toujours obligatoire pour les postes de redémarrer après l'installation de l'agent, la GPO par défaut ne redémarre pas le poste tout seul. Il faut donc garder en tête que chaque poste doit être redémarré après l'installation de l'agent.</p>

####   
Pourquoi ne pas utiliser un script de démarrage ou de connexion ?

  
Les scripts traditionnels (Startup Script ou Logon Script) présentent plusieurs inconvénients :  
\- Risque d'exécution multiple  
\- Complexité pour détecter si l'installation a déjà été faite  
\- Problèmes de droits selon le contexte d'exécution  
\- Moins fiable que les tâches planifiées GPP

  
La méthode par tâche planifiée GPP résout tous ces problèmes.

####   
Que fait l'option "Apply once and do not reapply" ?

  
Cette option garantit que :  
\- La tâche s'exécute **une seule fois** sur chaque poste  
\- Même si la GPO reste active pendant des années, l'installation ne se relance pas  
\- Pas besoin de script de détection complexe  
\- Pas de réinstallation accidentelle

  
C'est l'équivalent d'un déploiement "fire and forget" (lancer et oublier).

Avec l'option **"Apply once and do not reapply"**, il est impératif de vérifier que l'agent s'est correctement installé. Si l'installation a échoué pendant le processus, elle ne se réexécutera plus.

Vous pouvez ne pas activer cette option (pour prévenir les problèmes d'installations d'agent) **"Apply once and do not reapply"**, mais garder la partie IF dans le script powershell qui vérifie si le service **medullaagent** est présent (par défaut, déjà présent dans le script ci-dessus) :

> if ($ServiceStatus) {  
>  Write-Output "Le service $NomDuService existe déjà. Installation annulée."  
>  Exit 0  
> }


#### Comment vérifier que le déploiement a fonctionné ?

#####   
Sur un poste client :

1\. Vérifiez que la tâche planifiée a été créée :

> Panneau de configuration → Outils d'administration → Planificateur de tâches

Cherchez la tâche `Installation Agent Medulla`

2\. Vérifiez les logs d'installation de l'agent Medulla

3\. Vérifiez que le poste apparaît dans la console Medulla

#####   
Sur le contrôleur de domaine :

  
Utilisez les rapports GPO pour voir quels postes ont appliqué la stratégie.

####   
Puis-je utiliser cette méthode pour mettre à jour l'agent ?

  
Par défaut, l'agent se mets à jour tout seul, mais sinon, oui, mais avec quelques précisions :

  
\- Si vous créez une **nouvelle GPO** avec un nouveau nom de tâche, elle s'exécutera une fois sur tous les postes (si "Apply once" est activé)  
\- Si vous modifiez le chemin du fichier EXE dans la tâche existante avec "Apply once", elle ne se relancera **pas** (c'est l'objectif de cette option)

  
Pour les mises à jour, il est préférable de :  
1\. Créer une nouvelle GPO avec un nouveau nom de tâche pour chaque version majeure  
2\. Ou utiliser le système de mise à jour intégré de Medulla

####   
Quels sont les prérequis ?

  
\- Un contrôleur de domaine Active Directory (Windows Server 2008 R2 ou supérieur)  
\- Un partage réseau accessible en lecture par les postes  
\- L'installeur de l'agent Medulla avec option d'installation silencieuse (`/S`)  
\- Les droits pour créer et lier des GPO

####   
Combien de temps faut-il pour que tous les postes soient déployés ?

  
Le déploiement se fait au rythme de la mise à jour des stratégies de groupe :  
\- Par défaut : toutes les **90 minutes** (avec un décalage aléatoire de 0 à 30 minutes)  
\- Au redémarrage du poste  
\- Avec `gpupdate /force` (immédiat)

  
Pour un déploiement rapide sur un parc de 100 postes, comptez environ **2 à 4 heures** selon l'activité réseau.

#### Exécuter l'installation après l'ouverture d'une session

L'exécution classique d'une GPO se fait avent l'ouverture de session en droit SYSTEM.

Cela peut être gênant pour l'utilisateur, qui peut croire à un blocage de son ordinateur.

##### Solution 1 : La Tâche Planifiée "Au démarrage de la session"

L'utilisateur arrive sur son bureau, et l'installation se lance silencieusement en arrière-plan avec les droits SYSTEM.

1. Dans votre GPO **Ordinateur** (pas utilisateur), allez dans : **Préférences** &gt; **Paramètres du Panneau de configuration** &gt; **Tâches planifiées**.
2. Nouveau &gt; **Tâche planifiée (au moins Windows 7)**.
3. **Onglet Général :**
    
    
    - **Compte d'utilisateur :** `NT AUTHORITY\SYSTEM` (ou tapez juste `SYSTEM`).
    - Cochez **Exécuter avec les autorisations maximales**.
4. **Onglet Déclencheurs (Triggers) :**
    
    
    - Nouveau &gt; **Au démarrage de la session** (At log on).
    - Vous pouvez choisir "N'importe quel utilisateur".
5. **Onglet Actions :**
    
    
    - Programme : `chemin_install_powerhselle/powershell.exe/powershell.exe`
    - Arguments : `-ExecutionPolicy Bypass -File "\\Serveur\Partage\SCRIPT_POWERSHELL.ps1"`

SCRIPT\_POWERSHELL.PS1, correspond au script en début de page qui permet d'installer l'agent silencieusement.

---

##### Solution 2 : L'option "Asynchrone"

Si vous voulez garder votre script actuel (dans "Scripts de démarrage") mais juste arrêter de bloquer l'écran "Veuillez patienter..." :

1. Allez dans la GPO : **Configuration ordinateur** &gt; **Modèles d'administration** &gt; **Système** &gt; **Scripts**.
2. Cherchez le paramètre : **Exécuter les scripts de démarrage de façon asynchrone**.
3. Mettez le sur **Activé**.

Précision : Si vous créez une tâche avec un déclencheur "Au login" et que vous cochez **"Apply once and do not reapply"**, la GPO va créer la tâche une fois, mais **la tâche, elle, restera sur le PC et continuera de se lancer à chaque login.** Assurez vous donc de garder la condition **IF** dans le script qui permet de vérifier la présence du service **medullaagent** (par défaut, déjà présent dans le script ci-dessus) :

> if ($ServiceStatus) {  
>  Write-Output "Le service $NomDuService existe déjà. Installation annulée."  
>  Exit 0  
> }

####   
Ressources complémentaires

  
\- \[Documentation officielle Microsoft sur les Group Policy Preferences\](https://docs.microsoft.com/fr-fr/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn581922(v=ws.11))  
\- \[Documentation de déploiement Medulla\](https://medulla-project.org/)

  
\---

  
**Date de création** : Décembre 2024   
**Auteur** : Documentation Medulla   
**Version** : 1.0

# Reconfigurer mon agent

<p class="callout info">**S'applique à:** Medulla – Agent  
**Version:** Toutes  
**Environnement:** On-Premise / SaaS Privé / SaaS mutualisé  
**Categorie:** Agent Medulla</p>

Vous pouvez reconfigurer l'agent afin de changer le nom DNS avec lequel celui-ci doit communiquer mais il est également possible de modifier plusieurs autre paramètres.

Voici l'emplacement de l'agent sur le serveur :  
`/var/lib/pulse2/clients/`

Vous retrouverez un script nommé : **generate-pulse-agent.sh**. Si vous l'appelez en passant le paramètre **--help**, vous obtiendrez tous les paramètres modifiable :

**./generate-pulse-agent.sh --help**  
Usage:  
./generate-pulse-agent.sh \[--conf-xmppserver=&lt;XMPP configuration server&gt;\]  
 \[--conf-xmppport=&lt;XMPP configuration server port&gt;\]  
 \[--conf-xmpppasswd=&lt;XMPP configuration server password&gt;\]  
 \[--aes-key=&lt;32-character AES PSK&gt;\]  
 \[--xmpp-passwd=&lt;XMPP server password&gt;\]  
 \[--chat-domain=&lt;XMPP domain&gt;\]  
 \[--inventory-tag=&lt;Tag added to the inventory&gt;\]  
 \[--minimal \[--base-url=&lt;URL for downloading agent and dependencies from&gt;\]\]  
 \[--disable-vnc (Disable VNC Server)\]  
 \[--vnc-port=&lt;Default port 5900&gt;\]  
 \[--vnc-password=&lt;DES-encrypted VNC password&gt;\]  
 \[--ssh-port=&lt;Default port 22&gt;\]  
 \[--disable-rdp (Disable RDP setup)\]  
 \[--disable-inventory (Disable Fusion Inventory)\]  
 \[--disable-geoloc (Disable geolocalisation for example on machines which do not access internet)\]  
 \[--linux-distros (Used linux distros)\]  
 \[--updateserver (Download url for the agent updates)\]

##### Exemples :

**XMPP Server**

Pour reconfigurer l'entrée DNS de contact du poste (serveur que doit contacter la machine) :

`./generate-pulse-agent.sh --conf-xmppserver monserver.domaine.fr`

**SSH Port**

Pour modifier le port SSH de contact du serveur :

`./generate-pulse-agent.sh --ssh-port 2022`

Si vous modifier le port SSH, suivez également cette documentation :

[https://docs.medulla-tech.io/books/medulla-faq/draft/497](https://docs.medulla-tech.io/books/medulla-faq/draft/497)

**Désactiver le VNC**

Pour désactiver VNC sur vos agents :

`./generate-pulse-agent.sh --disable-vnc`

**Désactiver le RDP**

Pour désactiver RDP sur vos agents :

`./generate-pulse-agent.sh --disable-rdp`

# Générer les agents Windows et Linux

<p class="callout info">**S’applique à : Medulla – Agents  
Version : Toutes  
Environnement : On-Premise / SaaS Privé / SaaS mutualisé  
Catégorie : Agents / Support**</p>

Avant de générer les agents pour vos postes Windows ou Linux, il est important de définir votre stratégie de rattachement dans GLPI :

- Soit un agent par entité GLPI,
- Soit un agent global, qui remontera toutes les machines dans l’entité mère.

#### Générer un agent par entité

Pour générer un agent distinct par entité GLPI :

`generate_medulla_agent.sh all force`

Vérifiez ensuite que chaque entité dispose bien de son agent :

`ls /var/lib/pulse2/medulla_agent/*`

Chaque entité est associée à un tag. Vous retrouverez un répertoire par tag contenant les agents correspondants.

#### Générer un agent global

Pour générer un agent unique par système d’exploitation (rattachement à l’entité mère GLPI) :

`/var/lib/pulse2/clients/generate-pulse-agent.sh`

Vérifiez ensuite la présence des agents :

`ls /var/lib/pulse2/clients/win/`  
`ls /var/lib/pulse2/clients/lin/`

#### Générer un agent sans inventaire GLPI

<p class="callout warning">Cette option nécessite Medulla et l’agent en version 5.5.2 ou supérieure.</p>

`/var/lib/pulse2/clients/generate-pulse-agent.sh --disable-inventory`

#### Gestion des entités avec un agent global

Si vous utilisez un agent global mais souhaitez répartir les machines dans différentes entités GLPI, deux options sont possibles :

- Déplacer manuellement les machines dans GLPI,
- Mettre en place des règles automatiques dans GLPI (par subnet, nom, ou autres critères).

# Agents Linux distribution MINT

<p class="callout info">**S'applique à:** Medulla – Agent  
**Version:** inferieur à 5.5.1   
**Environnement:** On-Premise / SaaS Privé / SaaS mutualisé  
**Categorie:** Agent Medulla</p>

En version 5.5.1 de Medulla le support de la version linux MINT sera natif.

Pour les versions inférieures à la version 5.5.1 pour pouvoir installer l'agent Medulla sur la distribution linux Mint il suffit de suivre les étapes ci-dessous.

Toute les commandes sont taper en root.

pour ce faire taper : une fois connecté à votre compte utilisateur. Autre méthode ajoutée sudo devant chaque commande.

```
sudo su - 
```

Un mot de passe sera demandé taper le.

Télécharger le script d'installation de l'agent depuis votre poste Linux concerné

```
wget https://serveur/downloads/lin/Medulla-Agent-linux-MINIMAL-latest.sh
```

Taper les commandes suivantes :

```
chmod u+x Medulla-Agent-linux-MINIMAL-latest.sh
```

Modifier le script en ajoutant la section linuxmint aux endroits suivants :

Lignes 50-51 :

```
case "$DISTRO" in
        debian|ubuntu|zorin)
```

Modifier la ligne en ajoutant |linuxmint après zorin.

```
case "$DISTRO" in
        debian|ubuntu|zorin|linuxmint)
```

Ensuite

Lignes 215-216

```
case "$DISTRO" in
    ubuntu|zorin)
```

Modifier la ligne en ajoutant |linuxmint après zorin

```
case "$DISTRO" in
    ubuntu|zorin|linuxmint) 
```

Ajouter après la ligne 63 la commande suivante :

```
apt update
```

Enregistrer votre script.

Lancer la commande d'éxécution du script d'installation :

```
./Medulla-Agent-linux-MINIMAL-latest.sh
```

L'installation va se dérouler et le résultat suivant va apparaître sur votre machine.

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/wgNmi2KrFwyejYfM-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/wgNmi2KrFwyejYfM-image.png)

# Désinstallation de l'agent Medulla (Version avant 5.5.2)

<p class="callout info">**S'applique à:** Medulla – Agent  
**Version:** inferieur à 5.5.2   
**Environnement:** On-Premise / SaaS Privé / SaaS mutualisé  
**Categorie:** Agent Medulla</p>

Pour désinstaller l'agent Medulla :

Cliquer sur menu démarrer de windows puis paramètres

[![Screenshot 2026-04-23 152446.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/bFpwVhHczHefjsTL-screenshot-2026-04-23-152446.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/bFpwVhHczHefjsTL-screenshot-2026-04-23-152446.png)

Aller ensuite dans le menu de gauche de vos paramètres et cliquer sur Applications :

[![Screenshot 2026-04-23 152554.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/vXeWKSmAIbN8eFRD-screenshot-2026-04-23-152554.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/vXeWKSmAIbN8eFRD-screenshot-2026-04-23-152554.png)

Cliquer sur le menu de droite dans Applications installées

descendre dans vos applications pour trouver l'entrée Medulla Agent.

[![Screenshot 2026-04-23 152634.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/2qp4JUCJ2IVMtPRi-screenshot-2026-04-23-152634.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/2qp4JUCJ2IVMtPRi-screenshot-2026-04-23-152634.png)

Cliquer sur [![Screenshot 2026-04-23 152723.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/cXr62stTjDAw9HIf-screenshot-2026-04-23-152723.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/cXr62stTjDAw9HIf-screenshot-2026-04-23-152723.png)un menu déroulant s'ouvre avec Modifier / Désinstaller .

Cliquer sur Désinstaller

une confirmation va vous etre demander recliquer sur le bouton Désinstaller

[![Screenshot 2026-04-23 152755.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/3v2cchLEyXGXQTur-screenshot-2026-04-23-152755.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/3v2cchLEyXGXQTur-screenshot-2026-04-23-152755.png)

L'agent Medulla va desinstaller ses composants au travers d'un executable qui va s'afficher sur votre écran :

[![Screenshot 2026-04-23 152830.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/GlFrI5aD3AXWwqKU-screenshot-2026-04-23-152830.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/GlFrI5aD3AXWwqKU-screenshot-2026-04-23-152830.png)

Une fois la desinstallation complète cliquer ur le bouton Close

[![Screenshot 2026-04-23 152917.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/1GdNp7LKEC4yDAPD-screenshot-2026-04-23-152917.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/1GdNp7LKEC4yDAPD-screenshot-2026-04-23-152917.png)

Dans le menu des applications vous n'aurez plus que ses 2 entrées :

[![Screenshot 2026-04-23 152940.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/6z0UGMFSQVfkpbxu-screenshot-2026-04-23-152940.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/6z0UGMFSQVfkpbxu-screenshot-2026-04-23-152940.png)

Ce sont 2 entrées de base de registre pour les enlever :

Retourner dans le menu démarrer de votre windows.

Taper dans la barre de recherche ***regedit*** et ***entrée***

Descender dans l'arborescence :

HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall

chercher la 1ere clé de registre Medulla Extract Drivers Faites un clic droit sur l'icone de dossier de cette clé et cliquer sur supprimer puis confirmer.

[![Screenshot 2026-04-23 155414.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/scaled-1680-/vX8hGHS9ddy18luv-screenshot-2026-04-23-155414.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-04/vX8hGHS9ddy18luv-screenshot-2026-04-23-155414.png)

Faire la même chose pour Medulla Update Info.

# Désinstallation Agent Medulla Version 5.5.2 et supérieur

<p class="callout info">**S'applique à:** Medulla – Agent  
**Version:** 5.5.2 et ultérieure  
**Environnement:** On-Premise / SaaS Privé / SaaS mutualisé  
**Categorie:** Agent Medulla</p>

### Windows:

##### Option 1 : 

Aller dans la liste des programmes windows et désinstaller l'agent medulla.

##### Option 2 : 

Un script est disponible dans votre serveur Medulla :

[https://votreserveur/downloads/win/uninstall-medulla-agent-windows.ps1](https://votreserveur/downloads/win/uninstall-medulla-agent-windows.ps1)

Ouvrez une console powershell avec les droits administrateur. Assurez-vous que PowerShell est configuré pour exécuter des scripts :

```
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
```

Répondre \[A\] "Yes to all"

<div id="bkmrk-%C3%89tapes-%3A">**Étapes :**</div>1. **Téléchargez le script** uninstall-medulla-agent-windows.ps1 sur la machine.
2. **Exécutez le script** selon les cas que vous voulez gérer :

- Désinstaller l'agent uniquement et ses dépendances Medulla.

```
.\uninstall-medulla-agent.ps1 
```

- Desinstaller l'agent et glpi-agent

```
.\uninstall-medulla-agent.ps1 -RemoveGLPI:$true
```

- Desinstaller l'agent et glpi et tightvnc

```
.\uninstall-medulla-agent.ps1 -RemoveGLPI:$true -RemoveTightVNC:$true
```

- Desinstaller l'agent et glpi-agent et tightvnc et python

```
.\uninstall-medulla-agent.ps1 -RemovePython:$true -RemoveGLPI:$true -RemoveTightVNC:$true
```

Une option est disponible -SILENT qui permet pour chaque cas de lancer la désinstallation en mode Silentieux.

### Linux:

Un script est disponible dans votre serveur Medulla :

[https://votreserveur/downloads/win/uninstall-medulla-agent-linux.sh](https://votreserveur/downloads/win/uninstall-medulla-agent-linux.sh)

Le script s'execute en root ou via les commande sudo :

taper les commandes suivantes:

```
wget https://votreserveur/downloads/win/uninstall-medulla-agent-linux.sh
chmod u+x uninstall-medulla-agent-linux.sh
```

<div id="bkmrk-d%C3%A9sinstallation-de-b"><div>Désinstallation de base (sans Python ni GLPI)</div><div>  
</div></div>```
./uninstall-medulla-agent-linux.sh
```

<div id="bkmrk-avec-python-3.11"><div>  
</div>Avec Python 3.11 <div>  
</div></div>```
./uninstall-medulla-agent-linux.sh --remove-python
```

<div id="bkmrk-avec-glpi-agent"><div>  
</div>Avec GLPI Agent <div>  
</div></div>```
./uninstall-medulla-agent-linux.sh --remove-glpi
```

<div id="bkmrk-tout-supprimer"><div>  
</div>Tout supprimer <div>  
</div></div>```
./uninstall-medulla-agent-linux.sh --remove-python --remove-glpi
```

<div id="bkmrk-"><div>  
</div></div>

# FAQ - Infrastructure Medulla

# Architecture et Déploiement des Serveurs Relais Medulla

Les serveurs relais sont des composants de proximité conçus pour optimiser la distribution des ressources et la communication entre les agents et le serveur principal **Medulla**.

##### 1. Le Relais Classique (LAN / Réseau Privé)

Le relais classique est installé à l'intérieur du réseau de l'entreprise. Son but est de servir de "cache" local et de point de distribution pour les agents situés sur le même site ou le même segment réseau.

- **Fonction :** Optimisation de la bande passante et déploiement d'images (Imaging).
- **Localisation :** Site distant, derrière un routeur ou un lien inter-site.

##### 2. Le Relais DMZ (Exposition Publique)

Le relais DMZ est une passerelle sécurisée entre Internet et le serveur principal Medulla.

- **Fonction :** Permettre la gestion des postes nomades (télétravail, déplacements) sans exposer directement le serveur principal sur Internet.
- **Localisation :** Zone Démilitarisée (DMZ), accessible via une IP publique ou un nom de domaine externe.
- **Note :** Il ne permet pas l'Imaging (Masterisation) à distance via Internet.

##### 3. Sizing (Spécifications Techniques)

Les prérequis matériels sont identiques pour les deux rôles, mais leur fonction logicielle différera lors de la configuration.

**A. Serveur(s) Relais (LAN)**

<table data-path-to-node="14" id="bkmrk-composant-sp%C3%A9cificat" style="width: 100.595%;"><thead><tr><td style="width: 26.1194%;">**Composant**</td><td style="width: 73.8806%;">**Spécification préconisée**</td></tr></thead><tbody><tr><td style="width: 26.1194%;"><span data-path-to-node="14,1,0,0">**OS**</span></td><td style="width: 73.8806%;"><span data-path-to-node="14,1,1,0">Debian 12.x</span></td></tr><tr><td style="width: 26.1194%;"><span data-path-to-node="14,2,0,0">**Architecture**</span></td><td style="width: 73.8806%;"><span data-path-to-node="14,2,1,0">X86-64</span></td></tr><tr><td style="width: 26.1194%;"><span data-path-to-node="14,3,0,0">**CPU**</span></td><td style="width: 73.8806%;"><span data-path-to-node="14,3,1,0">4 cœurs</span></td></tr><tr><td style="width: 26.1194%;"><span data-path-to-node="14,4,0,0">**RAM**</span></td><td style="width: 73.8806%;"><span data-path-to-node="14,4,1,0">8 Go</span></td></tr><tr><td style="width: 26.1194%;"><span data-path-to-node="14,5,0,0">**Partition /**</span></td><td style="width: 73.8806%;"><span data-path-to-node="14,5,1,0">20 Go (EXT4)</span></td></tr><tr><td style="width: 26.1194%;"><span data-path-to-node="14,6,0,0">**Partition /var**</span></td><td style="width: 73.8806%;"><span data-path-to-node="14,6,1,0">≥ 400 Go (XFS) ou point de montage sur baie</span></td></tr></tbody></table>

**B. Serveur Relais DMZ (Postes nomades)**

<table data-path-to-node="16" id="bkmrk-composant-sp%C3%A9cificat-1" style="width: 99.881%;"><thead><tr><td style="width: 26.1337%;">**Composant**</td><td style="width: 73.8663%;">**Spécification préconisée**</td></tr></thead><tbody><tr><td style="width: 26.1337%;"><span data-path-to-node="16,1,0,0">**OS**</span></td><td style="width: 73.8663%;"><span data-path-to-node="16,1,1,0">Debian 12.x</span></td></tr><tr><td style="width: 26.1337%;"><span data-path-to-node="16,2,0,0">**Architecture**</span></td><td style="width: 73.8663%;"><span data-path-to-node="16,2,1,0">X86-64</span></td></tr><tr><td style="width: 26.1337%;"><span data-path-to-node="16,3,0,0">**CPU**</span></td><td style="width: 73.8663%;"><span data-path-to-node="16,3,1,0">4 cœurs</span></td></tr><tr><td style="width: 26.1337%;"><span data-path-to-node="16,4,0,0">**RAM**</span></td><td style="width: 73.8663%;"><span data-path-to-node="16,4,1,0">8 Go</span></td></tr><tr><td style="width: 26.1337%;"><span data-path-to-node="16,5,0,0">**Partition /**</span></td><td style="width: 73.8663%;"><span data-path-to-node="16,5,1,0">20 Go (EXT4)</span></td></tr><tr><td style="width: 26.1337%;"><span data-path-to-node="16,6,0,0">**Partition /var**</span></td><td style="width: 73.8663%;"><span data-path-to-node="16,6,1,0">≥ 200 Go (XFS) ou point de montage sur baie</span></td></tr></tbody></table>

##### <span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 1.4em; font-weight: 400;">4. Synthèse de décision</span>

Ce tableau vous permet de déterminer quel type de serveur déployer selon votre situation :

<table data-path-to-node="21" id="bkmrk-condition-type-de-re"><thead><tr><td>**Condition**</td><td>**Type de Relais nécessaire**</td><td>**Raison principale**</td></tr></thead><tbody><tr><td><span data-path-to-node="21,1,0,0">**Parc &gt; 5 000 postes** sur un même réseau</span></td><td><span data-path-to-node="21,1,1,0">**Relais Classique (LAN)**</span></td><td><span data-path-to-node="21,1,2,0">Réduction de la charge CPU/RAM du serveur principal Medulla.</span></td></tr><tr><td><span data-path-to-node="21,2,0,0">**Site distant** (Réseau différent sans liaison LAN transparente)</span></td><td><span data-path-to-node="21,2,1,0">**Relais Classique (LAN)**</span></td><td><span data-path-to-node="21,2,2,0">Permettre l'Imaging local et économiser la bande passante WAN.</span></td></tr><tr><td><span data-path-to-node="21,3,0,0">**Postes nomades** (Télétravail, hors réseau privé, sans VPN)</span></td><td><span data-path-to-node="21,3,1,0">**Relais DMZ**</span></td><td><span data-path-to-node="21,3,2,0">Assurer la communication des agents via Internet en toute sécurité.</span></td></tr><tr><td><span data-path-to-node="21,4,0,0">**Sites interconnectés** (Liaison privée haut débit, flux LAN autorisés)</span></td><td><span data-path-to-node="21,4,1,0">**Aucun (Optionnel)**</span></td><td><span data-path-to-node="21,4,2,0">Le serveur principal peut piloter l'ensemble, y compris l'Imaging.</span></td></tr></tbody></table>

# Procédure d’ajout de relais à Medulla SaaS-dédié

#### 1. Création du serveur

---

Paramètres requis :

- OS : Debian 12.x
- Architecture : x86-64
- CPU : 4 vCPUs
- RAM : 8 Go
- Stockage
- / : 20 Go – EXT4
- /var : ≥ 400 Go – XFS (Ou un point de montage dédié sur une baie / volume externe)

#### 2. Création d'un utilisateur

---

Créer l’utilisateur "medulla" et lui donner les droits sudoers.

#### 3. Installation de la clé SSH

---

La clé publique SSH fournie en pièce jointe, doit être ajoutée dans :

```
/home/medulla/.ssh/authorized_keys

```

#### 4. Ouverture des flux réseaux

---

Les flux doivent être ouverts dans les deux sens entre :

- Serveur Medulla
- Relais (votre serveur)

##### 4.1. Flux Serveur Medulla → Relais

**Port | Description**

- 5269 | TCP / XMXPP
- 22 | TCP / SSH
- 22000 | TCP / Syncthing
- 8081 | TCP / HTTP(S)
- 9990 | TCP / XML RPC HTTPS

##### 4.2. Flux Relais → Serveur Medulla

**Port | Description**

- 5269 | TCP / XMXPP
- 22 | TCP / SSH
- 22000 | TCP / Syncthing
- 8443 | TCP / HTTPS
- 22067 | TCP / BEP-Relay/TLS
- 9999 | TCP / XML RPC/HTTPS
- 7080 | TCP / XML RPC/HTTPS

#### 5. Informations à nous transmettre

---

<span style="color: rgb(224, 62, 45);">**L’équipe doit nous fournir :**</span>

- <span style="color: rgb(224, 62, 45);">Créer l'entité que vous souhaitez dédié au relai dans ITSM (seulement si vous souhaitez une entité différente de l'entité mère).</span>
- <span style="color: rgb(224, 62, 45);">Confirmation de l’ouverture des flux réseau ci-dessus.</span>
- <span style="color: rgb(224, 62, 45);">Confirmation de l'ajout de la clé SSH sur le serveur relais.</span>
- <span style="color: rgb(224, 62, 45);">Le mot de passe de l'utilisateur "medulla" avec des droits sudo sans mot de passe.</span>
- <span style="color: rgb(224, 62, 45);">Le FQDN de votre serveur relai</span>

#### 6. Suite de l’installation

---

Une fois la machine prête, nous réaliserons l’installation logicielle complète via Ansible.

Un agent Medulla sera généré automatiquement pour connecter les postes à ce relai.

# Mise à Jour Medulla - 5.4.x vers 5.5.x

<p class="callout info">Medulla / 5.4.x / Update Medulla vers 5.5.x / Maintenance Medulla</p>

Pour mettre à jour de la version 5.4.X vers 5.5.x et supérieur veuillez suivre les étapes ci-dessous :

<span style="font-size: 11pt; font-family: Aptos, sans-serif;"><span style="font-size: 11pt; font-family: Aptos, sans-serif;">Télécharger le fichier sur le serveur medulla :</span></span>

```bash
curl https://dl.medulla-tech.io/up/update_medulla.sh
```

<span style="font-size: 11pt; font-family: Aptos, sans-serif;"><span style="font-size: 11pt; font-family: Aptos, sans-serif;">Donner les droits d’execution au script : </span></span>

```
chmod +x update_medulla.sh
```

<span style="font-size: 11pt;">Executer l'update : </span>

```
./update_medulla.sh
```

Une fois la procédure effectué retourner sur l'interface de medulla.

<p class="callout warning">Toutes les commandes sonta effectués en root ou avec un compte ayant les droits d'administrateur.</p>

# Support Extranet

Si vous souhaitez créer un compte support pour vous ou un de vos collaborateur en ayant souscrit à un contrat support Medulla, rien de plus simple, rendez vous sur [https://extranet.medulla-tech.io/portal/](https://extranet.medulla-tech.io/portal/)

Cliquez sur "Mot de passe oublié ?" et renseignez votre email ainsi que votre nom d'utilisateur (Prénom + Nom).

[![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/scaled-1680-/Y0tg49HCpcLFipOh-image.png)](https://docs.medulla-tech.io/uploads/images/gallery/2025-12/Y0tg49HCpcLFipOh-image.png)

# Fail2ban

### Qu'est-ce que Fail2Ban ?

Fail2Ban est un outil de prévention contre les intrusions qui surveille les tentatives de connexion suspectes dans les journaux système (logs) qui peut être apporté à votre infrastructure on-premise.

### Que bloque-t-il exactement ?

Fail2Ban protège principalement contre les attaques de type **"Brute Force"** (force brute).

Pour décider si une activité est malveillante, Fail2Ban analyse les tentatives de connexion et repère des motifs spécifiques. Voici les erreurs courantes qui déclenchent une alerte et un bannissement :

- - **`Invalid user` (Utilisateur inexistant) :** Quelqu'un essaie de se connecter avec des noms au hasard (ex: `admin`, `root`, `test`, `guest`). C'est le signe typique d'un robot qui teste des dictionnaires de noms.
    - **`Wrong password` (Mauvais mot de passe) :** Un utilisateur connu existe, mais le mot de passe saisi est incorrect. Trop de tentatives indiquent une attaque par force brute.
    - **`Authentication failure` (Échec d'authentification) :** Une erreur générale qui survient lorsque les identifiants fournis ne correspondent à rien dans la base de données sécurisée du serveur.
    - **`Failed public key authentication` (Échec de clé SSH) :** Même si vous utilisez des clés de sécurité (plus sûres que les mots de passe), Fail2Ban bloque ceux qui tentent de présenter des clés non autorisées à répétition.

Si une IP génère 5 echecs dans une fenetre de 10 min, elle est bannie pour 10 minutes

# Installation OS debian pour serveur Medulla

##### Caractéristiques techniques

<div id="bkmrk-pr%C3%A9-requis-%E2%80%93-dimensi" style="text-align:center;"><table class="MsoNormalTable" style="width:643px;border-collapse:collapse;"><tbody><tr><td colspan="3" style="width:417.3pt;border:solid #999999 1pt;background:#99CC66;padding:2.75pt 2.75pt 2.75pt 2.75pt;">**<span style="font-size:11pt;font-family:FreeSans;color:#ffffff;">Pré-requis – Dimensionnement des serveurs</span>**

</td></tr><tr><td rowspan="6" style="width:81.95pt;border-top:none;border-left:solid #999999 1pt;border-bottom:solid #999999 1pt;border-right:none;background:#99CC66;padding:2.75pt 2.75pt 2.75pt 2.75pt;">**<span style="font-size:11pt;font-family:FreeSans;color:#ffffff;">Serveur Principal </span>**

</td><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">OS</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">Debian 12.x</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">Architecture</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">X86-64</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">CPU</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">8 coeurs</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">RAM</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">8 Go</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">Partition /</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">20 Go en EXT4</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">Partition /var</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">400 GB minimum en XFS ou point de montage sur une baie de stockage</span>

</td></tr><tr><td rowspan="6" style="width:81.95pt;border-top:none;border-left:solid #999999 1pt;border-bottom:solid #999999 1pt;border-right:none;background:#99CC66;padding:2.75pt 2.75pt 2.75pt 2.75pt;">**<span style="font-size:11pt;font-family:FreeSans;color:#ffffff;">Serveurs relais multi-site</span>**

**<span style="font-size:11pt;font-family:FreeSans;color:#808080;">(si applicable)</span>**

</td><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">OS</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">Debian 12.x</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">Architecture</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">X86-64</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">CPU</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">4 coeurs</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">RAM</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">8 Go</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">Partition /</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">20 Go en EXT4</span>

</td></tr><tr><td style="width:155.4pt;border:solid #999999 1pt;border-top:none;padding:2.75pt 2.75pt 2.75pt 2.75pt;"><span style="font-family:'Liberation Serif', serif;">Partition /var</span>

</td><td style="width:179.95pt;border-top:none;border-left:none;border-bottom:solid #999999 1pt;border-right:solid #999999 1pt;padding:0cm 0.5pt 0cm 0.5pt;"><span style="font-family:'Liberation Serif', serif;">400 GB minimum en XFS ou point de montage sur une baie de stockage</span>

</td></tr></tbody></table>

</div>##### Installation du serveur Debian

Résumé :

-<span style="font:7pt 'Times New Roman';"> </span>Ne séparer que le /var de / et les mettre en LVM

-<span style="font:7pt 'Times New Roman';"> </span>Installer le serveur SSH et les Utilitaires système standard

-<span style="font:7pt 'Times New Roman';"> </span>Ne pas installer d’antivirus ni de firewall

-<span style="font:7pt 'Times New Roman';"> </span>Définir un compte qui

<span style="font-family:'Courier New';">o<span style="font:7pt 'Times New Roman';"> </span></span>puisse passer en sudo sans mot de passe

<span style="font-family:'Courier New';">o<span style="font:7pt 'Times New Roman';"> </span></span>puisse se connecter depuis l’IP **94.130.207.190**

<span style="font-family:'Courier New';">o<span style="font:7pt 'Times New Roman';"> </span></span>puisse se connecter avec la clé suivante :

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCScgwfwJKM5BtgzAYu6FEeJ5jW3onkzFp8D8piLR22kWbRcT/AJ1z0jhS5ZDtn6mumfidVPFbLkDf382u54pOU6JGwy9GhvEIXOSlzgxZMH5kcfeBE/8Ovr9zLtbRKsWQN9YUSt5y6lmcSxuQNVhkRy49/593oamVJACSitSVJ68716hj0gp4N8gUMVkvNgEBDZVSPe0DXz2h7JEzOKx2ejjRaw22ve+qARTw+60gMP0aCLGt/m0cyv+90AZigQwWIPcUk+bBRJn3Ku+Bkw+JuLYURlVc4xoTvT1JTWKXAzMln4nrlisIc9Ex5eEHSkvs/fgJCgU28Fza5n5mBj/pbQRY+/AWLjvBVuLiVReO7hq60fhrX9+j7MWMCYCZQiHbk/r7OprLyl2yGFX1DbgRGF1Sk2R9DtqRhwPzPxtQ7ZtKSjIhLjrZxJ/YJLHSoUsw+4CHprjzU0gXBt1RCQoyhYqEGcnuFyfd9dIBXCINkmp4jfz7CQjrC8uPqAtS1zQU= support@support

##### Configuration du partitionnement des disques

Partitionner les disques suivant les instructions ci-dessous :

Effectuer un partitionnement manuel

![RXi6qfZ9PswkCuWM-embedded-image-k3kebzpb.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/RXi6qfZ9PswkCuWM-embedded-image-k3kebzpb.png)

![8te0UWcUdspzZBMb-embedded-image-ympc4spb.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/8te0UWcUdspzZBMb-embedded-image-ympc4spb.png)

![VmC09oQIVFslMAOG-embedded-image-qvsjgdgq.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/VmC09oQIVFslMAOG-embedded-image-qvsjgdgq.png)

Création de la partition /boot

![IwEnXmeZzAnsDTC7-embedded-image-w4xke79q.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/IwEnXmeZzAnsDTC7-embedded-image-w4xke79q.png)

![TV5wT18WD9OYAcqi-embedded-image-dwbr5kuq.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/TV5wT18WD9OYAcqi-embedded-image-dwbr5kuq.png)

![0qRqYiNJCdllwSJ9-embedded-image-qgdzniyl.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/0qRqYiNJCdllwSJ9-embedded-image-qgdzniyl.png)

![KINj9qRDPfRiYZqh-embedded-image-lxe8vm2c.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/KINj9qRDPfRiYZqh-embedded-image-lxe8vm2c.png)

![QTGvfLswyCwFcQx5-embedded-image-ogg9lntv.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/QTGvfLswyCwFcQx5-embedded-image-ogg9lntv.png)

**![gTD9G2rs5dtUG0r5-embedded-image-kwrl6wtl.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/gTD9G2rs5dtUG0r5-embedded-image-kwrl6wtl.png)**

Création du LVM

![Hdz8G7I7yGDXCNMs-embedded-image-rmqzlrgh.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/Hdz8G7I7yGDXCNMs-embedded-image-rmqzlrgh.png)

![yMZHBmMiH2vXFpfy-embedded-image-5sakjhab.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/yMZHBmMiH2vXFpfy-embedded-image-5sakjhab.png)

![ZLmjvxT9xxd4XlQB-embedded-image-ah2je5fw.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/ZLmjvxT9xxd4XlQB-embedded-image-ah2je5fw.png)

![efACs6NK7Gbp3yNK-embedded-image-iksbohcj.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/efACs6NK7Gbp3yNK-embedded-image-iksbohcj.png)

![navXOvvK11MzaJFx-embedded-image-dt6vkkmg.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/navXOvvK11MzaJFx-embedded-image-dt6vkkmg.png)

![xujPjspeZkZypAVT-embedded-image-fzhrvved.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/xujPjspeZkZypAVT-embedded-image-fzhrvved.png)

![UAzAjpCcJyNLYOmb-embedded-image-sbnedsji.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/UAzAjpCcJyNLYOmb-embedded-image-sbnedsji.png)

Création du volume group vg

![DYQK1prhJbIJVCL2-embedded-image-dpriouo9.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/DYQK1prhJbIJVCL2-embedded-image-dpriouo9.png)

![FrJtSW6vic2PpAbj-embedded-image-ratkesnt.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/FrJtSW6vic2PpAbj-embedded-image-ratkesnt.png)

![qeCGGIlWZ2t77JeH-embedded-image-guaasj24.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/qeCGGIlWZ2t77JeH-embedded-image-guaasj24.png)

Création du volume logique lvroot

![oNaJ3t4UQqkEJ7Ez-embedded-image-hu8ybn2n.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/oNaJ3t4UQqkEJ7Ez-embedded-image-hu8ybn2n.png)

![cYmQl6BuhZPZp7fF-embedded-image-wo63hn3s.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/cYmQl6BuhZPZp7fF-embedded-image-wo63hn3s.png)

![peBSVAHNJOnmb1II-embedded-image-cchq1b6n.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/peBSVAHNJOnmb1II-embedded-image-cchq1b6n.png)

![vROib7ewmIUJYcuA-embedded-image-glmzrnrc.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/vROib7ewmIUJYcuA-embedded-image-glmzrnrc.png)

Répéter pour les volumes lvswap et lvvar

![DquKSa2Mtlq0gG5R-embedded-image-snhvcaj6.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/DquKSa2Mtlq0gG5R-embedded-image-snhvcaj6.png)

![KZcKrmFHAJpUMTLP-embedded-image-ntgqhdgq.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/KZcKrmFHAJpUMTLP-embedded-image-ntgqhdgq.png)

![uYVhoMDThRZGqQR6-embedded-image-jkza0twt.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/uYVhoMDThRZGqQR6-embedded-image-jkza0twt.png)

![AEJKbB4FLVGOYwZK-embedded-image-93rhaz1w.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/AEJKbB4FLVGOYwZK-embedded-image-93rhaz1w.png)

Pour obtenir le schéma LVM suivant :

![wiN6RiAoqlWTTpO7-embedded-image-tjy0unp9.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/wiN6RiAoqlWTTpO7-embedded-image-tjy0unp9.png)

![IyN684C1YqNlTixG-embedded-image-tlhdjfw0.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/IyN684C1YqNlTixG-embedded-image-tlhdjfw0.png)

Configurer la partition /

![5KxhfcV0spUh97la-embedded-image-rjjlj3ry.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/5KxhfcV0spUh97la-embedded-image-rjjlj3ry.png)

![z4trMBsNo0krFnQQ-embedded-image-zmal04r3.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/z4trMBsNo0krFnQQ-embedded-image-zmal04r3.png)

Répéter pour chacune des partitions swap et /var :

![X6XNDXKhchm0A1Nx-embedded-image-ubsfnaop.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/X6XNDXKhchm0A1Nx-embedded-image-ubsfnaop.png)

![BkApQxifsvygZxQL-embedded-image-3hqodqtd.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/BkApQxifsvygZxQL-embedded-image-3hqodqtd.png)

Pour obtenir le schéma de partitionnement suivant :

![E0KfH5OcMAkGBumZ-embedded-image-ugnmmpfl.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/E0KfH5OcMAkGBumZ-embedded-image-ugnmmpfl.png)

##### Installation des paquets

![ZdgL7U9FlIpckFMo-embedded-image-4c0bkbzl.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/ZdgL7U9FlIpckFMo-embedded-image-4c0bkbzl.png)

<span lang="en-us"> </span>

<span lang="en-us"> </span>

##### <span lang="en-us">Vérification du serveur</span>

1.<span style="font:7pt 'Times New Roman';"> </span>Récupérer le script de verification depuis [https://dl.medulla-tech.io/nc/check\_server\_before\_install.sh](https://dl.medulla-tech.io/nc/check_server_before_install.sh)

```
wget https://dl.medulla-tech.io/nc/check_server_before_install.sh
```

2.<span style="font:7pt 'Times New Roman';"> </span>Lancer les commandes suivantes :

```
chmod +x check_server_before_install.sh

./check_server_before_install.sh
```

3.<span style="font:7pt 'Times New Roman';"> </span>

Tous les tests du script doivent être OK, une fois fait, vous pouvez récupérer le script d'installation via le formulaire de contact :

[https://github.com/medulla-tech/medulla/blob/master/README.fr.md](https://github.com/medulla-tech/medulla/blob/master/README.fr.md)

Si vous possédez un contrat de support, merci d'envoyer le résultat à delivery@medulla-tech.io. Si ce n'est pas le cas, merci de vous rapprocher du service "vente" depuis notre site [medulla-tech.io](https://docs.medulla-tech.io/medulla-tech.io).

Voici les erreurs les plus courantes :

##### 1. Limites de Core Dump (limits)

**Contexte :** Le fichier `/etc/security/limits.d/10-coredump-debian.conf` définit la taille maximale des fichiers "core dump". Notre script attend des valeurs spécifiques qui ne correspondent pas à la configuration actuelle.

**Comment corriger :** Modifiez le fichier mentionné pour correspondre aux attentes.

1. Ouvrez le fichier : `sudo nano /etc/security/limits.d/10-coredump-debian.conf`
2. Ajustez les lignes pour qu'elles ressemblent à ceci :
    
    
    - `* hard core infinity`
    - `root hard core infinity`
    - `* soft core 0`
    - `root soft core 0`

**Sources suggérées :** Documentation Debian sur `limits.conf` et `core dump`.

---

##### 2. Nombre de fichiers ouverts (lsof)

**Contexte :** Les lignes `lsof` pour les utilisateurs <span style="text-decoration:underline;">xxx</span>, et `messagebus` indiquent que le nombre de fichiers ouverts actuellement s'écarte de la valeur attendue par le script de vérification (souvent parce que des services tournent déjà ou sont mal configurés).

**Comment corriger :** C'est souvent informatif, mais si vous devez réduire ces chiffres :

- Identifiez ce que font ces utilisateurs : `ps -u chiffre_utilisateur_en_erreur`.
- Redémarrez les services associés (ex: `sudo systemctl restart dbus` pour messagebus).
- Si les valeurs attendues sont trop strictes pour votre usage, il faudra peut-être ajuster le script de vérification lui-même ou les limites `ulimit` globales.

**Sources suggérées :** Manuel de `lsof` et gestion des descripteurs de fichiers sous Linux.

---

##### 3. Paramètres systemd (NPROC et SIGPENDING)

**Contexte :** Les valeurs `DefaultLimitNPROC` (nombre max de processus) et `DefaultLimitSIGPENDING` (signaux en attente) doivent être de **31541**.

**Comment corriger :** Il faut forcer ces valeurs dans la configuration globale de systemd pour qu'elles correspondent exactement à l'attendu.

1. Modifiez le fichier de configuration : `sudo nano /etc/systemd/system.conf`
2. Décommentez ou ajoutez les lignes suivantes :
    
    
    - `DefaultLimitNPROC=31541`
    - `DefaultLimitSIGPENDING=31541`
3. Rechargez la configuration et redémarrez (ou utilisez `systemctl daemon-reexec`).

**Sources suggérées :** Documentation `systemd-system.conf` sur freedesktop.org.

# Verifier que l'inventaire remonte bien dans Medulla

<div id="bkmrk-v%C3%A9rifications-%C3%A0-effe">**Vérifications à effectuer sur le poste client (machine concernée)**   
</div><div id="bkmrk-1%29-v%C3%A9rifier-si-l%E2%80%99inv">**1) Vérifier si l’inventaire est bien généré**  
Merci d’exécuter :</div>```
dir c:\progra~1\medulla\tmp\inventory.txt*
```

<div id="bkmrk-si-aucun-fichier%C2%A0inv">Si aucun fichier **inventory.txt** ou **inventory.txt.back** n’est présent, cela indique un problème de génération de l’inventaire.  
  
</div><div id="bkmrk-2%29-forcer-la-g%C3%A9n%C3%A9rat">**2) Forcer la génération de l’inventaire**  
Si l’inventaire n’est pas généré automatiquement, merci de lancer :</div>```
"c:\progra~1\GLPI-Agent\glpi-agent.bat" --config=none --scan-profiles --backend-collect-timeout=120 --local="c:\progra~1\Medulla\tmp\inventory.txt"
```

<div id="bkmrk-cette-commande-retou">Cette commande retournera une erreur explicite si la génération échoue.  
=&gt; Soit vous voyez comment résoudre l'erreur soit vous envoyez le résultat de la commande à <support@medulla-tech.io>  
  
</div><div id="bkmrk-v%C3%A9rifications-%C3%A0-effe-1">**Vérifications à effectuer sur le serveur Medulla**   
</div><div id="bkmrk-3%29-v%C3%A9rifier-l%E2%80%99url-de">**3) Vérifier l’URL de transmission de l’inventaire vers GLPI**  
Merci d’exécuter :</div>```
curl $(crudini --get /etc/pulse-xmpp-agent-substitute/agent_master_substitute_inv.ini.local glpi url_to_forward)
```

<div id="bkmrk-une-erreur-ici-indiq">Une erreur ici indiquerait un problème de configuration ou d’accessibilité de l’URL.  
=&gt; Soit vous voyez comment résoudre l'erreur soit vous envoyez le résultat de la commande à <support@medulla-tech.io>  
  
</div><div id="bkmrk-4%29-v%C3%A9rifier-si-la-ma">**4) Vérifier si la machine est bien enregistrée dans GLPI**  
Merci d’exécuter (en remplaçant le nom si besoin) :</div>```
mysql --defaults-group-suffix=itsm glpi -e "SELECT * FROM glpi_computers WHERE name='NOM_POSTE_CLIENT'\G"
```

<div id="bkmrk-si-la-requ%C3%AAte-ne-ret">Si la requête ne retourne aucun résultat, la machine n’a pas été enregistrée dans GLPI.  
=&gt; Depuis Medulla forcer une demande d'inventaire depuis la vue Ordinateurs &gt; Quick Action &gt; Run Inventory pour la machine concernée  
  
</div><div id="bkmrk-5%29-v%C3%A9rifier-l%E2%80%99%C3%A9tat-d">**5) Vérifier l’état de la machine dans la base Medulla**  
Merci d’exécuter :</div>```
mysql --defaults-group-suffix=medulla xmppmaster -e "SELECT jid, hostname, id_glpi, enabled FROM machines WHERE hostname='NOM_POSTE_CLIENT'\G"
```

<div id="bkmrk-si-le-champ%C2%A0id_glpi%C2%A0">Si le champ **id\_glpi** est vide, cela signifie que l’association entre Medulla et l’inventaire GLPI n’a pas pu être réalisée.  
=&gt; Depuis Medulla forcer un réenregistrement de la machine depuis la vue Ordinateurs &gt; Quick Action &gt; Custom command Reconfigure machine agent  
  
=&gt; Si ce n'est toujours pas résolu, envoyez le résultat de toutes les commandes à <support@medulla-tech.io></div>

# Vérification Prise en main à distance

##### Workflow

<div id="bkmrk-">[![Workflow Remote desktop.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/scaled-1680-/eKNn3kxRPTvWSJ3E-workflow-remote-desktop.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/eKNn3kxRPTvWSJ3E-workflow-remote-desktop.png)</div># Logs

- /var/log/apache2/\*.log
- /var/log/mmc/mmc-agent.log
- /var/log/pulse/xmpp-agent-relay.log
- /var/log/mmc/master-mast.log
- C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log
- /var/log/tomcat9/\*.log
- /var/log/tomcat9/\*.txt
- journalctl -u guacd -f

# Opérations de debug

- Lister les connexions guacamole enregistrées pour une machine:

```
USE xmppmaster;
SELECT jid,
    hostname,
    machine_id,
    idguacamole,
    protocol
FROM machines
JOIN has_guacamole
ON machines.id = has_guacamole.machine_id
WHERE jid like '%nom_machine%';
```

<div id="bkmrk-si-la-connexion-n%27ex">Si la connexion n'existe pas, relancer un enregistrement de la machine  
Si après un re-enregistrement toujours pas de connexion, vérifier que les protocoles sont bien activés sur la machine (VNC lancé, RDP activé, démon OpenSSH lancé).</div>- Afficher le détail d'une connexion (se fait sur le relais de la machine)

```
USE guacamole;
SELECT guacamole_connection.protocol as protocol,
    guacamole_connection.connection_id as connection_id, 
    parameter_name, 
    parameter_value
FROM guacamole_connection_parameter 
JOIN guacamole_connection 
ON guacamole_connection_parameter.connection_id = guacamole_connection.connection_id 
where guacamole_connection.connection_id = 6084964;
```

<div id="bkmrk--1">  
</div>```
+----------+---------------+-----------------+-----------------+
| protocol | connection_id | parameter_name  | parameter_value |
+----------+---------------+-----------------+-----------------+
| vnc      |       6084964 | color-depth     | 24              |
| vnc      |       6084964 | hostname        | localhost       |
| vnc      |       6084964 | listen-timeout  | 50000           |
| vnc      |       6084964 | port            | 47749           |
| vnc      |       6084964 | reverse-connect | true            |
+----------+---------------+-----------------+-----------------+
```

- Vérification du reverse

<div id="bkmrk-s%27il-y-a-un-reverse-">S'il y a un reverse qui est fait (hostname = localhost), vérifier l'établissement de la connexion en faisant</div>```
netstat -vatpn | grep <port>
```

<div id="bkmrk-si-aucune-ligne-n%27es">Si aucune ligne n'est affichée, il va falloir debugguer le reversessh  
[SUPPORT - Reverse SSH - Support](https://3.basecamp.com/4759565/buckets/18059611/messages/9187346291)</div><div id="bkmrk--2">  
</div>- Debug du VNC

<div id="bkmrk-sur-la-machine-clien">Sur la machine cliente vérifier que le serveur VNC est en écoute:</div>```
netstat -an | find "5500"
```

<div id="bkmrk-si-ce-n%27est-pas-le-c">Si ce n'est pas le cas, vérifier l'exécution de TightVNC  
Sur la machine cliente vérifier que le reverse ssh soit bien fait:</div>```
netstat | find "ssh"
```

<div id="bkmrk-sur-le-relais-v%C3%A9rifi">Sur le relais vérifier que le reverse ssh soit bien établi:</div>```
netstat -vatpn |grep sshd
```

<div id="bkmrk-attention-le-reverse">Attention le reverse s'établit sur un port aléatoire.  
Il y a ensuite une redirection du port de guacd sur le serveur vers le port 5500 dans le tunnel. Cette redirection est faite lors du montage du reverse.  
cf debug du reversessh plus haut  
Sur le relais vérifier que guacd soit bien en écoute sur le port indiqué par les paramètres guacamole (ici 54775):</div>```
netstat -vatpn |grep guacd
```

# Vérification Reverse SSH

##### Logs

- /var/log/pulse/xmpp-agent-relay.log
- /var/log/mmc/master-mast.log
- C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log

##### Opérations de debug

<div id="bkmrk-sur-le-client">**Sur le client**</div><div id="bkmrk-l%27%C3%A9tablissement-du-r">L'établissement du reversessh depuis les clients se fait via les scripts</div>- Linux: /var/lib/pulse2/reversessh.sh
- Windows: c:\\Program files\\Medulla\\bin\\reversessh.ps1

<div id="bkmrk-sur-linux%2C-il-est-po">Sur Linux, il est possible de lancer ce scripts manuellement pour tester l'établissement du tunnel. Se reporter à ces scripts pour trouver le numéro du port utilisé. eg:</div>```
/usr/bin/ssh -t -t -R <strong>51891</strong>:localhost:22 -o StrictHostKeyChecking=no -i "/var/li
b/pulse2/.ssh/id_rsa" -l reversessh 192.168.2.15 -p 22
```

<div id="bkmrk-sur-windows%2C-il-faut">Sur Windows, il faut impérativement passer par la console MMC pour avoir du debug en faisant un déploiement. Pour ce faire, il faut arrêter le service OpenSSH depuis une console XMPP pour forcer l'établissement du reversessh:</div>```
sc stop sshdaemon
```

[![image (10).png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/scaled-1680-/gpea54rxjPat4PvG-image-10.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/gpea54rxjPat4PvG-image-10.png)

Lancer un déploiement. Dans la vue audit le résultat de l'établissement du reversessh sera affiché:

[![image (11).png](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/scaled-1680-/oJ456tnlibEHmwft-image-11.png)](https://docs.medulla-tech.io/uploads/images/gallery/2026-01/oJ456tnlibEHmwft-image-11.png)

<span style="text-decoration:underline;"><span style="color:rgb(0,0,0);text-decoration:underline;">**Si le tunnel ne s'établit pas, c'est soit un problème de port ou un problème de clés**</span></span>

<div id="bkmrk-sur-le-relais">**Sur le relais**</div><div id="bkmrk-le-script-suivant-pe">Le script suivant permet de tester l'établissement du reverse sur les ARS sur le port défini (cf. ci-dessus):</div>```
#!/bin/bash
echo "port $1"
echo "reverse exist"
netstat -an | egrep "tcp.*:$1.*LISTEN"
echo "reverse using"
netstat -an | egrep "tcp.*:$1.*ESTABLISHED"
echo "pid reverse"
lsof -t -i :$1 -s tcp:LISTEN
```

<div id="bkmrk-on-peut-voir-les-pro">On peut voir les process du reversessh avec:</div>```
ps aux | grep ssh
```

<div id="bkmrk-root%C2%A0-%C2%A0-%C2%A0-2267%C2%A0-0.0%C2%A0">root 2267 0.0 0.1 95184 6860 ? Ss 15:26 0:00 sshd: reversessh [priv]  
reverse+ 2280 0.0 0.0 95184 3868 ? S 15:26 0:00 sshd: reversessh@pts/7  
  
sur windows:</div>```
tasklist | findstr ssh
```

<div id="bkmrk--2"></div>

# Imaging - Davos Debug

<div id="bkmrk-lancer-davos-puis-fa">Lancer Davos puis faire CTRL+C  
  
A partir d'ici 2 possibilités: Connexion locale ou SSH</div><div id="bkmrk-connexion-locale%3A">  
Connexion locale:</div>```
# dans la console davos
sudo su
dpkg-reconfigure keyboard-configuration
systemctl restart keyboard-setup
python3
```

<div id="bkmrk-connexion-ssh%3Ad%27abor">  
Connexion SSH:  
D'abord récupérer l'IP de la machine ensuite depuis le serveur relais:</div>```
ssh user@<IP>
```

<div id="bkmrk-%C2%A0mot-de-passe%3A-live"> Mot de passe: live</div>```
sudo su
python3
```

<div id="bkmrk-">  
</div>- Pour enregistrer la machine:

```
from davos import davosManager
from davos.inventory import Inventory

davos = davosManager()
inv = Inventory(davos)
#
# Entrer le hostname dans l'input
# ça enverra le xml à pulse2-register-pxe
```

<div id="bkmrk--1">  
</div>```
print("mac address: {}".format(inv.macaddress))
print("ip address: {}".format(inv.ipaddress))
print("netmask: {}".format(inv.netmask))
print("disk : {}".format(inv.disk)) 
```

<div id="bkmrk--2">  
</div>```
# L'inventaire (non modifié) est dans :
less /tmp/inventory.xml
# il doit manquer un / entre tmp et macaddress ce qui fait que le fichier est généré dans /
/tmp<macaddress.xml
```

<div id="bkmrk--3">  
</div>- Pour debugguer la sauvegarde

```
from davos import davosManager
from davos.image_saver import imageSaver

davos = davosManager()
saver = imageSaver(davos)
saver.start()
```

<div id="bkmrk-enregistrer-la-sauve">Enregistrer la sauvegarde:</div>```
saver.imaging_api.imageDone(saver.manager.mac, saver.image_uuid)
```

<div id="bkmrk--4">  
</div>- Pour debugguer le restore:

```
from davos import davosManager
from davos.image_restorer import imageRestorer

davos = davosManager()
img = imageRestorer(davos, "unicast") 
```

<div id="bkmrk-pour-lancer-une-rest">Pour lancer une restoration compète:</div>```
img.start()
```

<div id="bkmrk-pour-lancer-uniqueme">Pour lancer uniquement les post-installs</div>```
img.run_postimaging()
```

<div id="bkmrk-les-logs-de-davos-so">Les logs de davos sont dans:  
</div>```
/var/log/davos.log
/var/log/davos_restorer.log
```

<div id="bkmrk-les-logs-des-postins">  
Les logs des postinstalls sont dans:  
</div>```
/tmp/postinst.xxx.log
```

<div id="bkmrk-les-postinstalls-son">  
Les postinstalls sont dans /imaging_server/masters/&lt;uuid_du_master&gt;/postinst.d/  
 uuid_du_master est récupérable depuis la table imaging.Image dans la base de données.</div>

# Imaging - Debug

<div id="bkmrk-1.-r%C3%A9cup%C3%A9ration-du-b">1. Récupération du boot</div><div id="bkmrk-passer-le-tftp-en-ve">  
Passer le tftp en verbose:  
Dans /etc/default/tftpd-hpa ajouter -v au paramètre TFTP_OPTIONS et redémarer le service tftpd-hpa  
Dans les logs de tftp (/var/log/syslog ou journalctl --unit tftpd-hpa --follow) repérer ces lignes:</div>```
in.tftpd[491332]: RRQ from 10.104.108.113 filename bootloader-uefi64/ipxe.efi
in.tftpd[491333]: RRQ from 10.104.108.113 filename bootloader-uefi64/autoexec.ipxe
```

<div id="bkmrk-si-ces-lignes-n%27exis">Si ces lignes n'existent pas, il s'agit d'un problème DHCP  
  
Pour debuguer le TFTP, capturer les trames:</div>```
tcpdump -s 0 host <IP_DU_CLIENT> and udp
```

<div id="bkmrk-pour-tester-une-conn">Pour tester une connexion tftp: </div>```
tftp <IP_DU_SERVEUR> get bootloader-uefi64/ipxe.efi
```

<div id="bkmrk-2.-r%C3%A9cup%C3%A9ration-du-m">  
2. Récupération du menu de boot  
Dans les logs d'apache repérer cette ligne:</div>```
"GET /mmc/imaging/bootmenu.php?mac=54:bf:64:5c:77:25&uuid=4c4c4544-0057-3210-8053-c4c04f4b5132&srv=10.104.1.20 HTTP/1.1" 200 3717 "-" "iPXE/1.21.1+ (gdd35
)"
```

<div id="bkmrk-si-elle-n%27existe-pas">Si elle n'existe pas, il s'agit d'un problème d'accès vers le serveur Apache  
  
3. Récupération de Davos  
Dans les logs d'apache repérer ces lignes:</div>```
"GET /downloads/davos/ipxe.png HTTP/1.1" 404 489 "-" "iPXE/1.21.1+ (gdd35)"
"GET /downloads/davos/vmlinuz HTTP/1.1" 200 15403668 "-" "iPXE/1.21.1+ (gdd35)"
"GET /downloads/davos/initrd.img HTTP/1.1" 200 64921280 "-" "iPXE/1.21.1+ (gdd35)"
"GET /downloads/davos/fs.squashfs HTTP/1.1" 200 1041178859 "-" "Wget"
```

<div id="bkmrk-si-elles-n%27existent-">Si elles n'existent pas, il s'agit d'un problème d'accès vers le serveur Apache  
  
  
Une fois ces étapes vérifiées, se reporter à "Debugger Davos"</div><div id="bkmrk-"></div><div id="bkmrk-lors-de-l%27arriv%C3%A9-sur">Lors de l'arrivé sur le menu PXE, vous ne trouvez pas l'option d'enregistrement, vérifier les lignes suivant dans les logs tftpd-hpa :</div><div id="bkmrk-dans-les-logs-de-tft">Dans les logs de tftp (/var/log/syslog ou journalctl --unit tftpd-hpa --follow) repérer ces lignes:</div>```
in.tftpd[357001]: tftp: client does not accept options
```

Si cette ligne apparait, redémarrer votre service tftpd-hpa

```
systemctl restart tftpd-hpa
```

Si le problème persiste, vérifier la présence fantôme d'un service tftpd-hpa et redémarrer votre serveur. Ensuite redémarrer le service tftpd-hpa de nouveau.

# Guacamole - Debug

# Debug Guacamole

<div id="bkmrk-lors-de-la-pmad-guac">Lors de la PMAD guacamole ne se connecte pas instantanément</div><div id="bkmrk-faite-%3A">  
Faite :</div>```
journalctl -u tomcat9 -f
```

<div id="bkmrk-tester-une-connexion">Tester une connexion.  
  
Vérifier la présence de la ligne :</div>```
[http-nio-8081-exec-9] WARN  o.a.g.r.auth.AuthenticationService - Authentication attempt from [10.48.2
50.43, 127.0.0.1] for user "root" failed.
```

<div id="bkmrk-si-elle-est-pr%C3%A9sente">  
Si elle est présente :</div>```
systemctl restart tomcat9
journalctl -u tomcat9 -f
```

<div id="bkmrk-v%C3%A9rifier-la-pr%C3%A9sence">  
Vérifier la présence de la ligne :</div>```
ERROR o.a.g.extension.ExtensionModule - Extension "guacamole-auth-jdbc-mysql-1.5.4.jar" couldnot be loaded: Unable to read contents of directory /etc/guacamole/lib
```

<div id="bkmrk-si-elle-est-pr%C3%A9sente-1">  
Si elle est présente :</div>```
chmod 755 /etc/guacamole/lib/
```

# Optimisation du temps de connexion pour la prise en main des postes.

Pour réduire le temps de connexion pour la prise en main des postes à distance :

Vérifier les points suivants :

- L'exécutable ssh (C:\\Program Files\\OpenSSH\\ssh.exe) est exclus de la recherche en temps réel de vos antivius et EDR
- L'exécutable medulla (C:\\Program Files\\Python3\\medulla.exe) est exclus de la recherche en temps réel de vos antivius et EDR
- Le trafic XMPP sortant des clients (vers le port 5222 du serveur) et son pendant entrant est exclus de l'analyse de paquets des firewalls (ne pas oublier le firewall de la machine client)
- Le trafic SSH sortant des clients (vers le port 22 ou 2002 du serveur) et son pendant entrant est exclus de l'analyse de paquets des firewalls (ne pas oublier le firewall de la machine client)

  
Une fois les points précédents vérifiés, si la connexion reverse ssh met moins de 30 secondes à s'effectuer, il est possible de diminuer le temps d'attente.

Cette modification se fait dans le fichier **/etc/mmc/mmc.ini.local.**  
Il conviendra d'ajouter une section guacamole et définir le paramètre reversessh\_timeout (en secondes).

Exemple pour passer le timeout à 20 secondes:

```
[guacamole]
reversessh_timeout = 20
```

<span style="color:rgb(0,0,0);">Il faut ensuite redémarrer le service mmc-agent :</span>

```
systemctl restart mmc-agent
```

<span style="color:rgb(0,0,0);">**La modification de ce paramètre est disponible dans la version 5.5.1 minimum.**</span>

# Doublons Adresse Mac

Si vous rencontré le problème avec certains composants installés sur votre ordinateur comme fortinet qui inscrivent une adresse mac identique sur toutes les machines. Cela pose le problème dans Medulla que les machines a l'enregistrement ne se placent pas dans la bonne entités et remontent dans glpi avec un uuid déja existant d'une autre machine :

dans le fichier /etc/pulse-xmpp-agent-substitute/registeryagent.ini.local

aller ajouter la section suivante et les informations suivantes en respectant bien la casse.

```
[parameters]
blacklisted_mac_addresses = 00\:00\:00\:00\:00\:00, 00\:09\:0f\:aa\:00\:01
```

Dans /etc/pulse-xmpp-agent-substitute/registeryagent.ini.local ajouter les adresses mac identiques à blacklister

Il faut que 00\\:00\\:00\\:00\\:00\\:00 soit présent  
Les : doivent être échapés et les adresses doivent être séparées par des virgules