<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://aitorroma.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://aitorroma.com/" rel="alternate" type="text/html" /><updated>2025-10-16T11:59:43+00:00</updated><id>https://aitorroma.com/feed.xml</id><title type="html">Aitor Roma</title><subtitle>Página personal de Aitor Roma</subtitle><entry><title type="html">Cómo Eliminar ‘index.php’ de las URLs en WordPress: Guía Completa</title><link href="https://aitorroma.com/2025/03/13/eliminar-index-php-wordpress-urls" rel="alternate" type="text/html" title="Cómo Eliminar ‘index.php’ de las URLs en WordPress: Guía Completa" /><published>2025-03-13T00:00:00+00:00</published><updated>2025-03-13T00:00:00+00:00</updated><id>https://aitorroma.com/2025/03/13/eliminar-index-php-wordpress-urls</id><content type="html" xml:base="https://aitorroma.com/2025/03/13/eliminar-index-php-wordpress-urls"><![CDATA[<h1 id="cómo-eliminar-indexphp-de-las-urls-en-wordpress">Cómo Eliminar ‘index.php’ de las URLs en WordPress</h1>

<h2 id="el-problema-con-indexphp-en-las-urls">El Problema con ‘index.php’ en las URLs</h2>

<p>Cuando WordPress no puede identificar correctamente que estás usando Apache como servidor web, todas tus URLs incluirán “index.php”. Este problema es común especialmente cuando se ha modificado el nombre del servidor o su configuración, lo que impide que WordPress detecte automáticamente que está corriendo en un servidor Apache.</p>

<h2 id="por-qué-ocurre-esto">¿Por qué ocurre esto?</h2>

<p>WordPress intenta detectar automáticamente el tipo de servidor web que estás utilizando para configurar las URLs de manera óptima. Sin embargo, en algunas situaciones como:</p>
<ul>
  <li>Modificaciones en el nombre del servidor</li>
  <li>Configuraciones personalizadas de Apache</li>
  <li>Entornos de servidor no estándar</li>
  <li>Modificaciones en los headers del servidor</li>
</ul>

<p>WordPress puede fallar en identificar correctamente que está corriendo en Apache, lo que resulta en la inclusión de “index.php” en todas las URLs.</p>

<h2 id="ejemplos-de-urls-problemáticas">Ejemplos de URLs problemáticas</h2>

<p>Cuando esto sucede, verás URLs con este formato:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">https://tudominio.com/?p=123</code></li>
  <li><code class="language-plaintext highlighter-rouge">https://tudominio.com/index.php/2025/03/mi-articulo/</code></li>
  <li><code class="language-plaintext highlighter-rouge">https://tudominio.com/index.php/categoria/articulo/</code></li>
  <li><code class="language-plaintext highlighter-rouge">https://tudominio.com/index.php/archivos/123</code></li>
</ul>

<h2 id="la-solución-forzar-la-detección-de-apache">La Solución: Forzar la Detección de Apache</h2>

<p>Para resolver este problema de forma permanente, seguiremos estos pasos:</p>

<ol>
  <li><strong>Accede al servidor</strong>
    <ul>
      <li>Conéctate via SSH a tu servidor</li>
      <li>Navega al directorio raíz de WordPress</li>
    </ul>
  </li>
  <li><strong>Localiza el archivo vars.php</strong>
    <ul>
      <li>Dirígete a la carpeta <code class="language-plaintext highlighter-rouge">wp-includes</code></li>
      <li>Busca el archivo <code class="language-plaintext highlighter-rouge">vars.php</code></li>
    </ul>
  </li>
  <li><strong>Modifica el archivo</strong>
    <ul>
      <li>Abre <code class="language-plaintext highlighter-rouge">vars.php</code> en un editor</li>
      <li>Añade esta línea al final del archivo:
        <div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$is_apache</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</code></pre></div>        </div>
      </li>
      <li>Esta línea fuerza a WordPress a reconocer Apache como servidor</li>
    </ul>
  </li>
  <li><strong>Protege el archivo contra modificaciones</strong>
    <ul>
      <li>Usa el comando <code class="language-plaintext highlighter-rouge">chattr</code> para hacer el archivo inmutable:
        <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>chattr +i wp-includes/vars.php
