# Medulla - Preguntas frecuentes

# Preguntas frecuentes - SaaS

# Requisitos de red para Medulla SaaS

<p class="callout info"> **Medulla / Versión All / SaaS / Infraestructura**</p>

### **1. ¿Existen requisitos técnicos para utilizar Medulla en modo SaaS?**

Para la oferta <span class="s1">**SaaS compartida**</span>, no se requiere ningún requisito previo de hardware o software.

La única condición es permitir <span class="s1">**dos flujos de red salientes**</span> desde sus puestos de trabajo hacia la plataforma Medulla.

---

### **2. ¿Qué puertos deben estar abiertos en Internet?**

#### **SaaS compartido**

Solo deben autorizarse dos puertos:<span class="s1">**Terminales → Servidor Medulla**</span>:

- <span class="s1">**TCP 2002**</span>: comunicación principal entre el agente Medulla y el servidor
- <span class="s1">**TCP 5222**</span>: canal XMPP que permite coordinar las acciones y establecer túneles seguros

No debe abrirse ningún otro puerto en Internet.

---

### **3. ¿Por qué solo dos puertos?**

Porque:

- Todas las operaciones que requieren puertos adicionales (VNC, RDP, WinRM, inventario, implementaciones de paquetes) pasan <span class="s1">**automáticamente por un túnel OpenSSH**</span> establecido entre el servidor Medulla y el agente del equipo.
- Este túnel es iniciado y gestionado por el servicio XMPP.

Por lo tanto, <span class="s1">**no**</span> es necesario exponer puertos sensibles en Internet.

### **4. ¿Qué puertos son necesarios para la oferta SaaS dedicada?**

Además de los puertos necesarios para el SaaS compartido:

- <span class="s1">**TCP 55415**</span>: utilizado para las funciones de copia de seguridad (Backup)

Todos los demás puertos siguen transitando a través del <span class="s1">**túnel OpenSSH**</span> y no es necesario abrirlos.

### **5. ¿Por qué algunos puertos (UDP 67, 69, 111, 2049) ya no se mencionan en el modo SaaS?**

Porque<span class="s1">**no**</span> se<span class="s1">**utilizan**</span> en el modo SaaS:

- No hay PXE ni DHCP en Internet →<span class="s1">**UDP 67 / 69 innecesarios**</span>
- No hay NFS expuesto → <span class="s1">**111 / 2049 innecesarios**</span>
- No hay ningún servicio de bajo nivel expuesto en la nube de Medulla

### **6. ¿Debo abrir puertos de entrada en mi firewall?**

No.

<span class="s1">**No**</span> se requiere<span class="s1">**ningún flujo entrante**</span> en el modo SaaS de Medulla.

Tu firewall solo debe <span class="s1">**permitir los**</span> siguientes <span class="s1">**flujos salientes**</span> para que los agentes se comuniquen:

- TCP <span class="s1">**2002**</span>
- TCP <span class="s1">**5222**</span>
    
    (+ TCP <span class="s1">**55415**</span> si es SaaS dedicado)

### **7. Resumen rápido**

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

</th><th>**Flujos necesarios Terminales → Servidor**

</th><th>**Observaciones**

</th></tr></thead><tbody><tr><td>**SaaS compartido**

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

</td><td>Todos los demás puertos pasan por el túnel OpenSSH

</td></tr><tr><td>**SaaS dedicado**

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

</td><td>Copia de seguridad activada opcionalmente

</td></tr><tr><td>**Tráfico entrante**

</td><td>Ninguno

</td><td>Todo lo inicia el terminal

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

# Puestos de cliente (estado y visibilidad)

##### **¿Por qué algunos equipos aparecen como desconectados aunque estén encendidos?**

- Compruebe los servicios medullaagent y medullanetnotify en los equipos que aparecen desconectados; si los servicios están «en ejecución» pero el equipo aparece desconectado en la interfaz (equipo en gris), póngase en contacto con el servicio de asistencia técnica o con su administrador.
- Si hay errores en los registros del agente (en el dispositivo) «C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log», comuníquelos al servicio de soporte técnico o a su administrador.

##### **¿Por qué los inventarios o la información enviada están incompletos o son erróneos?**

- Asegúrese de que la dirección MAC del equipo cuyo inventario no se envía no esté ya en uso. Para comprobar si un equipo tiene dificultades para enviar su inventario, no es posible realizar la implementación en dicho equipo, aunque aparezca en línea en la interfaz (icono del ordenador azul); el icono de implementación del equipo en «Acciones» aparecerá desactivado.

# Implementación (teledifusión)

##### **¿Por qué mis implementaciones permanecen bloqueadas en «Pending»?**

- El estado «Pending» indica que las implementaciones se procesarán en breve; si el bloqueo persiste, póngase en contacto con el servicio de asistencia o con su administrador.

##### **¿Por qué mis implementaciones permanecen bloqueadas en «Deployment Start»?**

- El estado «Deployment Start» indica que las implementaciones se procesarán en breve; si el bloqueo persiste, póngase en contacto con el servicio de asistencia o con su administrador.

##### **¿Qué hacer en caso de error de implementación: «Abort Package Execution»?**

- Debe comprobar el script vinculado al paquete; el error indica que no se está ejecutando correctamente. Puede intentar ejecutar el script manualmente en su equipo.
- Compruebe el resultado de la auditoría de la implementación, ya que puede dar pistas sobre el motivo del error.

##### **¿Qué hacer en caso de error de implementación: «Transfer Failed»?**

- Tu ordenador no puede recuperar el paquete debido a Rsync. Comprueba los permisos de Rsync en varias carpetas para el usuario pulseuser; los permisos deben configurarse de la siguiente manera:

```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)
                                   AUTORIDAD DE PAQUETES DE APLICACIONES\TODOS LOS PAQUETES DE APLICACIONES RESTRINGIDOS:(I)(OI)(CI)(IO)(GR,GE)

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

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

##### **¿Por qué mis transmisiones no se inician o tardan en hacerlo?**

- Si sus implementaciones tardan en iniciarse, es posible que su implementación en cola se vea ralentizada por la carga actual de la plataforma SaaS.
- Si tus implementaciones se quedan bloqueadas, ponte en contacto con el servicio de asistencia o con tu administrador.

##### **¿Cómo detener una implementación?**

- Dispone de un botón «Stop Deploy» en la vista de auditoría de una implementación para detener la implementación en curso.

##### **¿Cómo puedo ver el resultado de mi implementación?**  


- En la vista «Auditoría» puede encontrar la lista de todas sus implementaciones. Haga clic en el botón de acción « ![details.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/q65sgJD2FZnkt0Lf-details.png) » «Mostrar detalles de la implementación» para ver su implementación.

##### **¿Cómo reiniciar una implementación?**

- En la vista «Auditoría», busque la línea correspondiente a la implementación que desea reiniciar y, a continuación, haga clic en el botón de acción ![reload.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/dgXn57hnw81vXtG5-reload.png) para reiniciar la implementación.

# Paquetes

##### **No consigo añadir un archivo a mi paquete.**  


- Una vez que haya añadido un archivo a su paquete, este quedará en espera; no olvide hacer clic en «Enviar el paquete en espera».

##### **He creado un paquete, pero no está disponible para su implementación, ¿por qué?**

- Si tu paquete no aparece en la lista de paquetes, o no es visible cuando deseas implementarlo, significa que está pendiente de sincronización en los servidores de retransmisión; espera unos instantes antes de que aparezca en la «Lista de paquetes».

##### **¿Por qué mi paquete no está disponible en la página de añadir paquetes al Kiosk?**

- Su paquete debe tener un inventario asociado para que sea visible en la lista de paquetes disponibles para el quiosco.

# Mantenimiento remoto y puesta en marcha

##### **¿Qué hacer si el control remoto (VNC/RDP/PMAD) no funciona?**

- Compruebe el servicio TightVNC en los equipos que presentan problemas.
- No se puede acceder al control remoto si el ordenador aparece como desconectado (en gris); si es así, compruebe el estado del servicio medullaagent en el equipo.

# Preguntas frecuentes - OnPremise

# Implementación (teledifusión)

##### **¿Por qué mis implementaciones permanecen bloqueadas en «Pending»?**

- El estado «Pending» indica que las implementaciones se procesarán en breve; si el bloqueo persiste, póngase en contacto con el servicio de asistencia o con su administrador.

##### **¿Por qué mis implementaciones permanecen bloqueadas en «Deployment Start»?**

- El estado «Deployment Start» indica que las implementaciones se procesarán en breve; si el bloqueo persiste, póngase en contacto con el servicio de asistencia o con su administrador.

##### **¿Qué hacer en caso de error de implementación: «Abort Package Execution»?**

- Debe comprobar el script vinculado al paquete; el error indica que no se está ejecutando correctamente. Puede intentar ejecutar el script manualmente en su equipo.
- Compruebe el resultado de la auditoría de la implementación, ya que puede dar pistas sobre el motivo del error.

##### **¿Qué hacer en caso de error de implementación: «Transfer Failed»?**

- Tu ordenador no puede recuperar el paquete debido a Rsync. Comprueba los permisos de Rsync en varias carpetas para el usuario pulseuser; los permisos deben configurarse de la siguiente manera:

```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)
                                   AUTORIDAD DE PAQUETES DE APLICACIONES\TODOS LOS PAQUETES DE APLICACIONES RESTRINGIDOS:(I)(OI)(CI)(IO)(GR,GE)

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

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

##### **¿Por qué mis transmisiones no se inician o tardan en hacerlo?**

- Si sus implementaciones tardan en iniciarse, es posible que su implementación en cola se vea ralentizada por la carga actual de la plataforma SaaS.
- Si tus implementaciones se quedan bloqueadas, ponte en contacto con el servicio de asistencia o con tu administrador.

##### **¿Cómo detener una implementación?**

- Dispone de un botón «Stop Deploy» en la vista de auditoría de una implementación para detener la implementación en curso.

##### **¿Cómo puedo ver el resultado de mi implementación?**  


- En la vista «Auditoría» puede encontrar la lista de todas sus implementaciones. Haga clic en el botón de acción « ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/zSKpQNwMzhay8YzM-image.png) » «Mostrar detalles de la implementación» para ver su implementación.

##### **¿Cómo reiniciar una implementación?**

- En la vista «Auditoría», busque la línea correspondiente a la implementación que desea reiniciar y, a continuación, haga clic en el botón de acción ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/cmOVFn2XFI8THgx3-image.png) para reiniciar la implementación.

# Mantenimiento remoto y puesta en marcha

##### **¿Qué hacer si el control remoto (VNC/RDP/PMAD) no funciona?**

- Compruebe el servicio TightVNC en los equipos que presentan problemas.
- No se puede acceder al control remoto si el ordenador aparece como desconectado (en gris); si es así, compruebe el estado del servicio medullaagent en el equipo.
- Si su puerto SSH predeterminado no es el 22, asegúrese de que el siguiente archivo incluya correctamente su IP y el puerto SSH que utiliza: **C:\\Program Files\\Medulla\\bin\\reversessh.bat** Si no es así, debe realizar una modificación en su servidor, en el archivo: **<span style="color:rgb(0,0,0);">/etc/pulse-xmpp-agent/reverse\_ssh\_on.ini.local  
    </span>**Es necesario reiniciar el servicio pulse-xmpp-agent-relay.service
- Si su infraestructura dispone de una dirección IP pública y el servidor no consigue conectarse a los equipos a través de una dirección IP privada o una VPN, la conexión se realiza entonces de forma **inversa**, desde el equipo hacia el servidor.  
    Para comprobar el correcto funcionamiento de esta conexión, ejecute manualmente el siguiente script:  
    `C:\Program Files\Medulla\bin\reversessh.bat`  
    Esto le permitirá identificar posibles errores de conexión.

# Prueba de FLUX

Antes de instalar **Medulla**, es **esencial** verificar la comunicación entre:

<div id="bkmrk-votre-serveur-medull">- Su **servidor Medulla**,
- su **relé** (si procede),
- sus **máquinas cliente**.

</div>Para ello, ponemos a su disposición un **<span class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" tabindex="0">procedimiento de prueba</span>** que incluye scripts específicos. **Todos los flujos deben validarse correctamente** para garantizar una <span class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" tabindex="0">implementación fluida y un funcionamiento óptimo</span> de Medulla.

No dude en ponerse en contacto con nosotros si necesita ayuda o aclaraciones sobre estas pruebas.

**Los scripts se pueden descargar aquí:**

<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")  
  
(haga clic con el botón derecho del ratón en los enlaces siguientes y seleccione  **«Guardar enlace como...»**)  
</div><div id="bkmrk---------------------">**-----------------------------------------------------------**</div><div id="bkmrk-"></div>### Requisitos previos para las pruebas

Antes de empezar, asegúrate de haber descargado los scripts de prueba proporcionados anteriormente y de preparar los equipos:

<div id="bkmrk-sur-les-serveurs-lin">1. **En los servidores Linux (Medulla y Relai):**
    
    
    - Instala la herramienta necesaria: `sudo apt update && sudo apt install netcat-openbsd <span style="color:rgb(0,0,0);">mariadb-client ldap-utils</span>`
    - Haga que los scripts sean ejecutables:
        
        ```
        chmod +x listen_ports_debian.sh medulla_connection_check.sh medulla_relay_connection_check.sh
        dos2unix *.sh  # Si es necesario
        ```
        
        <div class="code-block ng-tns-c351283025-88 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-88"><div class="animated-opacity ng-tns-c351283025-88"></div></div></div>