</code></pre></div>        </div>
      </li>
      <li>Esto evitará que el archivo sea modificado durante las actualizaciones</li>
      <li>Para verificar el estado, usa:
        <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lsattr wp-includes/vars.php
</code></pre></div>        </div>
      </li>
    </ul>
  </li>
  <li><strong>Actualiza la configuración</strong>
    <ul>
      <li>Ve a Ajustes &gt; Enlaces permanentes</li>
      <li>No necesitas cambiar nada, solo guarda</li>
      <li>Esto regenerará la estructura de URLs</li>
    </ul>
  </li>
</ol>

<p><img src="/assets/images/posts/wordpress-index-php.png" alt="Ejemplo de URLs en WordPress" /></p>

<h2 id="consideraciones-de-seguridad">Consideraciones de seguridad</h2>

<ul>
  <li>El uso de <code class="language-plaintext highlighter-rouge">chattr</code> requiere acceso root al servidor</li>
  <li>Si necesitas actualizar manualmente el archivo en el futuro:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>chattr <span class="nt">-i</span> wp-includes/vars.php  <span class="c"># Permite modificaciones</span>
<span class="c"># Realiza tus cambios</span>
<span class="nb">sudo </span>chattr +i wp-includes/vars.php  <span class="c"># Vuelve a proteger el archivo</span>
</code></pre></div>    </div>
  </li>
</ul>

<h2 id="conclusión">Conclusión</h2>

<p>Esta solución proporciona una forma permanente de mantener las URLs limpias en WordPress, sin preocuparse por las actualizaciones del sistema. El uso de <code class="language-plaintext highlighter-rouge">chattr</code> asegura que el archivo <code class="language-plaintext highlighter-rouge">vars.php</code> permanezca intacto, manteniendo tu configuración de URLs consistente en todo momento.</p>]]></content><author><name></name></author><category term="WordPress" /><category term="Desarrollo Web" /><category term="wordpress" /><category term="seo" /><category term="urls amigables" /><category term="apache" /><summary type="html"><![CDATA[Cómo Eliminar ‘index.php’ de las URLs en WordPress]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://aitorroma.com/assets/images/posts/wordpress-index-php.png" /><media:content medium="image" url="https://aitorroma.com/assets/images/posts/wordpress-index-php.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Kopia: La Herramienta Moderna para Copias de Seguridad</title><link href="https://aitorroma.com/2025/03/09/kopia-backup" rel="alternate" type="text/html" title="Kopia: La Herramienta Moderna para Copias de Seguridad" /><published>2025-03-09T00:00:00+00:00</published><updated>2025-03-09T00:00:00+00:00</updated><id>https://aitorroma.com/2025/03/09/kopia-backup</id><content type="html" xml:base="https://aitorroma.com/2025/03/09/kopia-backup"><![CDATA[<h1 id="kopia-la-herramienta-moderna-para-copias-de-seguridad">Kopia: La Herramienta Moderna para Copias de Seguridad</h1>

<p>Kopia es una herramienta libre, moderna y rápida para hacer copias de seguridad. Al igual que otras herramientas como Borg o Restic, Kopia permite tomar snapshots de los datos del usuario y guardarlos en un repositorio.</p>

<h2 id="tipos-de-repositorio">Tipos de repositorio</h2>

<p>Kopia ofrece diferentes tipos de repositorio para almacenar las copias de seguridad:</p>

<ul>
  <li>Directorio local</li>
  <li>Servidor SFTP o WebDAV</li>
  <li>Proveedores de almacenamiento en la nube</li>
  <li>Servicios soportados por Rclone</li>
</ul>

<p>La herramienta almacena los backups de manera eficiente utilizando técnicas de deduplicación y compresión opcionales. Además, ofrece seguridad mediante cifrado y proporciona una interfaz sencilla tanto en la línea de comandos como en una interfaz gráfica.</p>

<p>Cuando se necesita recuperar datos de una copia de seguridad, es posible montar el snapshot correspondiente y acceder al contenido utilizando las herramientas habituales.</p>

<h2 id="instalación-de-kopia">Instalación de Kopia</h2>

<p>Dado que Kopia es una aplicación reciente, no está incluida en los repositorios oficiales de Ubuntu. Sin embargo, la instalación es sencilla. Puedes descargar el paquete .deb desde el repositorio oficial de Kopia y luego instalarlo en tu sistema utilizando el siguiente comando:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wget https://github.com/kopia/kopia/releases/download/v0.13.0/kopia_0.13.0_linux_amd64.deb <span class="nt">-O</span> /tmp/kopia.deb
dpkg <span class="nt">-i</span> /tmp/kopia.deb
</code></pre></div></div>

<h2 id="configuración-del-repositorio">Configuración del repositorio</h2>

<p>A continuación, veremos cómo configurar un repositorio utilizando Contabo Object Storage como ejemplo. Para ello, necesitarás:</p>

<ol>
  <li>Una cuenta en Contabo Object Storage</li>
  <li>Un bucket con el nombre de tu host</li>
  <li>Credenciales de acceso (access key, secret key y endpoint)</li>
</ol>

<p>Una vez que tengas estos datos, ejecuta:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kopia repository create s3 <span class="nt">--bucket</span><span class="o">=</span>&lt;nombre del bucket&gt; <span class="se">\</span>
    <span class="nt">--access-key</span><span class="o">=</span>&lt;access key&gt; <span class="se">\</span>
    <span class="nt">--secret-access-key</span><span class="o">=</span>&lt;secret key&gt; <span class="se">\</span>
    <span class="nt">--endpoint</span><span class="o">=</span>eu2.contabostorage.com
</code></pre></div></div>

<h2 id="configuración-de-políticas-de-retención">Configuración de políticas de retención</h2>

<p>Kopia permite ajustar las políticas de retención según tus necesidades:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kopia policy <span class="nb">set</span> <span class="nt">--global</span> <span class="nt">--compression</span><span class="o">=</span>zstd
kopia policy <span class="nb">set</span> <span class="nt">--global</span> <span class="nt">--keep-annual</span> 0
kopia policy <span class="nb">set</span> <span class="nt">--global</span> <span class="nt">--keep-monthly</span> 3
kopia policy <span class="nb">set</span> <span class="nt">--global</span> <span class="nt">--keep-weekly</span> 4
kopia policy <span class="nb">set</span> <span class="nt">--global</span> <span class="nt">--keep-daily</span> 7
kopia policy <span class="nb">set</span> <span class="nt">--global</span> <span class="nt">--keep-latest</span> 20
</code></pre></div></div>

<h2 id="script-de-respaldo">Script de respaldo</h2>

<p>Aquí tienes un ejemplo de script de respaldo completo:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/bash</span>

<span class="nb">export </span><span class="nv">KOPIA_PASSWORD</span><span class="o">=</span><span class="s2">"&lt;contraseña&gt;"</span>

<span class="nv">ACCESS_KEY</span><span class="o">=</span><span class="s2">"&lt;access key&gt;"</span>
<span class="nv">SECRET_KEY</span><span class="o">=</span><span class="s2">"&lt;secret key&gt;"</span>
<span class="nv">ENDPOINT</span><span class="o">=</span><span class="s2">"eu2.contabostorage.com"</span>
<span class="nv">BUCKET_NAME</span><span class="o">=</span><span class="s2">"&lt;nombre del bucket&gt;"</span>

<span class="c"># Conectar al repositorio S3</span>
kopia repository connect s3 <span class="se">\</span>
    <span class="nt">--bucket</span><span class="o">=</span><span class="s2">"</span><span class="nv">$BUCKET_NAME</span><span class="s2">"</span> <span class="se">\</span>
    <span class="nt">--access-key</span><span class="o">=</span><span class="s2">"</span><span class="nv">$ACCESS_KEY</span><span class="s2">"</span> <span class="se">\</span>
    <span class="nt">--secret-access-key</span><span class="o">=</span><span class="s2">"</span><span class="nv">$SECRET_KEY</span><span class="s2">"</span> <span class="se">\</span>
    <span class="nt">--endpoint</span><span class="o">=</span><span class="s2">"</span><span class="nv">$ENDPOINT</span><span class="s2">"</span>

<span class="c"># Crear snapshot</span>
kopia snapshot create /home/<span class="k">*</span>/web/<span class="k">*</span>/public_html <span class="se">\</span>
    <span class="nt">--description</span> <span class="s2">"Websites </span><span class="nv">$HOSTNAME</span><span class="s2">"</span>

<span class="c"># Ejecutar mantenimiento</span>
kopia maintenance run <span class="nt">--full</span>

<span class="c"># Desconectar del repositorio</span>
kopia repository disconnect
</code></pre></div></div>

<h2 id="configuración-del-cron">Configuración del cron</h2>

<p>Para automatizar los backups, añade el script al cron:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">(</span>crontab <span class="nt">-l</span> 2&gt;/dev/null<span class="p">;</span> <span class="nb">echo</span> <span class="s2">"*/15 * * * * /etc/backup.sh"</span><span class="o">)</span> | crontab -
</code></pre></div></div>

<h2 id="uso-básico-de-kopia">Uso básico de Kopia</h2>

<h3 id="listado-de-snapshots">Listado de snapshots</h3>

<p>Para ver los snapshots almacenados:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kopia snapshot list
</code></pre></div></div>

<h3 id="acceso-a-los-snapshots">Acceso a los snapshots</h3>

<p>Para montar y acceder a un snapshot:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kopia mount &lt;snapshot-ID&gt; &lt;directorio-de-montaje&gt;
</code></pre></div></div>

<h2 id="conclusiones">Conclusiones</h2>

<p>Kopia es una herramienta poderosa y eficiente para realizar copias de seguridad de manera segura. Con características como:</p>

<ul>
  <li>Soporte para múltiples tipos de repositorio</li>
  <li>Políticas de retención flexibles</li>
  <li>Deduplicación y compresión</li>
  <li>Cifrado integrado</li>
  <li>Interfaz CLI y GUI</li>
</ul>

<p>Kopia te brinda la confianza y tranquilidad de que tus datos estarán protegidos y disponibles para su recuperación en caso de cualquier eventualidad.</p>

<p>¿Ya utilizas alguna herramienta de backup? ¿Qué te parece Kopia en comparación? ¡Comparte tu experiencia en los comentarios!</p>]]></content><author><name>Aitor Roma</name></author><category term="infrastructure" /><category term="backup" /><category term="seguridad" /><category term="infraestructura" /><category term="open-source" /><summary type="html"><![CDATA[Descubre cómo utilizar Kopia, una herramienta libre y moderna para realizar copias de seguridad de forma eficiente y segura.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://aitorroma.com/assets/images/blog/kopia-backup.jpeg" /><media:content medium="image" url="https://aitorroma.com/assets/images/blog/kopia-backup.jpeg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">N8N con Dominio Personalizado usando Traefik</title><link href="https://aitorroma.com/2025/03/09/n8n-traefik" rel="alternate" type="text/html" title="N8N con Dominio Personalizado usando Traefik" /><published>2025-03-09T00:00:00+00:00</published><updated>2025-03-09T00:00:00+00:00</updated><id>https://aitorroma.com/2025/03/09/n8n-traefik</id><content type="html" xml:base="https://aitorroma.com/2025/03/09/n8n-traefik"><![CDATA[<h1 id="n8n-con-dominio-personalizado-usando-traefik">N8N con Dominio Personalizado usando Traefik</h1>

<p>En esta guía veremos cómo instalar N8N usando nuestro propio dominio personalizado de forma super sencilla con certificado SSL de LetsEncrypt usando Traefik como proxy inverso.</p>

<p>La instalación es muy sencilla porque la he simplificado al máximo. Vamos a ver paso a paso cómo hacerlo.</p>

<h2 id="instalación-de-docker">Instalación de Docker</h2>

<p>Para comenzar, necesitamos un servidor VPS. Personalmente, recomiendo Contabo por su excelente relación calidad-precio.</p>

<p>Una vez tengamos nuestro servidor con Ubuntu 20.04 o superior, instalamos Docker:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/bin/bash <span class="nt">-c</span> <span class="s2">"</span><span class="si">$(</span>curl <span class="nt">-fsSL</span> https://get.docker.com<span class="si">)</span><span class="s2">"</span>
systemctl <span class="nb">enable </span>docker
systemctl start docker
</code></pre></div></div>

<h2 id="instalación-de-traefik">Instalación de Traefik</h2>

<p>Usaremos un repositorio que ya he preparado para la ocasión:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> /opt
git clone https://github.com/aitorroma/docker-traefik traefik
<span class="nb">cd </span>traefik
<span class="nb">chmod </span>600 acme.json
nano .env
</code></pre></div></div>

<h3 id="configuración-del-archivo-env">Configuración del archivo .env</h3>

<p>Debemos ajustar dos variables importantes en el fichero <code class="language-plaintext highlighter-rouge">.env</code>:</p>

<ol>
  <li><strong>ACME_EMAIL</strong>: Dirección de correo electrónico para el registro ACME.
    <ul>
      <li>Valor predeterminado: ‘webmaster@my.domain.tld’</li>
      <li>Debes usar tu correo electrónico personal</li>
    </ul>
  </li>
  <li><strong>DOCKER_DOMAIN</strong>: Dominio base para las reglas de la interfaz.
    <ul>
      <li>Valor predeterminado: ‘my.domain.tld’</li>
      <li>Debes usar tu dominio raíz para los subdominios</li>
    </ul>
  </li>
</ol>

<h3 id="levantar-traefik">Levantar Traefik</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> /opt/traefik 
docker compose up <span class="nt">-d</span>
</code></pre></div></div>

<p>Este comando iniciará un contenedor escuchando en los puertos 80 y 443, listo para funcionar como proxy inverso.</p>

<h2 id="instalación-de-n8n-usando-traefik">Instalación de N8N usando Traefik</h2>

<p>Una vez desplegado Traefik, seguimos estos pasos:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> /opt
git clone https://github.com/aitorroma/n8n-traefik.git n8n 
<span class="nb">cd </span>n8n
nano .env
</code></pre></div></div>

<h3 id="configuración-de-n8n">Configuración de N8N</h3>

<p>Ajustamos las variables en el fichero <code class="language-plaintext highlighter-rouge">.env</code>:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">N8N_HOST</span><span class="o">=</span>n8n.hiveagile.club

<span class="c">## N8N Version</span>
<span class="nv">VERSION</span><span class="o">=</span>latest

<span class="c">## N8N Config</span>
<span class="nv">VUE_APP_URL_BASE_API</span><span class="o">=</span>https://<span class="k">${</span><span class="nv">N8N_HOST</span><span class="k">}</span>
<span class="nv">N8N_PROTOCOL</span><span class="o">=</span>https
<span class="nv">WEBHOOK_URL</span><span class="o">=</span>https://<span class="k">${</span><span class="nv">N8N_HOST</span><span class="k">}</span>

<span class="nv">EXECUTIONS_DATA_PRUNE</span><span class="o">=</span><span class="nb">true
</span><span class="nv">EXECUTIONS_DATA_MAX_AGE</span><span class="o">=</span>336
<span class="nv">GENERIC_TIMEZONE</span><span class="o">=</span>Europe/Madrid
<span class="nv">N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS</span><span class="o">=</span><span class="nb">true</span>

<span class="c">#### SMTP CONFIG #####</span>
<span class="nv">N8N_EMAIL_MODE</span><span class="o">=</span>smtp
<span class="nv">N8N_SMTP_HOST</span><span class="o">=</span>smtp.eu.mailgun.org
<span class="nv">N8N_SMTP_PORT</span><span class="o">=</span>465
<span class="nv">N8N_SMTP_USER</span><span class="o">=</span>user@domain.com
<span class="nv">N8N_SMTP_PASS</span><span class="o">=</span>lapassword
<span class="nv">N8N_SMTP_SSL</span><span class="o">=</span><span class="nb">true
</span><span class="nv">N8N_SMTP_SENDER</span><span class="o">=</span>user@domain.com
</code></pre></div></div>

<blockquote>
  <p><strong>Importante</strong>: En <code class="language-plaintext highlighter-rouge">N8N_HOST</code> debes especificar la URL que usarás para acceder a tu instancia de N8N. Asegúrate de que el registro DNS A apunte a tu servidor.</p>
</blockquote>

<p>Las demás variables pueden dejarse como están, excepto la sección <code class="language-plaintext highlighter-rouge">SMTP CONFIG</code> que debes configurar para recibir correos electrónicos.</p>

<h3 id="iniciar-n8n">Iniciar N8N</h3>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> /opt/n8n 
docker-compose up <span class="nt">-d</span>
<span class="nb">chmod </span>777 ./docker-volumes/n8n <span class="nt">-Rf</span>
docker compose restart
</code></pre></div></div>

<p>Este comando levantará la instancia de N8N en el subdominio especificado, con soporte SSL incluido.</p>

<h2 id="actualizaciones-automáticas">Actualizaciones Automáticas</h2>

<p>Puedes usar Watchtower para actualizar N8N y todos los contenedores marcados con la etiqueta <code class="language-plaintext highlighter-rouge">latest</code>:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>docker run <span class="nt">-d</span> <span class="se">\</span>
    <span class="nt">--name</span> watchtower <span class="se">\</span>
    <span class="nt">-v</span> /var/run/docker.sock:/var/run/docker.sock <span class="se">\</span>
    containrrr/watchtower <span class="nt">-i</span> 30
</code></pre></div></div>

<h2 id="necesitas-más-ayuda">¿Necesitas más ayuda?</h2>

<p>Estás invitado a mi canal de Telegram, donde publico más soluciones como esta:</p>

<p><a href="https://t.me/aitorroma">Únete a mi canal de Telegram</a></p>

<h2 id="conclusión">Conclusión</h2>

<p>Con estos pasos, tendrás una instancia de N8N funcionando con tu propio dominio, certificado SSL y actualizaciones automáticas. Esta configuración es ideal para entornos de producción y te permitirá ejecutar tus flujos de trabajo de automatización de forma segura y profesional.</p>

<p>¿Te ha resultado útil esta guía? ¿Tienes alguna duda sobre la instalación? ¡Déjame un comentario y te ayudaré!</p>]]></content><author><name>Aitor Roma</name></author><category term="infrastructure" /><category term="n8n" /><category term="traefik" /><category term="docker" /><category term="automatización" /><category term="ssl" /><summary type="html"><![CDATA[Aprende a instalar N8N con tu propio dominio personalizado de forma sencilla, usando certificados SSL de LetsEncrypt y Traefik como proxy inverso.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://aitorroma.com/assets/images/blog/n8n-traefik.jpg" /><media:content medium="image" url="https://aitorroma.com/assets/images/blog/n8n-traefik.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>