2. **En el equipo cliente Windows que tenga el agente Medulla:**
    
    
    - Haga clic con el botón derecho del ratón en el script, seleccione Propiedades, marque la casilla Permitir ejecución del script y confirme.
    
    [![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)
    
    
    - Autorice la ejecución de los scripts de PowerShell:
    
    `Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned`
    
    > \# Responde «Sí para todos» (A o T) si se te solicita
    
    #### Para PowerShell v7.5.4: 
    
    No es necesario desbloquear el script. Debe ejecutar el comando visto anteriormente.
    
    Le preguntará si desea autorizar al editor que publica el script; basta con confirmar haciendo clic en R o 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. Prueba Medulla Servidor &lt;-&gt; Medulla Relé

*Comprobación de la comunicación entre el servidor principal y el relé.*

**Sentido: del servidor al relé**

<div id="bkmrk-sur-le-relai-%28destin">- **A. En el servidor de retransmisión (destino):** Inicie la escucha de los puertos. **<span style="color:rgb(224,62,45);">(No realice este paso si Medulla ya está instalada o si utiliza SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -r
    ```
    
    <div class="code-block ng-tns-c351283025-90 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-90"><div class="animated-opacity ng-tns-c351283025-90"></div></div></div>
- **B. En el servidor Medulla (Origen):** Inicie la prueba de conexión.
    
    ```
    ./medulla_connection_check.sh -r <IP_DEL_RELÉ>
    ```
    
    <div class="code-block ng-tns-c351283025-91 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-91"><div class="animated-opacity ng-tns-c351283025-91"></div></div></div>

</div>**Sentido: Relé hacia servidor**

<div id="bkmrk-sur-le-serveur-%28dest">- **C. En el servidor Medulla (Destino):** Inicie la escucha de puertos. **<span style="color:rgb(224,62,45);">(No realice este paso si Medulla ya está instalada o si utiliza SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -m
    ```
    
    <div class="code-block ng-tns-c351283025-92 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-92"><div class="animated-opacity ng-tns-c351283025-92"></div></div></div>
- **D. En el servidor de retransmisión (origen):** Ejecute la prueba de conexión.
    
    ```
    ./medulla_relay_connection_check.sh -m <IP_DE_MEDULLA>
    ```
    
    <div class="code-block ng-tns-c351283025-93 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-93"><div class="animated-opacity ng-tns-c351283025-93"></div></div></div>

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

</div>### 2. Prueba del servidor Medulla &lt;-&gt; Estación cliente Windows

*Comprobación de la comunicación directa entre el servidor y los equipos cliente.*

**Sentido: del servidor al equipo cliente**

<div id="bkmrk-a.-sur-le-poste-clie">- **A. En el equipo cliente (Destino):** Inicie la escucha.
    
    ```
    .\listen_ports_windows.ps1
    ```
    
    <div class="code-block ng-tns-c351283025-94 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-94"><div class="animated-opacity ng-tns-c351283025-94"></div></div></div>
- **B. En el servidor Medulla (Origen):** Inicie la prueba hacia la IP del equipo.
    
    ```
    ./medulla_connection_check.sh -c client.example.com
    ```
    
    <div class="code-block ng-tns-c351283025-95 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-95"><div class="animated-opacity ng-tns-c351283025-95"></div></div></div>

</div>**Sentido: Estación cliente hacia servidor**

<div id="bkmrk-sur-le-serveur-medul">- **C. En el servidor Medulla (destino):** Inicie la escucha. **<span style="color:rgb(224,62,45);">(No realice este paso si Medulla ya está instalada o si utiliza SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -m
    ```
    
    <div class="code-block ng-tns-c351283025-96 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-96"><div class="animated-opacity ng-tns-c351283025-96"></div></div></div>
- **D. En el equipo cliente (origen):** Ejecute la prueba hacia la IP del servidor.
    
    ```
    .\windows_connection_check_signed.ps1 -Target <IP_DEL_SERVIDOR> -Mode pulse
    ```
    
    <div class="code-block ng-tns-c351283025-97 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-97"><div class="animated-opacity ng-tns-c351283025-97"></div></div></div>

</div>Se ha creado un archivo de registro (en la ubicación desde donde se ejecuta el script) que resume varias pruebas, denominado: **LOG\_Test\_Flux.txt**

> *Si se producen errores de permisos tras la creación del archivo de registro, intente colocar los scripts en la carpeta Descargas del usuario, o conceda al script **windows\_connection\_check.ps1** los permisos para crear un archivo en la misma ubicación.*

<div id="bkmrk--4"></div><div id="bkmrk-sur-le-relai-%28destin-1"></div>### 3. Prueba de Medulla Relé &lt;-&gt; Estación cliente Windows

*Solo si los equipos deben comunicarse a través de un relé.*

**Sentido: Relé hacia estación cliente**

<div id="bkmrk-sur-le-poste-client--1">- **A. En el equipo cliente (destino):** Inicie la escucha.
    
    <div class="code-block ng-tns-c351283025-98 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-98"><div class="animated-opacity ng-tns-c351283025-98">  
    </div></div></div>```
    .\listen_ports_windows.ps1
    ```
    
    <div class="code-block ng-tns-c351283025-98 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-98"><div class="animated-opacity ng-tns-c351283025-98"></div></div></div>
- **B. En el servidor de retransmisión (origen):** Inicie la prueba hacia la IP del equipo.
    
    ```
    ./medulla_relay_connection_check.sh -c client.example.com
    ```
    
    <div class="code-block ng-tns-c351283025-99 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-99"><div class="animated-opacity ng-tns-c351283025-99"></div></div></div>

</div>**Sentido: Estación cliente hacia el relé**

<div id="bkmrk-sur-le-serveur-relai">- **C. En el servidor de retransmisión (destino):** Inicie la escucha. **<span style="color:rgb(224,62,45);">(No realice este paso si Medulla ya está instalada o si utiliza SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -r
    ```
    
    <div class="code-block ng-tns-c351283025-100 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-100"><div class="animated-opacity ng-tns-c351283025-100"></div></div></div>
- **D. En el equipo cliente (origen):** Ejecute la prueba hacia la IP del relé.
    
    ```
    .\windows_connection_check_signed.ps1 -Target <IP_DEL_RELÉ> -Mode relay
    ```

</div>Se ha creado un archivo de registro (en la ubicación desde la que está ejecutando el script) que resume varias pruebas, denominado:**LOG\_Test\_Flux.txt**

> *Si se producen errores de permisos tras la creación del archivo de registro, intente colocar los scripts en la carpeta Descargas del usuario, o conceda al script **windows\_connection\_check.ps1** los permisos para crear un archivo en la misma ubicación.*

<div id="bkmrk--5"></div><div id="bkmrk--6"></div><div id="bkmrk--7"></div>### 4. Prueba de Medulla Relai DMZ &lt;-&gt; Estación cliente Windows NOMADE

*Comprobación de la comunicación directa entre el servidor y los equipos cliente.*

**<span style="color:rgb(224,62,45);">(Solo se puede contactar con los equipos móviles a través de los puertos 5222 y 22)</span>**

**Sentido: Estación cliente hacia servidor**

<div id="bkmrk-sur-le-serveur-medul-1">- **A. En el servidor Medulla DMZ (Destino):** Inicie la escucha. **<span style="color:rgb(224,62,45);">(No realice este paso si Medulla ya está instalada o si utiliza SaaS)</span>**
    
    ```
    ./listen_ports_debian.sh -r
    ```
- **B. En el equipo cliente NOMÁDICO (Origen):** Inicie la prueba hacia la IP del servidor.
    
    ```
    .\windows_connection_check_signed.ps1 -Target <IP_DEL_SERVIDOR> -Mode relay
    ```

</div>### 5. Prueba del servidor destinado a Medulla -&gt; Su servidor GLPI

*Comprobación de la comunicación directa entre el servidor y su servidor GLPI.*

**<span style="color:rgb(224,62,45);">(Requiere el paquete mariadb-client: *apt install mariadb-client*)</span>**

<div id="bkmrk-sur-le-serveur-medul-2">- **A. En el servidor Medulla:** Ejecute la prueba hacia la base de datos GLPI externa.
    
    ```
    ./check_connection_glpi.sh DB_FQDN DB_USERNAME DB_PASSWORD DB_NAME_GLPI
    ```
    
    <div class="code-block ng-tns-c351283025-94 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-94"><div class="animated-opacity ng-tns-c351283025-94"></div></div></div><div class="code-block ng-tns-c351283025-95 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-95"><div class="animated-opacity ng-tns-c351283025-95"></div></div></div>

</div>### 6. Prueba del servidor destinado a Medulla -&gt; Su servidor LDAP

<div id="bkmrk--8"></div>*Comprobación de la comunicación directa entre el servidor y su servidor LDAP.*

**<span style="color:rgb(224,62,45);">(Requiere el paquete ldap-utils: *apt install ldap-utils*)</span>**

<div id="bkmrk-sur-le-serveur-medul-3">- **A. En el servidor Medulla:** Ejecute la prueba hacia el servidor LDAP externo.
    
    ```
    ./check_connection_ldap.sh HOST PORT 'BIND_DN' 'PASSWORD' 'BASE_DN'
    ```
    
    <div class="code-block ng-tns-c351283025-94 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c351283025-94"><div class="animated-opacity ng-tns-c351283025-94"></div></div></div>

</div>

# Cortafuegos

Si hay un cortafuegos entre el servidor y los equipos, es esencial asegurarse de que los puertos necesarios para la comunicación estén abiertos en ambos sentidos (entrante y saliente).  
Los siguientes puertos deben estar accesibles:

- **22**: SSH (acceso remoto y transferencias seguras)
- **9**: Wake-on-LAN
- **5900**: VNC (control remoto)
- **3389**: RDP (conexión de Escritorio remoto)
- **35621** y **35623**: Copias de seguridad
- **5985** y **5986**: WinRM (gestión remota HTTP/HTTPS)

**En resumen:**  
Compruebe que estos puertos no estén bloqueados por el cortafuegos del servidor, los equipos de los usuarios o cualquier equipo de red intermedio (router, cortafuegos físico, etc.).

# Requisitos previos para IMAGING

##### Configuración de PXE/DHCP

Tras la instalación y configuración de su servidor, se le enviará un documento específico sobre la configuración de DHCP/PXE.

##### Taller de imágenes

Antes de concertar la cita para su taller de imágenes, debe preparar algunos aspectos:

- Para crear una imagen limpia, es necesario disponer de un equipo Windows recién instalado, sin haber completado las preguntas de OOBE.

> *Debe iniciar la instalación de un equipo Windows y, cuando aparezca el OOBE, cancelarlo con: CTRL + SHIFT + F3*

- Tenga a su disposición varios PC listos para ser implementados.

También podemos proporcionarle imágenes maestras para determinados modelos de Windows; para ello, debe indicarnos los modelos de Windows que desea implementar.

# Active Directory

En el marco de una implementación On-Premise, deben proporcionarse tres cuentas de servicio de Active Directory distintas.

#### 1. Cuenta de solo lectura

Esta cuenta sirve para **consultar el** LDAP con el fin de obtener información sobre los usuarios y grupos.

- **Función:** **Solo lectura** (`Read-Only`).
- **Función:** Recupera información sobre el usuario y el grupo a través del protocolo **LDAP** (o LDAPS).
- **Permisos necesarios:** Debe tener los derechos necesarios para realizar búsquedas y leer atributos de usuario en el directorio de Active Directory.
- **Ubicación en la aplicación:** Los datos de identificación de esta cuenta se configurarán en el **archivo de configuración** de Medulla (información solicitada en el formulario de entrega).

#### 2. Cuenta de registro de máquinas (Imaging/Mastering)

Esta cuenta está dedicada a las operaciones de **aprovisionamiento y registro** de nuevas máquinas en el dominio durante el proceso de creación de imágenes (o *masterización*).

- **Función:** Derechos de registro de máquinas en el dominio.
- **Función:** Permitir la adición de ordenadores al dominio de Active Directory.
- **Permisos necesarios:** Debe tener el derecho  **«Añadir estaciones de trabajo al dominio».**
- **Integración en el proceso:** Esta cuenta será **integrada y utilizada por**`sysprep` para ejecutar la operación de unión al dominio durante el mastering del equipo.

#### 3. Cuenta de ejecución de scripts (instalación del agente Medulla)

Esta cuenta es necesaria para las tareas de administración posteriores al despliegue, concretamente para**la instalación remota del agente Medulla** a través de PowerShell, dirigiéndose a una **unidad organizativa (OU)** definida.

- **Función:** Enumerar los equipos del AD y ejecutar scripts de PowerShell de forma remota con derechos delegados.
- **Función:** enumerar los equipos del AD. Instalación y configuración del agente Medulla en los equipos cliente, dirigiéndose a los equipos de una UO específica.
- **Permisos necesarios:**
    
    
    - **Derechos delegados sobre la UO de destino:** Debe tener derechos de modificación de los objetos `«Computer»` y derechos que permitan la ejecución de comandos de forma remota (a través de **WinRM** o una solución equivalente) en los equipos de la UO especificada.
    - **Acceso al recurso compartido de red:** si el script o el instalador del agente Medulla está almacenado en un recurso compartido, la cuenta debe tener derechos de **lectura** sobre dicho recurso compartido.
    - **Listar los equipos del AD: Debe**tener derechos para listar los equipos del AD con el fin de seleccionar aquellos en los que se debe instalar el agente.
- **Uso:** Esta cuenta será utilizada por la aplicación Python para iniciar y validar la ejecución de los scripts de PowerShell en los equipos, garantizando que el agente esté instalado y que el equipo esté correctamente vinculado a la estructura de unidad organizativa adecuada.

# Ya tengo un servidor PXE en mi red, ¿supone esto algún problema?

### Coexistencia con un servidor PXE existente

La instalación de **Medulla** incluye la configuración de un **servidor PXE** (Preboot Execution Environment) dedicado para facilitar el despliegue. Somos conscientes de que es posible que su entorno ya cuente con un servidor PXE operativo.

**Esto no supone ningún problema.**

El secreto de la coexistencia reside en el protocolo **DHCP** (Dynamic Host Configuration Protocol), que es el director de orquesta del proceso de arranque en red (PXE).

---

#### 1. El DHCP es el único que decide

El servidor PXE (de Medulla o el ya existente) no puede imponerse por sí solo. Es el**servidor DHCP** el que dirige al cliente hacia el servidor de arranque adecuado.

Cuando enciendes un equipo que debe arrancar mediante PXE, este envía una solicitud DHCP. El servidor DHCP no solo le proporciona una dirección IP, sino también dos datos cruciales para el arranque en red:

Aunque haya dos servidores PXE escuchando en la red, **solo el servidor DHCP tiene la autoridad** para indicar al cliente qué servidor debe utilizar.

Proporcionamos una configuración DHCP/PXE tras la instalación del servidor Medulla.

---

#### 2. Filtrado selectivo (dirección MAC / ámbitos)

Es posible gestionar el filtrado por dirección MAC.

- Control por dirección MAC:
    
    Puede configurar el servidor DHCP para que examine la dirección MAC del cliente que realiza la solicitud.
    
    
    - Si es la MAC `00:1A:2B:3C:4D:5E`, el DHCP envía**la Opción 66** apuntando al **PXE de Medulla**.
    - Para todas las demás direcciones, el DHCP no envía ninguna opción PXE o apunta a su **PXE existente**.
- Control por ámbito (Scope) o clase de proveedor (Vendor Class):
    
    El DHCP también puede aplicar estas reglas de enrutamiento PXE a rangos de direcciones IP específicos o en función de un identificador específico enviado por el cliente (la clase de proveedor del cliente PXE).

En resumen, los dos servidores PXE pueden coexistir, pero permanecen **inactivos** hasta que el DHCP dé al cliente la orden formal de contactar con uno de ellos mediante la directiva **`next-server`**.

# Diagrama de flujo simplificado de Medulla

## Reglas de flujo simplificadas

Las reglas se interpretan de la siguiente manera:

- `FUENTE -> DESTINO` significa que el **flujo se inicia** desde la FUENTE hacia el DESTINO.
- Si no se especifica el protocolo, se utiliza TCP por defecto.

##### Si dispone de un único servidor Medulla, tenga en cuenta la tabla:

- 1. Sin servidor de retransmisión

##### Si dispone de un servidor Medulla y un servidor de retransmisión, tenga en cuenta la tabla:

- 2. Con servidor de retransmisión clásico

##### Si dispone de un servidor Medulla y un servidor de retransmisión DMZ, tenga en cuenta la tabla:

- 3. Con servidor de retransmisión DMZ

##### Acceso de Medulla al exterior:

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

##### Acceso de Medulla a otros servidores internos:

- Su servidor GLPI (si dispone de uno)
- Su servidor LDAP (si dispone de uno, consulte nuestra documentación sobre LDAP: [LDAP DOC](https://docs.medulla-tech.io/books/medulla-faq/page/active-directory))

##### Acceso desde su máquina de administración a Medulla:

<table 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;">**Conexión**</td><td style="width:35.6307%;height:46.5938px;">**Puertos utilizados (DEST)**</td><td style="width:33.6184%;height:46.5938px;">**Observaciones**</td></tr></thead><tbody><tr style="height:59.9688px;"><td style="width:30.7509%;height:59.9688px;"><span>**Tu equipo de administración interno ➡️ Servidor Medulla**</span></td><td style="width:35.6307%;height:59.9688px;"><span>139/445</span>

<span>8384</span>

</td><td style="width:33.6184%;height:59.9688px;"><span>Tráfico iniciado por el **puesto de administrador interno hacia**  **Medulla**.</span></td></tr></tbody></table>

#### 1. Sin servidor de retransmisión

<table 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;">**Conexión**</td><td style="width:35.6307%;height:46.5938px;">**Puertos utilizados (DEST)**</td><td style="width:33.6184%;height:46.5938px;">**Observaciones**</td></tr></thead><tbody><tr style="height:180.969px;"><td style="width:30.7509%;height:180.969px;"><span>**Puesto interno ➡️ Servidor Medulla**</span></td><td style="width:35.6307%;height:180.969px;"><span>22 (SSH)  
67/69 (UDP)  
80/443  
111/2049 (TCP y UDP)  
5222  
8443  
9990  
9999,  
22067  
55415  
</span></td><td style="width:33.6184%;height:180.969px;"><span>Tráfico iniciado desde la **extensión interna hacia**  **Medulla**.</span></td></tr><tr style="height:130.578px;"><td style="width:30.7509%;height:130.578px;"><span>**Servidor Medulla <span>➡️ Extensión </span>interna** </span></td><td style="width:35.6307%;height:130.578px;"><span><span>9  
22 ( </span>SSH)  
3389  
5900  
5985/5986  
35621  
35623  
</span></td><td style="width:33.6184%;height:130.578px;"><span>Tráfico iniciado por el **servidor Medulla hacia**  **los puestos internos**.</span></td></tr></tbody></table>

#### 2. Con servidor de retransmisión clásico

<table 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;">**Conexión**</td><td style="width:35.6377%;height:46.5938px;">**Puertos utilizados (DEST)**</td><td style="width:33.6114%;height:46.5938px;">**Observaciones**</td></tr></thead><tbody><tr style="height:180.969px;"><td style="width:30.7509%;height:180.969px;"><span>**Terminal interno ➡️ Servidores Medulla**</span></td><td style="width:35.6377%;height:180.969px;"><span>22 (SSH)  
67/69 (UDP)  
80/443  
111/2049 (TCP y UDP)  
5222  
8443  
9990  
9999,  
22067  
55415  
</span></td><td style="width:33.6114%;height:180.969px;"><span>Tráfico iniciado desde el **extensión interna hacia**  **Medulla**.</span></td></tr><tr style="height:130.578px;"><td style="width:30.7509%;height:130.578px;"><span>**Servidores Medulla <span>➡️ Terminal </span>interno** </span></td><td style="width:35.6377%;height:130.578px;"><span><span>9  
22 ( </span>SSH)  
3389  
5900  
5985/5986  
35621  
35623  
</span></td><td style="width:33.6114%;height:130.578px;"><span>Tráfico iniciado por el **servidor Medulla hacia**  **los puestos internos**.</span></td></tr><tr style="height:29.7969px;"><td style="width:30.7509%;height:29.7969px;"><span>---</span></td><td style="width:35.6377%;height:29.7969px;"><span>---</span></td><td style="width:33.6114%;height:29.7969px;"><span>---</span></td></tr><tr style="height:97.9844px;"><td style="width:30.7509%;height:97.9844px;"><span>**Servidor Medulla ➡️ Servidor de retransmisión**</span></td><td style="width:35.6377%;height:97.9844px;"><span><span>22 ( </span>SSH)</span>

<span>5269  
8081</span>

<span>9990  
22000  
</span>

</td><td style="width:33.6114%;height:97.9844px;"><span>Tráfico iniciado por **Medulla hacia** el **servidor DMZ**.</span></td></tr><tr style="height:130.562px;"><td style="width:30.7509%;height:130.562px;"><span>**Servidor de retransmisión <span>➡️ Servidor </span>Medulla** </span></td><td style="width:35.6377%;height:130.562px;"><span><span>22 ( </span>SSH)</span>

<span>5269  
7080  
8443  
9999  
22067  
22000  
</span>

</td><td style="width:33.6114%;height:130.562px;"><span>Tráfico iniciado por el **servidor DMZ hacia**  **Medulla**.</span></td></tr><tr style="height:29.7969px;"><td style="width:30.7509%;height:29.7969px;"><span>---</span></td><td style="width:35.6377%;height:29.7969px;"><span><span>  
</span></span></td><td style="width:33.6114%;height:29.7969px;"><span>  
</span></td></tr><tr style="height:113.781px;"><td style="width:30.7509%;height:113.781px;"><span>**<span>Terminal interno ➡️ Servidor de retransmisión</span>**</span></td><td style="width:35.6377%;height:113.781px;"><span><span>22</span></span>

<span><span>69/69 (UDP)</span></span>

<span><span>80/443</span></span>

<span><span>111/2049 (TCP y UDP)</span></span>

<span><span>5222</span></span>

9990

</td><td style="width:33.6114%;height:113.781px;"><span><span>Tráfico iniciado por el **teléfono interno hacia** el **servidor de retransmisión**.</span></span></td></tr><tr style="height:80.1875px;"><td style="width:30.7509%;height:80.1875px;"><span>**<span>Servidor de retransmisión ➡️ Extensión interna</span>**</span></td><td style="width:35.6377%;height:80.1875px;"><span><span>9</span></span>

<span><span>22</span></span>

<span><span>3389</span></span>

<span><span>5900</span></span>

</td><td style="width:33.6114%;height:80.1875px;"><span><span>Tráfico iniciado por el **servidor de retransmisiónhacia**la **extensión interna**.</span></span></td></tr></tbody></table>

#### 3. Con servidor de retransmisión DMZ

<table 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;">**Conexión**</td><td style="width:35.6307%;height:46.5938px;">**Puertos utilizados (DEST)**</td><td style="width:33.6184%;height:46.5938px;">**Observaciones**</td></tr></thead><tbody><tr style="height:180.969px;"><td style="width:30.7509%;height:180.969px;"><span>**Terminal interno ➡️ Servidor Medulla**</span></td><td style="width:35.6307%;height:180.969px;"><span>22 (SSH)  
67/69 (UDP)  
80/443  
111/2049 (TCP y UDP)  
5222  
8443  
9990  
9999,  
22067  
55415  
</span></td><td style="width:33.6184%;height:180.969px;"><span>Tráfico iniciado desde la **extensión interna hacia**  **Medulla**.</span></td></tr><tr style="height:130.578px;"><td style="width:30.7509%;height:130.578px;"><span>**Servidor Medulla <span>➡️ Extensión </span>interna** </span></td><td style="width:35.6307%;height:130.578px;"><span><span>9  
22 ( </span>SSH)  
3389  
5900  
5985/5986  
35621  
35623  
</span></td><td style="width:33.6184%;height:130.578px;"><span>Tráfico iniciado por el **servidor Medulla hacia**  **los puestos internos**.</span></td></tr><tr style="height:29.7969px;"><td style="width:30.7509%;height:29.7969px;"><span>---</span></td><td style="width:35.6307%;height:29.7969px;"><span>---</span></td><td style="width:33.6184%;height:29.7969px;"><span>---</span></td></tr><tr style="height:113.781px;"><td style="width:30.7509%;height:113.781px;"><span>**Servidor Medulla ➡️ Servidor de retransmisión DMZ**</span></td><td style="width:35.6307%;height:113.781px;"><span><span>22 ( </span>SSH)</span>

<span>4369</span>

<span>4370 a 4380  
5269  
8081  
22000  
</span>

</td><td style="width:33.6184%;height:113.781px;"><span>Tráfico iniciado por **Medulla hacia** el **servidor DMZ**.</span></td></tr><tr style="height:164.172px;"><td style="width:30.7509%;height:164.172px;"><span>**Servidor de retransmisión DMZ<span>➡️ Servidor </span>Medulla** </span></td><td style="width:35.6307%;height:164.172px;"><span><span>22 ( </span>SSH)</span>

<span>4369</span>

<span><span>4370 a 4380</span>  
5269  
7080  
8443  
9999  
22067  
22000  
</span>

</td><td style="width:33.6184%;height:164.172px;"><span>Tráfico iniciado por el **servidor DMZ hacia**  **Medulla**.</span></td></tr><tr style="height:29.7969px;"><td style="width:30.7509%;height:29.7969px;"><span>---</span></td><td style="width:35.6307%;height:29.7969px;"><span>---</span></td><td style="width:33.6184%;height:29.7969px;"><span>---</span></td></tr><tr style="height:63.3906px;"><td style="width:30.7509%;height:63.3906px;"><span>**Terminal externo ➡️ Servidor DMZ**</span></td><td style="width:35.6307%;height:63.3906px;"><span><span>22 ( </span>SSH)  
5222</span></td><td style="width:33.6184%;height:63.3906px;"><span>Tráfico iniciado por el **puesto externo hacia** el **servidor DMZ**.</span>

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

#### Descripción de los puertos

Puerto 9: utilizado para Wake on LAN (WOL) con el fin de activar un puesto de forma remota.  
  
Puerto 22 (SSH): puerto SSH utilizado por Medulla para operaciones remotas, ejecución de comandos y administración de agentes.  
  
Puertos 67 y 69 (UDP): utilizados para DHCP y TFTP, especialmente durante el arranque PXE o para la carga de imágenes de implementación.  
  
Puertos 80 y 443: HTTP y HTTPS, utilizados para el acceso web y las comunicaciones seguras con los servicios de Medulla.  
  
Puerto 111 (TCP y UDP): utilizado por Portmapper / RPCbind, necesario para los servicios NFS y algunas llamadas de red internas.  
  
Puerto 3389: utilizado para RDP con el fin de conectarse de forma remota a equipos Windows.

Puerto 4369: utilizado para un clúster ejabberd si dispone de un relé DMZ

Puertos 4370 a 4380: utilizados para un clúster ejabberd si dispone de un relé DMZ  
  
Puerto 5222: utilizado por XMPP para la comunicación entre los agentes Medulla y el servidor.  
  
Puerto 5269: utilizado por XMPP para la comunicación de servidor a servidor, en particular entre Medulla y el servidor de retransmisión en la DMZ.  
  
Puerto 5900: utilizado por VNC para el control remoto.  
  
Puertos 5985 y 5986: utilizados por WinRM (HTTP y HTTPS) para comandos remotos en Windows.  
  
Puertos 7080 y 8081: utilizados por servicios internos o API de gestión necesarios para el servidor de retransmisión o los componentes de Medulla.  
  
Puerto 8443: HTTPS utilizado por la interfaz o las API seguras de Medulla.  
  
Puerto 9990: utilizado por un servicio interno de Medulla para la gestión y la supervisión.  
  
Puerto 9999: utilizado como puerto interno de sincronización o intercambio entre el servidor Medulla y componentes como el relé.  
  
Puerto 22000: utilizado por Syncthing como canal principal para la sincronización de datos (paquetes, artefactos, inventarios).  
  
Puerto 22067: utilizado por Syncthing como canal de retransmisión, útil para equipos móviles o situados detrás de un NAT.  
  
Puertos 35621, 35623 y 55415: puertos dinámicos utilizados por los agentes de Medulla para la comunicación en tiempo real, el inventario, la sincronización o la ejecución de tareas.

# OIDC

#### Listar mis configuraciones OIDC

Vaya a la vista Admin &gt; Gestionar proveedores.

[![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)

Aquí encontrará la lista de OIDC ya configurados que es posible modificar.

#### Crear una configuración 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)

«Nombre del proveedor» será el título que se mostrará en la página de inicio.

«URL del logotipo» corresponde al enlace web para configurar un logotipo en el botón de inicio de sesión OIDC.

«URL del emisor» corresponde al enlace web que redirige a su OIDC.

«ID de cliente» corresponde al identificador de su OIDC.

«Secreto del cliente» corresponde a la contraseña de su OIDC.

- (Opcional)

«LDAP uid» corresponde a la asignación del uid por parte de su OIDC

«LDAP givenName» corresponde a la asignación del givenName de su OIDC

«LDAP sn» corresponde a la asignación del sn de su OIDC

«LDAP mail» corresponde a la asignación del correo electrónico de su OIDC

A continuación, pulse el botón  **«Crear proveedor»** para poder conectarse a través de un OIDC en su plataforma.

# Vistas DNS y relé de 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);">En una arquitectura Medulla,**se puede colocar** un**relé en la DMZ** para permitir que los equipos externos accedan a la plataforma sin exponer directamente el servidor Medulla interno si no dispone de una VPN.</span><span style="color:rgb(52,73,94);">Dado que la configuración de los agentes Medulla es única para todo el parque, solo admite un único nombre de dominio. Para permitir que los equipos se conecten al servidor tanto desde la red privada como desde el exterior a través de esta dirección única, es necesario utilizar un nombre de dominio único junto con **vistas DNS (Split-Horizon)** o un **Round-Robin**.</span>

</section>#### Vistas DNS

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

Una vista DNS permite proporcionar **respuestas diferentes para un mismo nombre** en función del origen de la solicitud.

<div style="max-width:900px;margin:0 auto;padding:16px 0;">- Equipos internos → servidor Medulla interno
- Equipos externos → relé de Medulla en DMZ

</div>### Ventajas

- Solo hay que configurar un nombre DNS
- Sin diferencias de configuración en los terminales
- El servidor Medulla interno no queda expuesto
- Arquitectura clara y segura

### A tener en cuenta

Las vistas DNS permiten dirigir automáticamente los equipos hacia el punto de acceso Medulla adecuado, manteniendo un nombre único y una configuración sencilla.  
  
Artículo de referencia sobre Bind9: [https://kb.isc.org/docs/aa-00851](https://kb.isc.org/docs/aa-00851)

</section>#### Round-Robin

Asimismo, si no desea configurar vistas DNS, puede optar por una solución alternativa implementando un mecanismo ***Round-Robin***. Este permite distribuir las solicitudes entre varias direcciones IP asociadas a un mismo nombre de dominio, garantizando así una distribución equilibrada de las conexiones.

Para ello, es necesario seguir dos pasos:

1. Definir la dirección IP interna del servidor principal Medulla.
2. Definir la dirección IP pública del servidor de retransmisión DMZ.

# Filtrar tipos de máquinas por ID GLPI

Para el filtro, en la sección main de /etc/mmc/plugins/glpi.ini.local hay que añadir:  
filter\_on = &lt;el\_criterio&gt;

> \#Mostrar solo los ordenadores que cumplan uno de estos filtros:  
> \* estado  
> \* tipo  
> \* entidad  
> \* autoupdatesystems\_id
> 
> \#Cada filtro puede contener una lista de valores separados por barras verticales  
> \#Los filtros son identificadores separados por espacios
> 
> p. ej., state=1 type=2|3|7 entity=2|5  
> filter\_on = state=3

# Su GLPI con usuario de solo lectura

Medulla requiere la creación de vistas específicas en la base de datos **GLPI** para funcionar correctamente.

##### GLPI de solo lectura

Si nos proporciona un usuario con derechos de solo lectura en su base de datos GLPI, deberá aplicar manualmente un <span class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" tabindex="0">archivo SQL antes de instalar</span> Medulla. Este archivo contiene las consultas necesarias para crear las vistas requeridas.

Aquí tienes el enlace al archivo SQL:

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

##### GLPI con acceso de escritura

Si autoriza el acceso de**escritura** a su base de datos GLPI, <span class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" tabindex="0">Medulla aplicará automáticamente las vistas necesarias</span> durante la instalación.

---

> *<span class="followup-block followup-block-hidden cursor-pointer outline-none static inline group-hover/message:[--hover-opacity:1]" tabindex="0">Estas vistas son obligatorias para el funcionamiento de Medulla</span>.*

# Desactivar la convergencia del paquete Extract drivers

Acceda al servidor Medulla.

Edite los archivos:

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

Modifique el parámetro correspondiente:

```
[extractdrivers] 
# Añade la posibilidad de habilitar o deshabilitar el mecanismo de controladores de extracción
# valores aceptados 0, false, False
# valores aceptados 1, true, True
activate=0
```

Guarde los archivos.

Reinicie el servicio:

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

# Guía de configuración: Autenticación OIDC y sincronización de usuarios

Si utiliza una infraestructura**local** y opta por la autenticación mediante el protocolo **OIDC (OpenID Connect)**, es fundamental comprender cómo se transmiten y gestionan las cuentas de usuario entre su proveedor de identidad y la interfaz GLPI, en caso de que esta última no tenga usuarios (si se acaba de instalar junto con Medulla).

### 1. Comprender el flujo de autenticación

En esta arquitectura, la gestión de accesos sigue un recorrido específico:

1. **Almacenamiento:** Sus usuarios OIDC se aprovisionan en el **LDAP local** del servidor Medulla.
2. **Autorizaciones (ACL):** Aunque la autenticación la gestiona OIDC, los derechos de acceso y los permisos (perfiles) se controlan directamente desde GLPI.

> **Síntoma de falta de sincronización:** Si, tras iniciar sesión a través de OIDC, llega a una página de GLPI vacía o sin menús, significa que su cuenta aún no se ha importado a la base de datos de GLPI. Sin este paso, el sistema no puede asignarle ningún perfil ni derechos de acceso.
> 
> La incorporación de usuarios a GLPI al iniciar sesión a través de OIDC ahora es automática si:
> 
> - GLPI se instala por defecto con Medulla
> - Su GLPI es accesible en modo lectura-escritura

---

### 2. Procedimiento de sincronización manual

Para que sus usuarios estén activos en GLPI, debe establecer una conexión con el directorio LDAP local. Estos son los pasos a seguir:

#### Paso A: Acceder a la interfaz de enlace

1. Inicie sesión en GLPI con una cuenta de administrador local.
2. Vaya al menú **Administración** &gt; **Usuarios**.
3. Haga clic en el botón **Vinculación con el directorio 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)

#### Paso B: Importar las cuentas

1. Haga clic en el enlace **Importación de nuevos usuarios**.
2. Haga clic en el botón **Buscar** para mostrar la lista de usuarios presentes en el LDAP de Medulla.
3. Seleccione los usuarios deseados (o todos) y confirme la sincronización.

# Aumentar el tiempo de espera de la conexión a la interfaz

Vaya al archivo /etc/mmc/mmi.ini

Modifique el valor **de sessiontimeout**. (Este valor se expresa en segundos)

[![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)

# Soporte de activación / WSUS / CVE

<p class="callout info">**Aplicable a:** Medulla – Soporte / WSUS / CVE  
**Versión:** 5.4.3 o posterior  
**Entorno:** On-Premise  
**Categoría:** Soporte</p>

Tras actualizar su instalación de Medulla, es necesario realizar una acción adicional para activar el soporte.

Descargue el siguiente archivo en su servidor:

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

A continuación, debe enviar este archivo a su representante comercial.

Este paso permite activar su acceso al soporte técnico, así como a los servicios asociados.

# Cambiar el FQDN del servidor

Descargue el script en este enlace:

[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`

Para ver las opciones del script:

`./rename_fqdn_and_protocol --help `


##### Modificar el FQDN del servidor

Para cambiar medulla.mondomaine.lan por medulla.mondomaine.fr, aquí tienes un ejemplo de cómo usar el comando:

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

##### Modificar el protocolo

También es posible cambiar el protocolo de http a https en las URL al mismo tiempo:

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

##### Regenerar el agente

Si los equipos también deben comunicarse directamente con el nuevo FQDN, es posible regenerar el agente con el nuevo FQDN:

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

Para obtener más información y si dispone de un contrato de asistencia técnica de Medulla, póngase en contacto con support@medulla-tech.io

# Cambiar el puerto SSH entre el servidor y el equipo

Descargue los scripts en estos enlaces:

[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`

Para ver las opciones del script:

`./change_ssh_port_on_agent.py --help`

`./change_ssh_port_on_server.py --help`

<p class="callout info">Es obligatorio cambiar el puerto con ambos scripts</p>

<p class="callout info">El puerto debe ser el mismo en ambos scripts</p>


##### Modificar el puerto en el servidor

Para cambiar el puerto 22 por el puerto 2002, aquí tienes un ejemplo de cómo utilizar el comando:

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

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

El agente se regenerará tras la ejecución del script  **«change\_ssh\_port\_on\_agent.py»**, por lo que deberá volver a implementar el agente en sus equipos.

# GLPI - Conectar un GLPI externo

<p class="callout info">**Aplicable a**: Medulla/GLPI  
**Versión de Medulla**: todas  
**Versión de GLPI**: 10.0.x  
**Entorno**: On-Premise  
**Categoría**: Medulla</p>

#### Requisitos previos

Antes de configurar la integración entre Medulla y GLPI, asegúrese de que los siguientes elementos estén disponibles y correctamente configurados.

##### 1. Acceso a la base de datos de GLPI

<span style="color:rgb(45,194,107);">Cree un usuario dedicado de MySQL/MariaDB para Medulla con los siguientes permisos:</span>

\- Solo lectura (`READ ONLY`) o lectura/escritura según sea necesario  
\- Acceso a toda la base de datos de GLPI

##### 2. Conectividad de red

Permitir la comunicación entre el servidor Medulla y el servidor de la base de datos GLPI:

<span style="color:rgb(185,106,217);">- Puerto `3306` abierto (o puerto personalizado según su configuración)</span>

##### 3. Creación de un usuario API GLPI

Cree un usuario GLPI dedicado a las llamadas API con el nombre que desee:

<p class="callout info">En GLPI, en `Administración &gt; Usuarios`</p>

<span style="color:rgb(230,126,35);">- Tipo: usuario estándar (nombre de usuario / contraseña)</span>  
\- Perfil recomendado:  
\- «Read-Only» o «Super-Admin»  
\- Asignación:  
\- Entidad raíz  
\- Modo recursivo activado

A continuación, genere un token de API de usuario (`user\_token`)

##### 4. Creación de un cliente API GLPI

Crear un cliente API denominado `MMC`.

<p class="callout info">En GLPI, en `Configuración &gt; General &gt; API`</p>

A continuación, genere el token de aplicación (`app\_token`)

##### 5. Importar vistas SQL a su base de datos GLPI

En su base de datos GLPI debe importar el archivo descargado aquí:

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

\---

#### Uso del script

##### Comando de ayuda

> ./change\_itsm\_parameters.py --help
> 
> uso: 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\]
> 
> Actualizar parámetros de ITSM
> 
> opciones:  
>  -h, --help muestra este mensaje de ayuda y sale  
> \--url URL URL del proveedor de ITSM  
> \--db-host DB\_HOST Host de la base de datos del proveedor de ITSM  
> \--db-port DB\_PORT Puerto de la base de datos del proveedor de ITSM  
> \--db-name DB\_NAME Nombre de la base de datos del proveedor de ITSM  
> \--db-user DB\_USER usuario de la base de datos del proveedor de ITSM  
> \--db-pass DB\_PASS Contraseña de la base de datos del proveedor de ITSM  
> \--api-url API\_URL URL de la API del proveedor de ITSM  
> \--api-user API\_USER Usuario de la API del proveedor de ITSM  
> \--api-pass API\_PASS Contraseña de la API del proveedor de ITSM  
> \--readonly READONLY Si la base de datos del proveedor de ITSM es de solo lectura para Medulla (opcional)  
> \--crypt-key CRYPT\_KEY  
>  Archivo de clave de cifrado GLPI descodificado - base64 /etc/glpi/glpicrypt.key (opcional)  
> \--inv-forward INV\_FORWARD  
>  Si se reenvían los datos de inventario al proveedor de ITSM (opcional)  
> \--inv-forward-url INV\_FORWARD\_URL  
>  URL a la que reenviar los datos de inventario (opcional)  
> \--inv-plugin INV\_PLUGIN  
>  Complemento de inventario que se va a utilizar: glpiinventory o fusioninventory (opcional)  
> \--inv-agent INV\_AGENT  
>  Agente de inventario a utilizar en el equipo cliente: glpiagent o fusioninventory (opcional, obligatorio si --inv-forward es verdadero)  
> \--inv-agent-disabled INV\_AGENT\_DISABLED  
>  Si se debe incluir el agente de inventario en el agente Medulla (opcional)

##### Ejemplos de uso:

> ./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>

# Preguntas frecuentes - SaaS privado

# Requisitos de red para Medulla SaaS Privado

Consulte:   
  
[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)

# Puestos de cliente (estado y visibilidad)

##### **¿Por qué algunos equipos aparecen como desconectados aunque estén encendidos?**

- Compruebe los servicios medullaagent y medullanetnotify en los equipos que aparecen desconectados; si los servicios están «en ejecución» pero el equipo aparece desconectado en la interfaz (equipo en gris), póngase en contacto con el servicio de asistencia técnica o con su administrador.
- Si hay errores en los registros del agente (en el dispositivo) «C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log», comuníquelos al servicio de soporte técnico o a su administrador.

##### **¿Por qué los inventarios o la información enviada están incompletos o son erróneos?**

- Asegúrese de que la dirección MAC del equipo cuyo inventario no se envía no esté ya en uso. Para comprobar si un equipo tiene dificultades para enviar su inventario, no es posible realizar la implementación en dicho equipo, aunque aparezca en línea en la interfaz (icono del ordenador azul); el icono de implementación del equipo en «Acciones» aparecerá desactivado.

# Implementación (teledifusión)

##### **¿Por qué mis implementaciones permanecen bloqueadas en «Pending»?**

- El estado «Pending» indica que las implementaciones se procesarán en breve; si el bloqueo persiste, póngase en contacto con el servicio de asistencia o con su administrador.

##### **¿Por qué mis implementaciones permanecen bloqueadas en «Deployment Start»?**

- El estado «Deployment Start» indica que las implementaciones se procesarán en breve; si el bloqueo persiste, póngase en contacto con el servicio de asistencia o con su administrador.

##### **¿Qué hacer en caso de error de implementación: «Abort Package Execution»?**

- Debe comprobar el script vinculado al paquete; el error indica que no se está ejecutando correctamente. Puede intentar ejecutar el script manualmente en su equipo.
- Compruebe el resultado de la auditoría de la implementación, ya que puede dar pistas sobre el motivo del error.

##### **¿Qué hacer en caso de error de implementación: «Transfer Failed»?**

- Tu ordenador no puede recuperar el paquete debido a Rsync. Comprueba los permisos de Rsync en varias carpetas para el usuario pulseuser; los permisos deben configurarse de la siguiente manera:

```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)
                                   AUTORIDAD DE PAQUETES DE APLICACIONES\TODOS LOS PAQUETES DE APLICACIONES RESTRINGIDOS:(I)(OI)(CI)(IO)(GR,GE)

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

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

##### **¿Por qué mis transmisiones no se inician o tardan en hacerlo?**

- Si sus implementaciones tardan en iniciarse, es posible que su implementación en cola se vea ralentizada por la carga actual de la plataforma SaaS.
- Si tus implementaciones se quedan bloqueadas, ponte en contacto con el servicio de asistencia o con tu administrador.

##### **¿Cómo detener una implementación?**

- Dispone de un botón «Stop Deploy» en la vista de auditoría de una implementación para detener la implementación en curso.

##### **¿Cómo puedo ver el resultado de mi implementación?**  


- En la vista «Auditoría» puede encontrar la lista de todas sus implementaciones. Haga clic en el botón de acción « ![details.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/q65sgJD2FZnkt0Lf-details.png) » «Mostrar detalles de la implementación» para ver su implementación.

##### **¿Cómo reiniciar una implementación?**

- En la vista «Auditoría», busque la línea correspondiente a la implementación que desea reiniciar y, a continuación, haga clic en el botón de acción ![reload.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/dgXn57hnw81vXtG5-reload.png) para reiniciar la implementación.

# Paquetes

##### **No consigo añadir un archivo a mi paquete.**  


- Una vez que haya añadido un archivo a su paquete, este quedará en espera; no olvide hacer clic en «Enviar el paquete en espera».

##### **He creado un paquete, pero no está disponible para su implementación, ¿por qué?**

- Si tu paquete no aparece en la lista de paquetes, o no es visible cuando deseas implementarlo, significa que está pendiente de sincronización en los servidores de retransmisión; espera unos instantes antes de que aparezca en la «Lista de paquetes».

##### **¿Por qué mi paquete no está disponible en la página de añadir paquetes al Kiosk?**

- Su paquete debe tener un inventario asociado para que sea visible en la lista de paquetes disponibles para el quiosco.

# Consola y administración

##### **¿Por qué la consola es lenta, inestable o inaccesible?**

<div id="bkmrk-il-est-possible-que-">- Es posible que la plataforma esté sobrecargada. Por favor, espere unos minutos mientras resolvemos el problema. Si el problema persiste, póngase en contacto con el servicio de asistencia o con su administrador.

</div>##### **¿Cómo resolver los problemas de derechos de usuario?**

<div id="bkmrk-un-utilisateur-dispo">- Cada usuario dispone de un perfil con derechos predefinidos por Medulla. Si es superadministrador, puede modificar su perfil: vaya a la vista «Admin» y luego a «Gestión de entidades», haga clic en el botón ![7OaEkD2YqPh62cN2-usergroup.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/5qfwmk0eo9ywukmP-7oaekd2yqph62cn2-usergroup.png) «Gestionar usuarios» en la línea de la entidad en la que se encuentra el usuario. Haga clic en el botón ![edit.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/UmCzCWO3WNiGoJR3-edit.png) «Editar» del usuario en cuestión para modificar su perfil.

</div>##### **¿Por qué no tengo acceso a determinados grupos, auditorías o tareas programadas?**

<div id="bkmrk-si-vous-n%27%C3%AAtes-pas-s">- Si no es superadministrador, póngase en contacto con una persona que tenga el perfil de superadministrador para que modifique su «Perfil».

</div>##### **¿Qué hacer en caso de bloqueo en la consola o de errores XMPP?**

<div id="bkmrk-essayer-de-vous-d%C3%A9co">- Intente cerrar sesión y volver a iniciar sesión; también puede intentar borrar la caché y las cookies de su navegador. Si el problema persiste, póngase en contacto con el servicio de asistencia o con su administrador, explicando su situación con el máximo detalle y comunicando el error que se le ha mostrado.

</div>

# Mantenimiento remoto y puesta en marcha

##### **¿Qué hacer si el control remoto (VNC/RDP/PMAD) no funciona?**

- Compruebe el servicio TightVNC en los equipos que presentan problemas.
- No se puede acceder al control remoto si el ordenador aparece como desconectado (en gris); si es así, compruebe el estado del servicio medullaagent en el equipo.

# Preguntas frecuentes - Todas las plataformas

# Puestos de cliente (estado y visibilidad)

<p class="callout info">**Aplicable a:** Medulla – Agentes  
**Versión:**5.4.3 o posterior  
**Entorno:** On-Premise - SaaS compartido y SaaS privado  
**Categoría:** Soporte</p>

##### **¿Por qué algunos equipos aparecen como desconectados cuando están encendidos?**

- Compruebe los servicios medullaagent y medullanetnotify en los puestos que aparecen desconectados; si los servicios están «en ejecución» pero el puesto aparece desconectado en la interfaz (puesto en gris), póngase en contacto con el servicio de asistencia o con su administrador.
- Si hay errores en los registros del agente (en el dispositivo) «C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log», comuníquelos al servicio de soporte técnico o a su administrador.

##### **¿Por qué los inventarios o la información enviada están incompletos o son erróneos?**

- Asegúrese de que la dirección MAC del equipo cuyo inventario no se envía no esté ya en uso. Para comprobar si un equipo tiene dificultades para enviar su inventario, no es posible realizar la implementación en dicho equipo, aunque aparezca en línea en la interfaz (icono del ordenador azul); el icono de implementación del equipo en «Acciones» aparecerá desactivado.

# Paquetes

<p class="callout info">**Paquetes de módulos de Medulla / Todas las versiones / SaaS público y privado y On premise / Mantenimiento**</p>

##### **No consigo añadir un archivo a mi paquete.**  


- Una vez que haya añadido un archivo a su paquete, este queda en espera; no olvide hacer clic en «Enviar el paquete en espera».

##### **He creado un paquete, pero no está disponible para su implementación, ¿por qué?**

- Si su paquete no aparece en la lista de paquetes, o no está visible cuando desea implementarlo, es porque está pendiente de sincronización en los relés; espere unos instantes hasta que aparezca en la «Lista de paquetes».

##### **¿Por qué mi paquete no está disponible en la página de añadir paquetes al Kiosk?**

- Su paquete debe tener un inventario asociado para que sea visible en la lista de paquetes disponibles para el quiosco.

# Consola y administración

<p class="callout info">**Medulla / Todas las versiones / SaaS público y privado y On premise / Mantenimiento**</p>

##### **¿Por qué la consola es lenta, inestable o inaccesible?**

<div id="bkmrk-il-est-possible-que-">- Es posible que la plataforma esté sobrecargada. Por favor, espere unos minutos mientras resolvemos el problema. Si el problema persiste, póngase en contacto con el servicio de soporte técnico o con su administrador.

</div>##### **¿Cómo resolver los problemas de derechos de usuario?**

<div id="bkmrk-un-utilisateur-dispo">- Cada usuario dispone de un perfil con derechos predefinidos por Medulla. Si es superadministrador, puede modificar su perfil: vaya a la vista «Admin» y luego a «Gestión de entidades», haga clic en el botón ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/OMlud2dUiDDo1Ovk-image.png) «Gestionar usuarios» en la línea de la entidad en la que se encuentra el usuario. Haga clic en el botón ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/IFSWnlgKgaceWTeL-image.png) «Editar» del usuario en cuestión para modificar su perfil.

</div>##### **¿Por qué no tengo acceso a determinados grupos, auditorías o tareas programadas?**

<div id="bkmrk-si-vous-n%27%C3%AAtes-pas-s">- Si no es superadministrador, póngase en contacto con una persona que tenga el perfil de superadministrador para que modifique su «Perfil».

</div>##### **¿Qué hacer en caso de bloqueo en la consola o de errores XMPP?**

<div id="bkmrk-essayer-de-vous-d%C3%A9co">- Intente cerrar sesión y volver a iniciar sesión; también puede intentar borrar la caché y las cookies de su navegador. Si el problema persiste, póngase en contacto con el servicio de asistencia o con su administrador, explicando su situación con el máximo detalle y comunicando el error que se le ha mostrado.

</div>

# Mantenimiento remoto y puesta en marcha

<p class="callout info">**Módulos de Medulla Ordenadores / Todas las versiones / SaaS público y privado y On premise / Mantenimiento**</p>

##### **¿Qué hacer si el control remoto (VNC/RDP/PMAD) no funciona?**

- Compruebe el servicio TightVNC en los equipos que presentan problemas.
- No se puede acceder al control remoto si el ordenador aparece como desconectado (en gris); si es así, compruebe el estado del servicio medullaagent en el equipo.

# Poner el agente en modo de depuración

<p class="callout info">**Medulla / Todas las versiones / SaaS público y privado y On premise / Mantenimiento**</p>

Poner el agente en**modo DEBUG** no puede ser más sencillo.

Acceda al archivo **agentconf.ini** que se encuentra en: **C:\\Archivos de programa\\Medulla\\etc\\agentconf.ini**

En la sección **\[global\]**

- Cambie el valor **log\_level = <span style="color:rgb(224,62,45);">INFO</span>** por **log\_level = <span style="color:rgb(45,194,107);">DEBUG</span>**
- Cambia el valor **log\_level\_slixmpp = <span style="color:rgb(224,62,45);">FATAL</span>**<span style="color:rgb(224,62,45);"> </span>por **log\_level\_slixmpp = <span style="color:rgb(45,194,107);">DEBUG</span>**

# Problema con el agente de Windows

<p class="callout info">**Medulla / Todas las versiones / SaaS público y privado y On premise / Mantenimiento**</p>

¿Su problema se refiere a una interacción entre**Medulla y un equipo Windows** (agente que no se conecta, acciones no aplicadas, equipo invisible, etc.)?

Para facilitar el diagnóstico, Medulla pone a su disposición un **script de verificación** que permite comprobar la conectividad de red, el estado del agente y la configuración del equipo.

**Descarga del script:**  
[https://dl.medulla-tech.io/nc/windows\_connection\_check\_signed.ps1](https://dl.medulla-tech.io/nc/windows_connection_check_signed.ps1)

(haga clic con el botón derecho del ratón en el enlace siguiente y seleccione  **«Guardar enlace como...»**)

#### Requisitos previos para las pruebas

Antes de empezar, asegúrese de haber descargado el script anterior y de haber preparado los equipos.

**En el equipo cliente Windows que tenga el agente Medulla:**

- Haga clic con el botón derecho del ratón en el script, haga clic en «Propiedades», marque la casilla «Desbloquear la ejecución del script» y confirme.

[![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)

- Autorice la ejecución de scripts de PowerShell:

`Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned`

> \# Responde «Sí para todos» (A o T) si se te solicita

#### Para PowerShell v7.5.4: 

No es necesario desbloquear el script. Debe ejecutar el comando visto anteriormente.

Le preguntará si desea autorizar al editor que publica el script; basta con confirmar haciendo clic en R o 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)

#### Prueba de Medulla Servidor &lt;- Equipo cliente Windows

*Comprobación de la comunicación directa entre el servidor y los equipos cliente.*

**En el equipo cliente (origen):** Ejecute la prueba **con el nombre de host** o **la IP del servidor**.

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

Se crea un archivo de registro (en la ubicación desde la que se ejecuta el script) que resume las pruebas realizadas: **LOG\_Test\_Flux.txt**

> *Si se producen errores de permisos al crear el archivo de registro, intente colocar el script en la carpeta **Descargas** del usuario, o conceda permisos al script **windows\_connection\_check.ps1** para crear un archivo en la misma ubicación.*

#### Medulla On-Premise

Si dispone de un servidor Medulla On-Premise, también tiene la posibilidad de ejecutar un diagnóstico del servidor hacia el terminal:

**En el servidor Medulla (origen):** Ejecute la prueba hacia el **nombre de host** o **la IP del terminal**.

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

**Recomendación:** adjunte el archivo **LOG\_Test\_Flux.txt** cuando solicite asistencia técnica.

# Preguntas frecuentes - ACL

# Introducción

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

**ACL:** Define el acceso a cada una de las funcionalidades de Medulla en función del perfil del usuario conectado.  
Las ACL evolucionan con cada versión de Medulla a medida que se amplían las funcionalidades.

**Perfil:** Se define en la herramienta de ITSM y permite establecer las autorizaciones de un usuario sobre una entidad.  
Se definen 3 perfiles: Superadministrador, Administrador y Técnico

**Restricción: No** hay diferenciación entre el par perfil/entidad en Medulla. Si un usuario tiene perfiles diferentes en distintas entidades, siempre se aplicará su perfil más permisivo a todas las entidades permitidas.

##### <span style="text-decoration:underline;">Configuración: </span>

Las ACL se configuran en el archivo:**/etc/mmc/plugins/glpi.ini.local**

Los 3 parámetros son:  **profile\_acl\_Super-Admin**  
**profile\_acl\_Admin**  
**profile\_acl\_Technician**

##### <span style="text-decoration:underline;">Pasos de configuración: </span>

1- En la lista, seleccione las funciones deseadas  
2- Conjuga las ACL en una cadena continua y termina con /  
3- Introducir la cadena en el archivo de configuración del perfil deseado  
4 - Reiniciar los servicios<span style="text-decoration:underline;">  
</span>

# Las ACL

##### <span style="text-decoration:underline;">Panel de control: </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;">Inventario: </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;">Paquetes: </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;">Implementación de paquetes:</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)

# Las ACL a continuación

##### <span style="text-decoration:underline;">Imágenes: </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;">Actualizaciones: </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;">Administrador local Superadministrador Gestión de servidores: </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)

# Preguntas frecuentes - Interfaz

# Consola y administración

<p class="callout info">**Aplicable a: Medulla – Interfaz  
Versión: Todas   
 Entorno: On-Premise / SaaS privado / SaaS compartido  
Categoría: Interfaz de Medulla / soporte**</p>

##### **¿Por qué la consola es lenta, inestable o inaccesible?**

<div id="bkmrk-il-est-possible-que-">- Es posible que la plataforma esté sobrecargada. Puede comprobar si encuentra errores en los registros, como «/var/log/mmc/mmc-agent» o «/var/log/mmc/master-\*.log». Si utiliza SaaS, póngase en contacto con nosotros.

</div>##### **¿Cómo resolver los problemas de derechos de usuario?**

<div id="bkmrk-un-utilisateur-dispo">- Cada usuario dispone de un perfil con derechos predefinidos por Medulla. Si es superadministrador, puede modificar su perfil: vaya a la vista «Admin» y luego a «Gestión de entidades», haga clic en el botón ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/OMlud2dUiDDo1Ovk-image.png) «Gestionar usuarios» en la línea de la entidad en la que se encuentra el usuario. Haga clic en el botón ![image.png](https://docs.medulla-tech.io/uploads/images/gallery/2026-03/IFSWnlgKgaceWTeL-image.png) «Editar» del usuario en cuestión para modificar su perfil.

</div>##### **¿Por qué no tengo acceso a determinados grupos, auditorías o tareas programadas?**

<div id="bkmrk-si-vous-n%27%C3%AAtes-pas-s">- Si no es superadministrador, póngase en contacto con una persona que tenga el perfil de superadministrador para que modifique su «Perfil».

</div>##### **¿Qué hacer en caso de bloqueo en la consola o de errores XMPP?**

<div id="bkmrk-essayer-de-vous-d%C3%A9co">- Intente cerrar sesión y volver a iniciar sesión; también puede intentar borrar la caché y las cookies de su navegador. Si el problema persiste, póngase en contacto con el servicio de asistencia o con su administrador, explicando su situación con el máximo detalle y comunicando el error que se le ha mostrado.

</div>

# Preguntas frecuentes: uso de Medulla

# Implementación (teledifusión)

##### **¿Por qué mis implementaciones permanecen bloqueadas en «Pending»?**

- El estado «Pending» indica que las implementaciones se procesarán en breve; si el bloqueo persiste, póngase en contacto con el servicio de asistencia o con su administrador.

##### **¿Por qué mis implementaciones permanecen bloqueadas en «Deployment Start»?**

- El estado «Deployment Start» indica que las implementaciones se procesarán en breve; si el bloqueo persiste, póngase en contacto con el servicio de asistencia o con su administrador.

##### **¿Qué hacer en caso de error de implementación: «Abort Package Execution»?**

- Debe comprobar el script vinculado al paquete; el error indica que no se está ejecutando correctamente. Puede intentar ejecutar el script manualmente en su equipo.
- Compruebe el resultado de la auditoría de la implementación, ya que puede dar pistas sobre el motivo del error.

##### **¿Qué hacer en caso de error de implementación: «Transfer Failed»?**

- Tu ordenador no puede recuperar el paquete debido a Rsync. Comprueba los permisos de Rsync en varias carpetas para el usuario pulseuser; los permisos deben configurarse de la siguiente manera:

```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)
                                   AUTORIDAD DE PAQUETES DE APLICACIONES\TODOS LOS PAQUETES DE APLICACIONES RESTRINGIDOS:(I)(OI)(CI)(IO)(GR,GE)

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

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

##### **¿Por qué mis transmisiones no se inician o tardan en hacerlo?**

- Si sus implementaciones tardan en iniciarse, es posible que su implementación en cola se vea ralentizada por la carga actual de la plataforma SaaS.
- Si tus implementaciones se quedan bloqueadas, ponte en contacto con el servicio de asistencia o con tu administrador.

##### **¿Cómo detener una implementación?**

- Dispone de un botón «Stop Deploy» en la vista de auditoría de una implementación para detener la implementación en curso.

##### **¿Cómo puedo ver el resultado de mi implementación?**  


- En la vista «Auditoría» puede encontrar la lista de todas sus implementaciones. Haga clic en el botón de acción « ![details.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/q65sgJD2FZnkt0Lf-details.png) » «Mostrar detalles de la implementación» para ver su implementación.

##### **¿Cómo reiniciar una implementación?**

- En la vista «Auditoría», busque la línea correspondiente a la implementación que desea reiniciar y, a continuación, haga clic en el botón de acción ![reload.png](https://docs.medulla-tech.io/uploads/images/gallery/2025-10/scaled-1680-/dgXn57hnw81vXtG5-reload.png) para reiniciar la implementación.

# Paquetes

##### **No consigo añadir un archivo a mi paquete.**  


- Una vez que haya añadido un archivo a su paquete, este quedará en espera; no olvide hacer clic en «Enviar el paquete en espera».

##### **He creado un paquete, pero no está disponible para su implementación, ¿por qué?**

- Si tu paquete no aparece en la lista de paquetes, o no es visible cuando deseas implementarlo, significa que está pendiente de sincronización en los servidores de retransmisión; espera unos instantes antes de que aparezca en la «Lista de paquetes».

##### **¿Por qué mi paquete no está disponible en la página de añadir paquetes al Kiosk?**

- Su paquete debe tener un inventario asociado para que sea visible en la lista de paquetes disponibles para el quiosco.

##### **Aumentar el tamaño de subida del paquete** 

Ejecute estos comandos con el tamaño deseado;**post\_max\_size y**  **upload\_max\_filesize corresponden** al nuevo tamaño de carga deseado.

```
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 debe** ser como mínimo 2,5 veces el tamaño de la subida.</p>

<p class="callout warning">Esta modificación puede provocar ralentizaciones. Sea prudente al aumentar el valor.</p>

# Actualizaciones (Windows Updates)

##### **¿Sus equipos no muestran ninguna actualización?**

- Compruebe en el submenú «Validación de productos de Microsoft» que ha activado correctamente los productos adecuados para los equipos con Windows 10 u 11.

- Compruebe el archivo de registro «/tmp/medulla-generate-winupdate-packages.log»; si contiene el mensaje: «Error al descargar https://updates.medulla-tech.io/updates\_protected/xxxx-xxxxxx-dumptable\_update\_data.sql», abra un ticket con el servicio de asistencia de Medulla indicando los errores detectados en el archivo de registro.

- Compruebe el archivo de registro «/var/log/mmc/medulla-mariadb-synchro-update-package.log»; si contiene errores, abra un ticket en el servicio de asistencia de Medulla indicando los errores detectados en el archivo de registro.

<p class="callout warning">Esta funcionalidad requiere un contrato de soporte técnico activo.  
Este módulo se basa en procesos avanzados (análisis de vulnerabilidades, correlación de datos, cálculo de estados) realizados en los servidores de Medulla.  
El contrato de soporte permite financiar la infraestructura necesaria para estos procesos, así como su mantenimiento en condiciones operativas.  
El contrato de soporte técnico también incluye:  
el soporte técnico y la asistencia,  
el acceso a las nuevas funcionalidades sujetas a un contrato de soporte activo,  
la participación en la mejora continua de la solución.  
Para activar estas funcionalidades, le invitamos a suscribir un contrato de soporte poniéndose en contacto con nosotros en la siguiente dirección: <medulla@medulla-tech.io></p>

# Los menús de imágenes

<p class="callout info">**Aplicable a:** Medulla – Imágenes  
**Versión:**5.4.3 o posterior  
**Entorno:** On-Premise / SaaS privado con relé de imágenes.  
**Categoría:** Uso</p>

Este documento se centra en la gestión y la generación de menús de imágenes.

##### ¿Qué es un menú de imágenes?

Un menú de imágenes es un conjunto de servicios y plantillas asociados a un equipo, que se pueden utilizar durante la secuencia de arranque (en red) de un equipo.  
Durante un arranque PXE, el equipo solicita su menú al servidor. Son posibles varios casos:

- La máquina no tiene ningún menú asociado: el servidor le asigna un menú por defecto
- La máquina forma parte de un grupo de máquinas: el servidor le envía el menú asociado a ese grupo.
- La máquina no forma parte de un grupo y tiene un menú asociado: el servidor le envía dicho menú.

El desarrollo posterior del proceso de creación de imágenes depende del contenido de este menú.

Existen diferentes niveles de menús:

- Los menús del servidor de imágenes 
    - El menú de registro
    - El menú predeterminado
- El menú de la máquina
- El menú de grupos

##### Los menús del servidor de imágenes:

- El menú «register»:

Este menú es fijo. Se compone de los siguientes servicios:  
\- **continuar**: este servicio permite arrancar la máquina de forma normal.  
\- **register:** este servicio permite registrar una máquina en el sistema de imágenes.

- El menú predeterminado

Cada servidor de imágenes recibe un menú predeterminado. Este menú está compuesto por los siguientes servicios:  
\- `continue`: este servicio permite arrancar la máquina normalmente.  
\- `backup`: crea una copia del disco de la máquina en el sistema de imágenes.

- Modificaciones

Este menú se puede modificar desde la interfaz MMC.

Las modificaciones del menú predeterminado no afectan a los menús de las máquinas ni de los grupos. Para que las máquinas se beneficien de las modificaciones del menú predeterminado, es necesario realizar un «reinicio» de los menús de la entidad.

- Añadir/eliminar un servicio

Hay varios servicios disponibles que se pueden añadir al menú.

<p class="callout success">La página que define los servicios disponibles en un menú es la siguiente:  
MMC &gt; Imágenes &gt; Gestionar servicios de menú.</p>

En esta página, los servicios se asocian a la entidad seleccionada. Al cambiar de entidad, se modifica la lista de servicios asociados a dicha entidad.

- Añadir/eliminar una imagen maestra

Esta sección no aborda cómo convertir una imagen en un modelo.

Los masters presentes en el servidor de imágenes pueden asociarse al menú por defecto.

<p class="callout success">La página que permite asociar plantillas al menú predeterminado es la siguiente:  
MMC &gt; Imágenes &gt; Gestionar masters.</p>

- Modificar el orden de los servicios y las plantillas

<p class="callout success">Los diferentes servicios y plantillas asociados al menú predeterminado se pueden ver en la siguiente página:  
`MMC &gt; Imágenes &gt; Menú de inicio predeterminado`.</p>

En esta página es posible modificar el orden de los elementos del menú. También es posible modificar parámetros específicos de los elementos asociados.

- Servicios mínimos de un menú

<p class="callout warning">Actualmente, un menú debe incluir al menos un servicio (o una imagen). Por lo general, el servicio básico es `continue` para que sea funcional.</p>

El servicio mínimo debe validar las siguientes opciones:

\- **Predeterminado activado** para que este servicio se seleccione por defecto  
\- **Visible activado** para que este servicio sea visible en el menú de inicio  
\- **WOL por defecto** activado para no tener un traceback, aunque no sé para qué sirve esta opción.

<p class="callout warning">Se está considerando una corrección para no permitir la eliminación del último servicio de un menú.</p>

- El menú de la máquina

<p class="callout success">Se puede acceder al menú de una máquina desde la siguiente página:  
**MMC &gt; Máquinas &gt; acción:Gestión de imágenes.**</p>

Esta página está organizada en tres pestañas:  
\- **Menú de inicio**: esta pestaña permite visualizar y modificar el menú.  
\- **Servicios del menú**: esta pestaña permite asociar servicios al menú de la máquina.  
\- **Imágenes y máster**: esta pestaña permite asociar másteres al menú de la máquina.

Un menú de máquina no debería estar vacío. Si es así, hay varias posibilidades:  
\- La máquina ha copiado un menú predeterminado vacío (poco probable, ya que, por lo general, la copia en esta situación genera un traceback).  
\- Un administrador ha eliminado todos los elementos del menú de la máquina.

- El menú de grupos

Básicamente, el menú de un grupo es similar al menú de una máquina. Sin embargo, está asociado a un grupo de imágenes, y no a una máquina específica.

<p class="callout success">Para acceder a él, hay que ir a la siguiente página:  
MMC &gt; Imágenes &gt; Todos los grupos de imágenes &gt; acción:Gestión de imágenes.</p>

El menú de un grupo prevalece sobre el menú de una máquina. Cuando se solicita la página del menú de una máquina, es posible que **\*\*no se vea\*\*** la línea de encabezado que indica que la máquina forma parte de un grupo.

En ese caso, la máquina muestra su menú personalizado, y no el del grupo. Esto puede generar confusión para el administrador.

# Preguntas frecuentes: Agentes

# Puestos de cliente (estado y visibilidad)

<p class="callout info">**Aplicable a: Medulla – Agente  
Versión: Todas   
 Entorno: On-Premise / SaaS privado / SaaS compartido  
Categoría: Agente Medulla / soporte**</p>

##### **¿Por qué algunos puestos aparecen como desconectados cuando están encendidos?**

- Compruebe los servicios medullaagent y medullanetnotify en los equipos que aparecen desconectados; si los servicios están «en ejecución» pero el equipo aparece desconectado en la interfaz (equipo en gris), póngase en contacto con el servicio de soporte técnico o con su administrador.
- Si hay algún error en los registros del agente (en el terminal) «C:\\Program Files\\Medulla\\var\\log\\xmpp-agent-machine.log», comuníquelo al servicio de soporte técnico o a su administrador.

##### **¿Por qué los inventarios o la información enviada están incompletos o son erróneos?**

- Asegúrese de que la dirección MAC del equipo cuyo inventario no se envía no esté ya en uso. Para comprobar si un equipo tiene dificultades para enviar su inventario, no es posible realizar la implementación en dicho equipo, aunque aparezca en línea en la interfaz (icono del ordenador azul); el icono de implementación del equipo en «Acciones» aparecerá desactivado.

# GPO

<p class="callout info">**Aplicable a:**Medulla – Agente  
**Versión:** Todas   
**Entorno:** On-Premise / SaaS privado / SaaS compartido  
**Categoría:** Agente Medulla</p>

### Implementación del agente Medulla a través de GPO

####   
¿Cuál es el mejor método para implementar el agente Medulla en todos los equipos de un dominio de Active Directory?

  
El método recomendado es utilizar una**tarea programada a través de las Preferencias de política de grupo (GPP)** con la opción **«Aplicar una vez y no volver a aplicar».**

  
Este método es:  
\- Compatible con cualquier archivo EXE (no se necesita MSI)  
\- Se ejecuta una sola vez por equipo  
\- Se inicia con derechos de sistema (administrador)  
\- Es oficialmente compatible con Microsoft  
\- Fiable y evita reinstalaciones repetidas

####   
¿Cómo se implementa este método?

#####   
Paso 1: Preparar el archivo de instalación

1\. Copie el instalador en una unidad compartida de red accesible: *(Asegúrese de que la ruta sea accesible para «Todos» o «Equipos del dominio» en modo de lectura).*

> \\\\SERVIDOR\\IMPLANTACIÓN\\Medulla-Agent-windows-FULL-latest.exe

Cree un script de PowerShell como este:

> $CheminSetup = "\\\\SERVIDOR\\IMPLANTACIÓN\\Medulla-Agent-windows-FULL-latest.exe"  
> $Arguments = "/S"
> 
> $NombreDelServicio = "medullaagent"
> 
> $ServiceStatus = Get-Service -Name $NomDuService -ErrorAction SilentlyContinue
> 
> if ($ServiceStatus) {  
>  Write-Output "El servicio $NombreDelServicio ya existe. Instalación cancelada."  
>  Exit 0  
> }
> 
> try {  
>  Start-Process -FilePath $RutaDeInstalación -ArgumentList $Argumentos -Wait -NoNewWindow -ErrorAction Stop  
> }  
> catch {  
>  Write-Error "Error de instalación: $\_"  
>  Exit 1  
> }

  
2\. Configure los permisos del recurso compartido:  
\- **Lectura**para el grupo **Domain Computers**

#####   
Paso 2: Crear el GPO

  
1\. Abra la consola**de administración de directivas de grupo**  
2\. Cree un nuevo GPO, por ejemplo: `Implementación del agente Medulla`

#####   
Paso 3: Configurar la tarea programada

1\. Edite el GPO y vaya a:

> Configuración del equipo  
>  → Preferencias  
>  → Panel de control  
>  → Tareas programadas

2\. Haz clic con el botón derecho →**Nuevo** →**Tarea inmediata (al menos en Windows 7)**

  
3\. En la pestaña **General:**   
\- Nombre: `Instalación del agente Medulla`  
\- Cuenta: **SYSTEM**  
\- Ejecutar con los privilegios más altos

  
4\. En la pestaña**Acciones**:

- **Acción:** Iniciar un programa.
- **Programa/script:** `ruta_instalación_powershell/powershell.exe`
- **Añadir argumentos:** `-ExecutionPolicy Bypass -File "\\Servidor\Recursos compartidos\TuScript.ps1"` *(Asegúrate de que la ruta sea accesible para «Todos» o «Equipos del dominio» en lectura).*

#####   
Paso 4: Aplicar la GPO

  
1\. Vincule la GPO a**la Unidad de Organización (OU)**que contiene sus equipos  
2\. En un equipo de prueba, ejecute:

> gpupdate /force

  
3\. Reinicie el equipo o espere a la próxima actualización de políticas

<p class="callout warning">Atención: siempre es obligatorio reiniciar los equipos tras la instalación del agente; el GPO, por defecto, no reinicia el equipo por sí solo. Por lo tanto, hay que tener en cuenta que cada equipo debe reiniciarse tras la instalación del agente.</p>

####   
¿Por qué no utilizar un script de inicio o de inicio de sesión?

  
Los scripts tradicionales (Startup Script o Logon Script) presentan varias desventajas:  
\- Riesgo de ejecución múltiple  
\- Dificultad para detectar si la instalación ya se ha realizado  
\- Problemas de permisos según el contexto de ejecución  
\- Menos fiables que las tareas programadas de GPP

  
El método mediante tareas programadas GPP resuelve todos estos problemas.

####   
¿Qué hace la opción «Apply once and do not reapply»?

  
Esta opción garantiza que:  
\- La tarea se ejecute**una sola vez**en cada equipo  
\- Aunque el GPO permanezca activo durante años, la instalación no se vuelve a ejecutar  
\- No se necesita un script de detección complejo  
\- No se producen reinstalaciones accidentales

  
Es el equivalente a una implementación «fire and forget» (lanzar y olvidar).

Con la opción  **«Apply once and do not reapply»**, es imprescindible comprobar que el agente se ha instalado correctamente. Si la instalación ha fallado durante el proceso, no se volverá a ejecutar.

Puede desactivar esta opción ( **«Apply once and do not reapply»**) para evitar problemas de instalación del agente, pero mantener la parte IF en el script de PowerShell que comprueba si el servicio **medullaagent está** presente (por defecto, ya presente en el script anterior):

> if ($ServiceStatus) {  
>  Write-Output "El servicio $NomDuService ya existe. Instalación cancelada."  
>  Exit 0  
> }


#### ¿Cómo comprobar que la implementación ha funcionado?

#####   
En un equipo cliente:

1\. Comprueba que se ha creado la tarea programada:

> Panel de control → Herramientas administrativas → Programador de tareas

Busque la tarea «Instalación del agente Medulla»

2\. Compruebe los registros de instalación del agente Medulla

3\. Compruebe que el equipo aparece en la consola de Medulla

#####   
En el controlador de dominio:

  
Utilice los informes de GPO para ver qué equipos han aplicado la política.

####   
¿Puedo utilizar este método para actualizar el agente?

  
Por defecto, el agente se actualiza automáticamente, pero si no es así, sí, aunque con algunas precisiones:

  
\- Si crea un **nuevo GPO** con un nuevo nombre de tarea, se ejecutará una vez en todos los equipos (si «Apply once» está activado)  
\- Si modifica la ruta del archivo EXE en la tarea existente con «Apply once», **no**  se volverá **a ejecutar (** ese es el objetivo de esta opción)

  
Para las actualizaciones, es preferible:  
1\. Crear un nuevo GPO con un nuevo nombre de tarea para cada versión principal  
2\. O utilizar el sistema de actualización integrado de Medulla

####   
¿Cuáles son los requisitos previos?

  
\- Un controlador de dominio de Active Directory (Windows Server 2008 R2 o superior)  
\- Un recurso compartido de red al que los equipos puedan acceder en modo de lectura  
\- El instalador del agente de Medulla con la opción de instalación silenciosa (`/S`)  
\- Permisos para crear y vincular GPO

####   
¿Cuánto tiempo se tarda en implementar todos los equipos?

  
La implementación se realiza al ritmo de la actualización de las políticas de grupo:  
\- Por defecto: cada**90 minutos**(con un desfase aleatorio de 0 a 30 minutos)  
\- Al reiniciar el equipo  
\- Con `gpupdate /force` (inmediato)

  
Para una implementación rápida en un parque de 100 equipos, calcule entre**2 y 4 horas**, dependiendo de la actividad de la red.

#### Ejecutar la instalación tras iniciar sesión

La ejecución habitual de un GPO se realiza antes de iniciar sesión con privilegios de SYSTEM.

Esto puede resultar molesto para el usuario, que puede pensar que su ordenador se ha bloqueado.

##### Solución 1: La tarea programada «Al iniciar la sesión»

El usuario accede a su escritorio y la instalación se inicia de forma silenciosa en segundo plano con derechos de SYSTEM.

1. En su GPO **de equipo** (no de usuario), vaya a: **Preferencias** &gt; **Configuración del Panel de control** &gt; **Tareas programadas**.
2. Nuevo &gt; **Tarea programada (al menos en Windows 7)**.
3. **Pestaña General:**
    
    
    - **Cuenta de usuario:** `NT AUTHORITY\SYSTEM` (o simplemente escribe `SYSTEM`).
    - Marque la casilla **Ejecutar con los permisos máximos**.
4. **Pestaña Desencadenantes (Triggers):**
    
    
    - Nuevo &gt; **Al iniciar sesión** (At log on).
    - Puede elegir «Cualquier usuario».
5. **Pestaña Acciones:**
    
    
    - Programa: `ruta_de_instalación_powershell/powershell.exe/powershell.exe`
    - Argumentos: `-ExecutionPolicy Bypass -File "\\Servidor\Compartido\SCRIPT_POWERSHELL.ps1"`

SCRIPT\_POWERSHELL.PS1, corresponde al script que aparece al principio de la página y que permite instalar el agente de forma silenciosa.

---

##### Solución 2: La opción «Asíncrono»

Si desea conservar su script actual (en «Scripts de inicio») pero simplemente dejar de bloquear la pantalla «Por favor, espere...»:

1. Vaya a la GPO: **Configuración del equipo** &gt; **Plantillas de administración** &gt; **Sistema** &gt; **Scripts**.
2. Busque el parámetro: **Ejecutar scripts de inicio de forma asíncrona**.
3. Póngalo en **Activado**.

Nota: Si crea una tarea con un desencadenador «Al iniciar sesión» y marca  **«Aplicar una vez y no volver a aplicar»**, el GPO creará la tarea una vez, pero**la tarea permanecerá en el PC y seguirá ejecutándose cada vez que se inicie sesión.** Asegúrate, por tanto, de mantener la condición**IF en** el script que permite verificar la presencia del servicio **medullaagent (**por defecto, ya presente en el script anterior):

> if ($ServiceStatus) {  
>  Write-Output "El servicio $NomDuService ya existe. Instalación cancelada."  
>  Exit 0  
> }

####   
Recursos adicionales

  
\- \[Documentación oficial de Microsoft sobre las preferencias de directiva de grupo\](https://docs.microsoft.com/fr-fr/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn581922(v=ws.11))  
\- \[Documentación de implementación de Medulla\](https://medulla-project.org/)

  
\---

  
**Fecha de creación**: diciembre de 2024   
**Autor**: Documentación de Medulla   
**Versión**: 1.0

# Reconfigurar mi agente

<p class="callout info">**Aplicable a:**Medulla – Agente  
**Versión:** Todas  
**Entorno:** On-Premise / SaaS privado / SaaS compartido  
**Categoría:** Agente Medulla</p>

Puede reconfigurar el agente para cambiar el nombre DNS con el que debe comunicarse, pero también es posible modificar varios otros parámetros.

Esta es la ubicación del agente en el servidor:  
`/var/lib/pulse2/clients/`

Encontrará un script llamado: **generate-pulse-agent.sh.** Si lo ejecuta pasando el parámetro **--help**, obtendrá todos los parámetros modificables:

**./generate-pulse-agent.sh --help**  
Uso:  
./generate-pulse-agent.sh \[--conf-xmppserver=&lt;servidor de configuración XMPP&gt;\]  
 \[--conf-xmppport=&lt;puerto del servidor de configuración XMPP&gt;\]  
 \[--conf-xmpppasswd=&lt;contraseña del servidor de configuración XMPP&gt;\]  
 \[--aes-key=&lt;PSK AES de 32 caracteres&gt;\]  
 \[--xmpp-passwd=&lt;contraseña del servidor XMPP&gt;\]  
 \[--chat-domain=&lt;dominio XMPP&gt;\]  
 \[--inventory-tag=&lt;Etiqueta añadida al inventario&gt;\]  
 \[--minimal \[--base-url=&lt;URL desde la que descargar el agente y las dependencias&gt;\]\]  
 \[--disable-vnc (Desactivar el servidor VNC)\]  
 \[--vnc-port=&lt;Puerto predeterminado 5900&gt;\]  
 \[--vnc-password=&lt;Contraseña VNC cifrada con DES&gt;\]  
 \[--ssh-port=&lt;Puerto predeterminado 22&gt;\]  
 \[--disable-rdp (Desactivar la configuración de RDP)\]  
 \[--disable-inventory (Desactivar Fusion Inventory)\]  
 \[--disable-geoloc (Desactivar la geolocalización, por ejemplo, en equipos que no tienen acceso a Internet)\]  
 \[--linux-distros (Distribuciones de Linux utilizadas)\]  
 \[--updateserver (URL de descarga para las actualizaciones del agente)\]

##### Ejemplos:

**Servidor XMPP**

Para reconfigurar la entrada DNS de contacto del equipo (servidor al que debe conectarse el equipo):

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

**Puerto SSH**

Para modificar el puerto SSH de contacto del servidor:

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

Si modifica el puerto SSH, siga también esta documentación:

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

**Desactivar VNC**

Para desactivar VNC en tus agentes:

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

**Desactivar RDP**

Para desactivar RDP en sus agentes:

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

# Generar agentes para Windows y Linux

<p class="callout info">**Aplicable a: Medulla – Agentes  
Versión: Todas   
 Entorno: On-Premise / SaaS privado / SaaS compartido  
Categoría: Agentes de Medulla / soporte**</p>

Antes de generar los agentes para sus equipos Windows o Linux, debe saber si desea un agente por entidad GLPI o si prefiere tener un único tipo de agente que informe de sus máquinas a la entidad principal.

#### Generar un agente por entidad

Para generar sus agentes por entidad, debe ejecutar el siguiente comando:

`generate_medulla_agent.sh all force`

A continuación, compruebe que cada entidad tiene un agente:

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

**Cada entidad está vinculada a una etiqueta. En esta carpeta encontrará un directorio por etiqueta y, dentro de ellos, los agentes.**

#### Generar un agente global

Para generar un único agente por sistema operativo, que registre sus máquinas en la entidad principal de GLPI, debe ejecutar el siguiente comando:

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

A continuación, compruebe que el agente está presente:

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

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

#### Generar un agente y desactivar el inventario glpi-agent

<p class="callout warning">Requiere Medulla y su agente en la versión 5.5.2</p>

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

Si decide generar un agente global pero desea colocar sus máquinas en determinadas entidades GLPI, tiene dos opciones.

Colocar manualmente las máquinas en la entidad deseada a través de la interfaz de GLPI.

O definir reglas en GLPI para redefinir automáticamente la entidad de las máquinas mediante su máscara de subred u otros criterios.

# Agentes de la distribución Linux MINT

<p class="callout info">**Aplicable a:**Medulla – Agente  
**Versión:** inferior a 5.5.1   
**Entorno:** On-Premise / SaaS privado / SaaS compartido  
**Categoría:** Agente Medulla</p>

En la versión 5.5.1 de Medulla, la compatibilidad con la versión Linux MINT será nativa.

Para las versiones anteriores a la 5.5.1, para poder instalar el agente Medulla en la distribución Linux Mint, basta con seguir los pasos que se indican a continuación.

Todos los comandos deben ejecutarse como root.

Para ello, escribe: una vez conectado a tu cuenta de usuario. Otro método consiste en añadir «sudo» delante de cada comando.

```
sudo su - 
```

Se le pedirá una contraseña; introdúzcala.

Descargue el script de instalación del agente desde su equipo Linux correspondiente

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

Escriba los siguientes comandos:

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

Modifique el script añadiendo la sección linuxmint en los siguientes lugares:

Líneas 50-51:

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

Modifica la línea añadiendo |linuxmint después de zorin.

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

A continuación

Líneas 215-216

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

Modifica la línea añadiendo |linuxmint después de zorin

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

Añade después de la línea 63 el siguiente comando:

```
apt update
```

Guarde su script.

Ejecute el comando para ejecutar el script de instalación:

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

Se llevará a cabo la instalación y aparecerá el siguiente resultado en su equipo.

[![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)

# Desinstalación del agente Medulla (versiones anteriores a la 5.5.2)

<p class="callout info">**Aplicable a:** Medulla – Agente  
**Versión:** inferior a 5.5.2   
**Entorno:** On-Premise / SaaS privado / SaaS compartido  
**Categoría:** Agente Medulla</p>

Para desinstalar el agente Medulla:

Haga clic en el menú Inicio de Windows y, a continuación, en Configuración

[![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)

A continuación, vaya al menú de la izquierda de sus ajustes y haga clic en Aplicaciones:

[![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)

Haga clic en el menú de la derecha en «Aplicaciones instaladas»

Desplácese hacia abajo por la lista de aplicaciones hasta encontrar la entrada «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)

Haga clic en [![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)se abrirá un menú desplegable con Modificar / Desinstalar.

Haga clic en Desinstalar

Se le pedirá una confirmación; vuelva a hacer clic en el botón Desinstalar

[![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)

El agente Medulla desinstalará sus componentes mediante un ejecutable que aparecerá en su pantalla:

[![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)

Una vez completada la desinstalación, haz clic en el botón Cerrar

[![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)

En el menú de aplicaciones solo quedarán estas dos entradas:

[![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)

Se trata de dos entradas del Registro. Para eliminarlas:

Vuelva al menú de inicio de Windows.

Escriba ***«regedit»*** en la barra de búsqueda y ***pulse Intro***

Desplácese por el árbol:

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

Busca la primera clave de registro «Medulla Extract Drivers». Haz clic con el botón derecho del ratón en el icono de carpeta de esta clave y selecciona «Eliminar»; a continuación, confirma la acción.

[![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)

Haz lo mismo con «Medulla Update Info».

# Desinstalación del agente Medulla versión 5.5.2 y superiores

<p class="callout info">**Aplicable a:**Medulla – Agente  
**Versión:** 5.5.2 y posteriores  
**Entorno:** On-Premise / SaaS privado / SaaS compartido  
**Categoría:** Agente Medulla</p>

### Windows:

Hay un script disponible en su servidor Medulla:

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

Abre una consola de PowerShell con derechos de administrador. Asegúrate de que PowerShell esté configurado para ejecutar scripts:

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

Responda \[A\] «Yes to all»

<div id="bkmrk-%C3%89tapes-%3A">**Pasos:**</div>1. **Descargue el script** uninstall-medulla-agent-windows.ps1 en el equipo.
2. **Ejecute el script** según los casos que desee gestionar:

- Desinstalar solo el agente y sus dependencias de Medulla.

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

- Desinstalar el agente y glpi-agent

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

- Desinstalar el agente, glpi y tightvnc

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

- Desinstalar el agente, glpi-agent, tightvnc y python

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

Hay una opción disponible, -SILENT, que permite iniciar la desinstalación en modo silencioso en cada caso.

### Linux:

Hay un script disponible en su servidor Medulla:

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

El script se ejecuta como root o mediante el comando sudo:

escriba los siguientes comandos:

```
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>Desinstalación básica (sin Python ni GLPI)</div><div>  
</div></div>```
./uninstall-medulla-agent-linux.sh
```

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

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

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

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

# Preguntas frecuentes - Infraestructura de Medulla

# Arquitectura e implementación de los servidores de retransmisión de Medulla

Los servidores de retransmisión son componentes locales diseñados para optimizar la distribución de recursos y la comunicación entre los agentes y el servidor principal**de Medulla**.

##### 1. El relé clásico (LAN / red privada)

El relé clásico se instala dentro de la red de la empresa. Su objetivo es servir de «caché» local y de punto de distribución para los agentes ubicados en el mismo sitio o en el mismo segmento de red.

- **Función:** Optimización del ancho de banda y despliegue de imágenes (Imaging).
- **Ubicación:** Sitio remoto, detrás de un router o un enlace entre sitios.

##### 2. El relé DMZ (Exposición pública)

El relé DMZ es una pasarela segura entre Internet y el servidor principal de Medulla.

- **Función:** Permitir la gestión de puestos móviles (teletrabajo, desplazamientos) sin exponer directamente el servidor principal a Internet.
- **Ubicación:** Zona Desmilitarizada (DMZ), accesible a través de una IP pública o un nombre de dominio externo.
- **Nota:** No permite la creación de imágenes (masterización) a distancia a través de Internet.

##### 3. Dimensionamiento (Especificaciones técnicas)

Los requisitos de hardware son idénticos para ambas funciones, pero su función de software diferirá durante la configuración.

**A. Servidor(es) de retransmisión (LAN)**

<table id="bkmrk-composant-sp%C3%A9cificat" style="width:100.595%;"><thead><tr><td style="width:26.1194%;">**Componente**</td><td style="width:73.8806%;">**Especificación recomendada**</td></tr></thead><tbody><tr><td style="width:26.1194%;"><span>**SO**</span></td><td style="width:73.8806%;"><span>Debian 12.x</span></td></tr><tr><td style="width:26.1194%;"><span>**Arquitectura**</span></td><td style="width:73.8806%;"><span>X86-64</span></td></tr><tr><td style="width:26.1194%;"><span>**CPU**</span></td><td style="width:73.8806%;"><span>4 núcleos</span></td></tr><tr><td style="width:26.1194%;"><span>**RAM**</span></td><td style="width:73.8806%;"><span>8 GB</span></td></tr><tr><td style="width:26.1194%;"><span>**Partición /**</span></td><td style="width:73.8806%;"><span>20 GB (EXT4)</span></td></tr><tr><td style="width:26.1194%;"><span>**Partición /var**</span></td><td style="width:73.8806%;"><span>≥ 400 GB (XFS) o punto de montaje en la bahía</span></td></tr></tbody></table>

**B. Servidor de retransmisión DMZ (terminales móviles)**

<table id="bkmrk-composant-sp%C3%A9cificat-1" style="width:99.881%;"><thead><tr><td style="width:26.1337%;">**Componente**</td><td style="width:73.8663%;">**Especificaciones recomendadas**</td></tr></thead><tbody><tr><td style="width:26.1337%;"><span>**SO**</span></td><td style="width:73.8663%;"><span>Debian 12.x</span></td></tr><tr><td style="width:26.1337%;"><span>**Arquitectura**</span></td><td style="width:73.8663%;"><span>X86-64</span></td></tr><tr><td style="width:26.1337%;"><span>**CPU**</span></td><td style="width:73.8663%;"><span>4 núcleos</span></td></tr><tr><td style="width:26.1337%;"><span>**RAM**</span></td><td style="width:73.8663%;"><span>8 GB</span></td></tr><tr><td style="width:26.1337%;"><span>**Partición /**</span></td><td style="width:73.8663%;"><span>20 GB (EXT4)</span></td></tr><tr><td style="width:26.1337%;"><span>**Partición /var**</span></td><td style="width:73.8663%;"><span>≥ 200 GB (XFS) o punto de montaje en la bahía</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. Resumen de decisión</span>

Esta tabla le permite determinar qué tipo de servidor implementar según su situación:

<table id="bkmrk-condition-type-de-re"><thead><tr><td>**Condición**</td><td>**Tipo de relé necesario**</td><td>**Motivo principal**</td></tr></thead><tbody><tr><td><span>**Parque &gt; 5000 puestos** en una misma red</span></td><td><span>**Relé clásico (LAN)**</span></td><td><span>Reducción de la carga de CPU/RAM del servidor principal Medulla.</span></td></tr><tr><td><span>**Sitio remoto** (red diferente sin conexión LAN transparente)</span></td><td><span>**Relé clásico (LAN)**</span></td><td><span>Permitir la creación de imágenes locales y ahorrar ancho de banda WAN.</span></td></tr><tr><td><span>**Terminales móviles** (teletrabajo, fuera de la red privada, sin VPN)</span></td><td><span>**Relé DMZ**</span></td><td><span>Garantizar la comunicación de los agentes a través de Internet de forma totalmente segura.</span></td></tr><tr><td><span>**Sitios interconectados** (enlace privado de alta velocidad, flujos LAN autorizados)</span></td><td><span>**Ninguno (opcional)**</span></td><td><span>El servidor principal puede controlar todo el sistema, incluida la creación de imágenes.</span></td></tr></tbody></table>

# Procedimiento para añadir relés a Medulla SaaS dedicado

#### 1. Creación del servidor

---

Requisitos del sistema:

- SO: Debian 12.x
- Arquitectura: x86-64
- CPU: 4 vCPU
- RAM: 8 GB
- Almacenamiento
- /: 20 GB – EXT4
- /var: ≥ 400 GB – XFS (o un punto de montaje dedicado en una bahía o volumen externo)

#### 2. Creación de un usuario

---

Crea el usuario «medulla» y asígnale derechos de sudo.

#### 3. Instalación de la clave SSH

---

La clave pública SSH, que se adjunta, debe añadirse en:

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

```

#### 4. Apertura de los flujos de red

---

Los flujos deben estar abiertos en ambos sentidos entre:

- Servidor Medulla
- Relé (tu servidor)

##### 4.1. Flujo Servidor Medulla → Relé

**Puerto | Descripción**

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

##### 4.2. Flujo de retransmisión → Servidor Medulla

**Puerto | Descripción**

- 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. Información que debe facilitarnos

---

<span style="color:rgb(224,62,45);">**El equipo debe proporcionarnos:**</span>

- <span style="color:rgb(224,62,45);">Crear la entidad que desee dedicar al relé en ITSM (solo si desea una entidad diferente de la entidad principal).</span>
- <span style="color:rgb(224,62,45);">Confirmación de la apertura de los flujos de red mencionados anteriormente.</span>
- <span style="color:rgb(224,62,45);">Confirmación de la adición de la clave SSH en el servidor de retransmisión.</span>
- <span style="color:rgb(224,62,45);">La contraseña del usuario «medulla» con derechos de sudo sin contraseña.</span>
- <span style="color:rgb(224,62,45);">El FQDN de su servidor de retransmisión</span>

#### 6. Continuación de la instalación

---

Una vez que la máquina esté lista, realizaremos la instalación completa del software mediante Ansible.

Se generará automáticamente un agente Medulla para conectar los equipos a este servidor de retransmisión.

# Actualización de Medulla: de la versión 5.4.x a la 5.5.x

<p class="callout info">Medulla / 5.4.x / Actualización de Medulla a la versión 5.5.x / Mantenimiento de Medulla</p>

Para actualizar de la versión 5.4.X a la 5.5.x y superiores, siga los pasos que se indican a continuación:

<span style="font-size:11pt;font-family:Aptos, sans-serif;"><span style="font-size:11pt;font-family:Aptos, sans-serif;">Descargue el archivo en el servidor 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;">Otorgue permisos de ejecución al script: </span></span>

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

<span style="font-size:11pt;">Ejecuta la actualización: </span>

```
./update_medulla.sh
```

Una vez completado el proceso, vuelve a la interfaz de Medulla.

<p class="callout warning">Todos los comandos se ejecutan como root o con una cuenta que tenga derechos de administrador.</p>

# Extranet de asistencia

Si desea crear una cuenta de soporte para usted o para uno de sus colaboradores tras haber suscrito un contrato de soporte de Medulla, nada más sencillo: visite [https://extranet.medulla-tech.io/portal/](https://extranet.medulla-tech.io/portal/)

Haga clic en «¿Ha olvidado su contraseña?» e introduzca su correo electrónico y su nombre de usuario (nombre + apellidos).

[![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é es Fail2Ban?

Fail2Ban es una herramienta de prevención contra intrusiones que supervisa los intentos de conexión sospechosos en los registros del sistema (logs) y que puede implementarse en su infraestructura local.

### ¿Qué bloquea exactamente?

Fail2Ban protege principalmente contra ataques de tipo  **«Brute Force»** (fuerza bruta).

Para decidir si una actividad es maliciosa, Fail2Ban analiza los intentos de conexión e identifica patrones específicos. Estos son los errores comunes que desencadenan una alerta y un bloqueo:

- - **`Usuario no válido`:** alguien intenta iniciar sesión con nombres aleatorios (por ejemplo: `admin`, `root`, `test`, `guest`). Es el indicio típico de un bot que prueba diccionarios de nombres.
    - **`Contraseña incorrecta`:** existe un usuario conocido**,** pero la contraseña introducida es incorrecta. Un número excesivo de intentos indica un ataque de fuerza bruta.
    - **`Authentication failure` (Error de autenticación):** Un error general que se produce cuando las credenciales proporcionadas no coinciden con ninguna entrada de la base de datos segura del servidor.
    - **`Failed public key authentication` (Autenticación de clave pública fallida):** Aunque utilices claves de seguridad (más seguras que las contraseñas), Fail2Ban bloquea a quienes intentan presentar claves no autorizadas repetidamente.

Si una IP genera 5 fallos en un intervalo de 10 minutos, se bloquea durante 10 minutos.

# Instalación del sistema operativo Debian para el servidor Medulla

##### Características técnicas

<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;">Requisitos previos – Dimensionamiento de los servidores</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;">Servidor 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;">SO</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;">Arquitectura</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 núcleos</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 GB</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;">Partición /</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 GB 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;">Partición /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 como mínimo en XFS o punto de montaje en una bahía de almacenamiento</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;">Servidores de retransmisión multisitio</span>**

**<span style="font-size:11pt;font-family:FreeSans;color:#808080;">(si procede)</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;">SO</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;">Arquitectura</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 núcleos</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 GB</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;">Partición /</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 GB 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;">Partición /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 como mínimo en XFS o punto de montaje en una bahía de almacenamiento</span>

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

</div>##### Instalación del servidor Debian

Resumen:

<span><span>-</span></span><span><span><span style="font:7pt 'Times New Roman';"> </span></span></span> Separar solo /var de / y ponerlos en LVM

<span><span>- <span style="font:7pt 'Times New Roman';"> Instalar </span></span></span>el servidor SSH y las utilidades estándar del sistema

<span><span>- <span style="font:7pt 'Times New Roman';"> No </span></span></span>instalar ningún antivirus ni cortafuegos

<span><span>- <span style="font:7pt 'Times New Roman';"> Definir </span></span></span>una cuenta que

<span style="font-family:'Courier New';"><span>o <span style="font:7pt 'Times New Roman';"> pueda </span></span></span>ejecutar sudo sin contraseña

<span style="font-family:'Courier New';"><span>o <span style="font:7pt 'Times New Roman';"> pueda </span></span></span>conectarse desde la IP **94.130.207.190**

<span style="font-family:'Courier New';"><span>o <span style="font:7pt 'Times New Roman';"> pueda </span></span></span>conectarse con la siguiente clave:

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

##### Configuración de la partición de discos

Particione los discos siguiendo las instrucciones que se indican a continuación:

Realizar una partición manual

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

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

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

Creación de la partición /boot

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

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

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

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

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

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

Creación del LVM

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

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

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

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

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

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

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

Creación del grupo de volúmenes vg

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

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

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

Creación del volumen lógico lvroot

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

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

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

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

Repetir para los volúmenes lvswap y lvvar

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

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

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

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

Para obtener el siguiente esquema LVM:

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

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

Configurar la partición /

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

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

Repetir para cada una de las particiones swap y /var:

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

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

Para obtener el siguiente esquema de particiones:

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

##### Instalación de los paquetes

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

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

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

##### <span lang="en-us">Comprobación del servidor</span>

<span><span>1. <span style="font:7pt 'Times New Roman';"> Descargar </span></span></span>el script de verificación desde [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
```

<span><span>2. <span style="font:7pt 'Times New Roman';"> Ejecuta </span></span></span>los siguientes comandos:

```
chmod +x check_server_before_install.sh

./check_server_before_install.sh
```

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

Todas las pruebas del script deben dar resultado correcto; una vez hecho esto, puede descargar el script de instalación a través del formulario de contacto:

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

Si dispone de un contrato de asistencia técnica, envíe el resultado a delivery@medulla-tech.io. Si no es así, póngase en contacto con el departamento de «ventas» a través de nuestra página web[medulla-tech.io](https://docs.medulla-tech.io/medulla-tech.io).

Estos son los errores más comunes:

##### 1. Límites de Core Dump (limits)

**Contexto:** El archivo `/etc/security/limits.d/10-coredump-debian.conf` define el tamaño máximo de los archivos «core dump». Nuestro script espera valores específicos que no se corresponden con la configuración actual.

**Cómo solucionarlo:** Modifique el archivo mencionado para que se ajuste a lo esperado.

1. Abra el archivo: `sudo nano /etc/security/limits.d/10-coredump-debian.conf`
2. Modifique las líneas para que queden así:
    
    
    - `* hard core infinity`
    - `root hard core infinity`
    - `* soft core 0`
    - `root soft core 0`

**Fuentes recomendadas:** Documentación de Debian sobre `limits.conf` y `core dump`.

---

##### 2. Número de archivos abiertos (lsof)

**Contexto:** Las líneas `de lsof` correspondientes a los usuarios <span style="text-decoration:underline;">xxx</span> y `messagebus` indican que el número de archivos abiertos actualmente se desvía del valor esperado por el script de verificación (a menudo porque hay servicios ya en ejecución o mal configurados).

**Cómo solucionarlo:** A menudo es solo informativo, pero si necesitas reducir estas cifras:

- Identifique qué están haciendo estos usuarios: `ps -u número_de_usuario_con_error`.
- Reinicie los servicios asociados (por ejemplo: `sudo systemctl restart dbus` para messagebus).
- Si los valores esperados son demasiado estrictos para su uso, puede que tenga que ajustar el propio script de verificación o los límites globales `de ulimit`.

**Fuentes recomendadas:** Manual de `lsof` y gestión de descriptores de archivos en Linux.

---

##### 3. Parámetros de systemd (NPROC y SIGPENDING)

**Contexto:** Los valores `DefaultLimitNPROC` (número máximo de procesos) y `DefaultLimitSIGPENDING` (señales en espera) deben ser**31541**.

**Cómo solucionarlo:** Hay que forzar estos valores en la configuración global de systemd para que coincidan exactamente con lo esperado.

1. Modifique el archivo de configuración: `sudo nano /etc/systemd/system.conf`
2. Descomente o añada las siguientes líneas:
    
    
    - `DefaultLimitNPROC=31541`
    - `DefaultLimitSIGPENDING=31541`
3. Recargue la configuración y reinicie (o utilice `systemctl daemon-reexec`).

**Fuentes recomendadas:** Documentación `de systemd-system.conf` en freedesktop.org.

# Comprueba que el inventario se sincroniza correctamente con Medulla

<div id="bkmrk-v%C3%A9rifications-%C3%A0-effe">**Comprobaciones que deben realizarse en el equipo cliente (máquina en cuestión)**   
</div><div id="bkmrk-1%29-v%C3%A9rifier-si-l%E2%80%99inv">**1) Compruebe si se ha generado correctamente el inventario**  
Ejecute:</div>```
dir c:\progra~1\medulla\tmp\inventory.txt*
```

<div id="bkmrk-si-aucun-fichier%C2%A0inv">Si no hay ningún archivo**inventory.txt**o**inventory.txt.back**, esto indica un problema en la generación del inventario.  
  
</div><div id="bkmrk-2%29-forcer-la-g%C3%A9n%C3%A9rat">**2) Forzar la generación del inventario**  
Si el inventario no se genera automáticamente, ejecute:</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">Este comando devolverá un error explícito si la generación falla.  
=&gt; O bien averigua cómo resolver el error, o bien envía el resultado del comando a<support@medulla-tech.io>  
  
</div><div id="bkmrk-v%C3%A9rifications-%C3%A0-effe-1">**Comprobaciones que hay que realizar en el servidor Medulla**   
</div><div id="bkmrk-3%29-v%C3%A9rifier-l%E2%80%99url-de">**3) Compruebe la URL de transmisión del inventario a GLPI**  
Por favor, ejecute:</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">Un error aquí indicaría un problema de configuración o de accesibilidad de la URL.  
=&gt; O bien ve cómo resolver el error, o bien envía el resultado del comando a<support@medulla-tech.io>  
  
</div><div id="bkmrk-4%29-v%C3%A9rifier-si-la-ma">**4) Compruebe si el equipo está correctamente registrado en GLPI**  
Ejecute lo siguiente (sustituyendo el nombre si es necesario):</div>```
mysql --defaults-group-suffix=itsm glpi -e "SELECT * FROM glpi_computers WHERE name='NOMBRE_DEL_ORDENADOR_CLIENTE'\G"
```

<div id="bkmrk-si-la-requ%C3%AAte-ne-ret">Si la consulta no devuelve ningún resultado, el equipo no se ha registrado en GLPI.  
=&gt; Desde Medulla, fuerce una solicitud de inventario desde la vista Ordenadores &gt; Acción rápida &gt; Ejecutar inventario para el equipo en cuestión  
  
</div><div id="bkmrk-5%29-v%C3%A9rifier-l%E2%80%99%C3%A9tat-d">**5) Compruebe el estado del equipo en la base de datos de Medulla**  
Ejecute:</div>```
mysql --defaults-group-suffix=medulla xmppmaster -e "SELECT jid, hostname, id_glpi, enabled FROM machines WHERE hostname='NOMBRE_POST_CLIENTE'\G"
```

<div id="bkmrk-si-le-champ%C2%A0id_glpi%C2%A0">Si el campo**id\_glpi**está vacío, significa que no se ha podido realizar la asociación entre Medulla y el inventario GLPI.  
=&gt; Desde Medulla, fuerce un nuevo registro del equipo desde la vista Ordenadores &gt; Acción rápida &gt; Comando personalizado Reconfigurar agente del equipo  
  
=&gt; Si el problema persiste, envíe el resultado de todos los comandos a<support@medulla-tech.io></div>

# Verificación de la configuración remota

##### Flujo de trabajo

<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># Registros

- /var/log/apache2/\*.log
- /var/log/mmc/mmc-agent.log
- /var/log/pulse/xmpp-agent-relay.log
- /var/log/mmc/master-mast.log
- C:\\Archivos de programa\\Medulla\\var\\log\\xmpp-agent-machine.log
- /var/log/tomcat9/\*.log
- /var/log/tomcat9/\*.txt
- journalctl -u guacd -f

# Operaciones de depuración

- Listar las conexiones de Guacamole registradas para una máquina:

```
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 conexión no existe, volver a registrar la máquina  
Si tras volver a registrar la máquina sigue sin haber conexión, compruebe que los protocolos estén bien activados en la máquina (VNC iniciado, RDP activado, demonio OpenSSH iniciado).</div>- Mostrar los detalles de una conexión (se realiza en el relé de la máquina)

```
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>```
+----------+---------------+-----------------+-----------------+
| protocolo | id_conexión | nombre_parámetro  | valor_parámetro |
+----------+---------------+-----------------+-----------------+
| vnc      |       6084964 | color-depth     | 24              |
| vnc      |       6084964 | hostname        | localhost       |
| vnc      |       6084964 | listen-timeout  | 50000           |
| vnc      |       6084964 | port            | 47749           |
| vnc      |       6084964 | reverse-connect | true            |
+----------+---------------+-----------------+-----------------+
```

- Comprobación de la conexión inversa

<div id="bkmrk-s%27il-y-a-un-reverse-">Si se realiza una conexión inversa (nombre de host = localhost), comprueba el establecimiento de la conexión ejecutando</div>```
netstat -vatpn | grep <puerto>
```

<div id="bkmrk-si-aucune-ligne-n%27es">Si no aparece ninguna línea, habrá que depurar el reverse-SSH  
[SOPORTE - Reverse SSH - Soporte](https://3.basecamp.com/4759565/buckets/18059611/messages/9187346291)</div><div id="bkmrk--2">  
</div>- Depuración de VNC

<div id="bkmrk-sur-la-machine-clien">En el equipo cliente, compruebe que el servidor VNC está a la escucha:</div>```
netstat -an | find "5500"
```

<div id="bkmrk-si-ce-n%27est-pas-le-c">Si no es así, compruebe que TightVNC se esté ejecutando  
En el equipo cliente, compruebe que el Reverse SSH se ha configurado correctamente:</div>```
netstat | find "ssh"
```

<div id="bkmrk-sur-le-relais-v%C3%A9rifi">En el relé, compruebe que el SSH inverso esté correctamente establecido:</div>```
netstat -vatpn | grep sshd
```

<div id="bkmrk-attention-le-reverse">Atención: el reverse se establece en un puerto aleatorio.  
A continuación, se redirige el puerto de guacd del servidor al puerto 5500 del túnel. Esta redirección se realiza al configurar el reverse.  
Véase el depuración del ssh inverso más arriba  
En el relé, compruebe que guacd esté escuchando correctamente en el puerto indicado por los parámetros de guacamole (aquí 54775):</div>```
netstat -vatpn |grep guacd
```

# Verificación de SSH inverso

##### Registros

- /var/log/pulse/xmpp-agent-relay.log
- /var/log/mmc/master-mast.log
- C:\\Archivos de programa\\Medulla\\var\\log\\xmpp-agent-machine.log

##### Operaciones de depuración

<div id="bkmrk-sur-le-client">**En el cliente**</div><div id="bkmrk-l%27%C3%A9tablissement-du-r">El establecimiento de la conexión reverse SSH desde los clientes se realiza mediante los scripts</div>- Linux: /var/lib/pulse2/reversessh.sh
- Windows: c:\\Archivos de programa\\Medulla\\bin\\reversessh.ps1

<div id="bkmrk-sur-linux%2C-il-est-po">En Linux, es posible ejecutar estos scripts manualmente para comprobar el establecimiento del túnel. Consulte estos scripts para encontrar el número de puerto utilizado. Por ejemplo:</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">En Windows, es imprescindible utilizar la consola MMC para disponer de depuración al realizar una implementación. Para ello, hay que detener el servicio OpenSSH desde una consola XMPP para forzar el establecimiento de la conexión 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)

Inicie una implementación. En la vista de auditoría se mostrará el resultado del establecimiento de la conexión inversa:

[![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 el túnel no se establece, se trata de un problema de puerto o de claves**</span></span>

<div id="bkmrk-sur-le-relais">**En el relé**</div><div id="bkmrk-le-script-suivant-pe">El siguiente script permite comprobar el establecimiento del reverse en los ARS en el puerto definido (véase más arriba):</div>```
#!/bin/bash
echo "puerto $1"
echo "reverse existente"
netstat -an | egrep "tcp.*:$1.*LISTEN"
echo "reverse en uso"
netstat -an | egrep "tcp.*:$1.*ESTABLISHED"
echo "pid reverse"
lsof -t -i :$1 -s tcp:LISTEN
```

<div id="bkmrk-on-peut-voir-les-pro">Se pueden ver los procesos de reversessh con:</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  
  
en Windows:</div>```
tasklist | findstr ssh
```

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

# Imágenes - Davos Debug

<div id="bkmrk-lancer-davos-puis-fa">Inicie Davos y pulse CTRL+C  
  
A partir de aquí hay dos opciones: conexión local o SSH</div><div id="bkmrk-connexion-locale%3A">  
Conexión local:</div>```
# en la consola de Davos
sudo su
dpkg-reconfigure keyboard-configuration
systemctl restart keyboard-setup
python3
```

<div id="bkmrk-connexion-ssh%3Ad%27abor">  
Conexión SSH:  
Primero, obtener la IP del equipo y, a continuación, desde el servidor de retransmisión:</div>```
ssh user@<IP>
```

<div id="bkmrk-%C2%A0mot-de-passe%3A-live"> Contraseña: live</div>```
sudo su
python3
```

<div id="bkmrk-">  
</div>- Para registrar la máquina:

```
from davos import davosManager
from davos.inventory import Inventory

davos = davosManager()
inv = Inventory(davos)
#
# Introduce el nombre de host en la entrada
# esto enviará el xml a pulse2-register-pxe
```

<div id="bkmrk--1">  
</div>```
print("dirección MAC: {}".format(inv.macaddress))
print("dirección IP: {}".format(inv.ipaddress))
print("máscara de red: {}".format(inv.netmask))
print("disco: {}".format(inv.disk)) 
```

<div id="bkmrk--2">  
</div>```
# El inventario (sin modificar) se encuentra en:
less /tmp/inventory.xml
# Debe faltar una barra entre «tmp» y «macaddress», lo que hace que el archivo se genere en /
/tmp<macaddress.xml
```

<div id="bkmrk--3">  
</div>- Para depurar la copia de seguridad

```
from davos import davosManager
from davos.image_saver import imageSaver

davos = davosManager()
saver = imageSaver(davos)
saver.start()
```

<div id="bkmrk-enregistrer-la-sauve">Guardar la copia de seguridad:</div>```
saver.imaging_api.imageDone(saver.manager.mac, saver.image_uuid)
```

<div id="bkmrk--4">  
</div>- Para depurar la restauración:

```
from davos import davosManager
from davos.image_restorer import imageRestorer

davos = davosManager()
img = imageRestorer(davos, "unicast") 
```

<div id="bkmrk-pour-lancer-une-rest">Para iniciar una restauración completa:</div>```
img.start()
```

<div id="bkmrk-pour-lancer-uniqueme">Para ejecutar solo las postinstalaciones</div>```
img.run_postimaging()
```

<div id="bkmrk-les-logs-de-davos-so">Los registros de Davos se encuentran en:  
</div>```
/var/log/davos.log
/var/log/davos_restorer.log
```

<div id="bkmrk-les-logs-des-postins">  
Los registros de las postinstalaciones se encuentran en:  
</div>```
/tmp/postinst.xxx.log
```

<div id="bkmrk-les-postinstalls-son">  
Las postinstalaciones se encuentran en /imaging_server/masters/&lt;uuid_del_master&gt;/postinst.d/  
 El uuid_del_master se puede recuperar de la tabla imaging.Image en la base de datos.</div>

# Imágenes - Depuración

<div id="bkmrk-1.-r%C3%A9cup%C3%A9ration-du-b">1. Recuperación del arranque</div><div id="bkmrk-passer-le-tftp-en-ve">  
Configurar el tftp en modo detallado:  
En /etc/default/tftpd-hpa, añada -v al parámetro TFTP_OPTIONS y reinicie el servicio tftpd-hpa  
En los registros de tftp (/var/log/syslog o journalctl --unit tftpd-hpa --follow), localice estas líneas:</div>```
in.tftpd[491332]: RRQ desde 10.104.108.113, nombre de archivo bootloader-uefi64/ipxe.efi
in.tftpd[491333]: RRQ desde 10.104.108.113, nombre de archivo bootloader-uefi64/autoexec.ipxe
```

<div id="bkmrk-si-ces-lignes-n%27exis">Si estas líneas no existen, se trata de un problema de DHCP  
  
Para depurar el TFTP, captura las tramas:</div>```
tcpdump -s 0 host <IP_DEL_CLIENTE> y udp
```

<div id="bkmrk-pour-tester-une-conn">Para probar una conexión TFTP: </div>```
tftp <IP_DEL_SERVIDOR> get bootloader-uefi64/ipxe.efi
```

<div id="bkmrk-2.-r%C3%A9cup%C3%A9ration-du-m">  
2. Recuperación del menú de arranque  
En los registros de Apache, localice esta línea:</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 no existe, se trata de un problema de acceso al servidor Apache  
  
3. Recuperación de Davos  
En los registros de Apache, localice estas líneas:</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 no existen, se trata de un problema de acceso al servidor Apache  
  
  
Una vez comprobados estos pasos, consulte «Debugger Davos»</div><div id="bkmrk-"></div><div id="bkmrk-lors-de-l%27arriv%C3%A9-sur">Al llegar al menú PXE, si no encuentra la opción de registro, compruebe las siguientes líneas en los registros de tftpd-hpa:</div><div id="bkmrk-dans-les-logs-de-tft">En los registros de tftp (/var/log/syslog o journalctl --unit tftpd-hpa --follow), localice estas líneas:</div>```
in.tftpd[357001]: tftp: el cliente no acepta opciones
```

Si aparece esta línea, reinicie el servicio tftpd-hpa

```
systemctl restart tftpd-hpa
```

Si el problema persiste, compruebe si hay un servicio tftpd-hpa fantasma y reinicie el servidor. A continuación, reinicie de nuevo el servicio tftpd-hpa.

# Guacamole - Depuración

# Depuración de Guacamole

<div id="bkmrk-lors-de-la-pmad-guac">Durante la PMAD, Guacamole no se conecta al instante</div><div id="bkmrk-faite-%3A">  
Hecho:</div>```
journalctl -u tomcat9 -f
```

<div id="bkmrk-tester-une-connexion">Probar una conexión.  
  
Comprueba si aparece la línea:</div>```
[http-nio-8081-exec-9] WARN  o.a.g.r.auth.AuthenticationService - Falló el intento de autenticación desde [10.48.2
50.43, 127.0.0.1] para el usuario «root».
```

<div id="bkmrk-si-elle-est-pr%C3%A9sente">  
Si está presente:</div>```
systemctl restart tomcat9
journalctl -u tomcat9 -f
```

<div id="bkmrk-v%C3%A9rifier-la-pr%C3%A9sence">  
Compruebe si aparece la siguiente línea:</div>```
ERROR o.a.g.extension.ExtensionModule - No se ha podido cargar la extensión «guacamole-auth-jdbc-mysql-1.5.4.jar»: No se puede leer el contenido del directorio /etc/guacamole/lib
```

<div id="bkmrk-si-elle-est-pr%C3%A9sente-1">  
Si está presente:</div>```
chmod 755 /etc/guacamole/lib/
```

# Optimización del tiempo de conexión para la puesta en marcha de los puestos.

Para reducir el tiempo de conexión al iniciar sesión en equipos remotos:

Compruebe los siguientes puntos:

- El ejecutable ssh (C:\\Program Files\\OpenSSH\\ssh.exe) está excluido de la búsqueda en tiempo real de sus antivirus y EDR
- El ejecutable medulla (C:\\Program Files\\Python3\\medulla.exe) está excluido de la búsqueda en tiempo real de su antivirus y EDR
- El tráfico XMPP saliente de los clientes (hacia el puerto 5222 del servidor) y su equivalente entrante están excluidos del análisis de paquetes de los cortafuegos (no olvide el cortafuegos del equipo cliente)
- El tráfico SSH saliente de los clientes (hacia el puerto 22 o 2002 del servidor) y su equivalente entrante están excluidos del análisis de paquetes de los cortafuegos (no olvide el cortafuegos del equipo cliente)

  
Una vez comprobados los puntos anteriores, si la conexión SSH inversa tarda menos de 30 segundos en establecerse, es posible reducir el tiempo de espera.

Esta modificación se realiza en el archivo **/etc/mmc/mmc.ini.local.**  
Se deberá añadir una sección guacamole y definir el parámetro reversessh\_timeout (en segundos).

Ejemplo para establecer el tiempo de espera en 20 segundos:

```
[guacamole]
reversessh_timeout = 20
```

<span style="color:rgb(0,0,0);">A continuación, hay que reiniciar el servicio mmc-agent:</span>

```
systemctl restart mmc-agent
```

<span style="color:rgb(0,0,0);">**La modificación de este parámetro está disponible a partir de la versión 5.5.1.**</span>

# Duplicados de direcciones MAC

Si ha tenido problemas con algunos componentes instalados en su ordenador, como Fortinet, que registran una dirección MAC idéntica en todas las máquinas, esto provoca un problema en Medulla, ya que las máquinas registradas no se ubican en las entidades correctas y aparecen en GLPI con un UUID que ya existe para otra máquina:

en el archivo /etc/pulse-xmpp-agent-substitute/registeryagent.ini.local

añada la siguiente sección y la siguiente información, respetando las mayúsculas y minúsculas.

```
[parameters]
blacklisted_mac_addresses = 00\:00\:00\:00\:00\:00, 00\:09\:0f\:aa\:00\:01
```

En /etc/pulse-xmpp-agent-substitute/registeryagent.ini.local, añade las direcciones MAC que quieras incluir en la lista negra

Es necesario que 00\\:00\\:00\\:00\\:00\\:00 esté presente  
Los caracteres : deben escaparse y las direcciones deben separarse con comas