Lo que parecía ser una simple instalación de n8n en un servidor Windows con IIS terminó siendo un laberinto de configuraciones, errores 403, archivos estáticos rebeldes y redirecciones que parecían salidas de un episodio de Black Mirror. Pero al final, logramos domar la bestia.
Este artículo es mi bitácora de batalla: lo que hicimos mal, lo que aprendimos y la solución definitiva. Si estás intentando hacer lo mismo, ahórrate el trauma y sigue esta guía paso a paso. 😎
Requisitos previos
Antes de empezar, asegurate de tener lo siguiente:
✅ Un servidor Windows Server (mínimo 2 vCPU y 4GB RAM recomendados, nosotros lo tenemos en Contabo no sale tan caro).
✅ Acceso de administrador en tu servidor.
✅ Node.js y npm instalados.
1. Primer Intento: Instalando n8n y Configurándolo en IIS
Paso 1: Instalamos Node.js y n8n
Antes de instalar n8n, necesitamos Node.js. Lo descargamos e instalamos desde nodejs.org:
winget install OpenJS.NodeJS
Aqui tenemos una explicación detallada para instalar Node.js
Una vez instalado, verificamos la versión:
node -v
Luego, instalamos n8n sin dramas:
npm install -g n8n
Paso 1.1: Configurar Variables de Entorno
Para que n8n se ejecute correctamente, agregaremos unas variables de entorno:
- En el Explorador de archivos, hacé clic derecho en Este PC > Propiedades.
- Seleccioná Configuración avanzada del sistema > Variables de entorno.
- En la sección Variables del sistema, buscá
Path
, seleccioná Editar y agregá:C:\Users\TU_USUARIO\AppData\Roaming\npm
- Aplicá los cambios y cerrá todo.
Todo bien hasta aquí. Ejecutamos n8n localmente y funcionaba perfecto en http://localhost:5678/n8n
. Fácil, sin dramas:
Paso 1.2: Configurar n8n como un Servicio en Windows
Si cerrás la terminal, n8n se apaga. Para evitarlo, lo configuraremos como servicio con nssm (aquí hay una guía completa):
- Descargá
nssm
desde: nssm.cc/download - Extraé el archivo en
C:\nssm
- Abrí
cmd
como administrador y navegá a la carpeta:cd C:\nssm\win64
- Creá un nuevo servicio para n8n:
nssm install n8n
- En la ventana que se abre:
- En Path, seleccioná
C:\Users\TU_USUARIO\AppData\Roaming\npm\n8n.cmd
- En Startup directory, poné la misma ruta.
- En Path, seleccioná
- Presioná Install service.
- Para arrancar el servicio, ejecutá:
nssm start n8n
🎯 Ahora n8n se ejecutará automáticamente al reiniciar el servidor.
Paso 2: Configurar IIS para Servir n8n
Aquí comenzaron los problemas. La idea era acceder a n8n desde el subdominio https://apps.zelvait.com/n8n
, y para eso:
- Creamos una nueva aplicación en IIS.
- Configuramos una regla de «URL Rewrite» para redirigir las peticiones a
localhost:5678
. - Redirigimos HTTP a HTTPS porque nos gusta la seguridad.
Pero… pantalla en blanco. F12 en el navegador reveló un desfile de errores 404. 😱
2. El Problema: Archivos Estáticos y Redirecciones Locas
Los archivos *.js
, *.css
y favicon.ico
no se estaban sirviendo correctamente. IIS intentaba buscarlos en https://apps.zelvait.com/assets/
en vez de https://apps.zelvait.com/n8n/assets/
.
La razón: n8n esperaba estar en /n8n/
, pero IIS lo servía como si estuviera en la raíz.
Intentamos:
- Ajustar
N8N_BASE_PATH
yWEBHOOK_URL
en el archivo.env
. - Modificar la regla de URL Rewrite en IIS para corregir las rutas.
- Agregar MIME Types en IIS para
.js
y.css
.
Nada funcionó. Era hora de cambiar la estrategia.
3. La Solución: Subdominio Exclusivo para n8n
Si n8n quiere ser especial, le damos su propio subdominio. Decidimos moverlo a n8n.zelvait.com
y dejar de pelear con /n8n/
.
Paso 1: Configurar el DNS
En Namecheap (si, nos gusta gastar poco), agregamos un nuevo registro A:
- Host:
n8n
- Value: IP del servidor
Paso 2: Crear el Sitio en IIS
- Abrimos IIS Manager (
inetmgr
). - Agregamos un nuevo sitio web:
- Nombre:
n8n
- Physical Path:
C:\inetpub\wwwroot
(pero no lo usaremos realmente) - Binding:
- Type:
https
- Host Name:
n8n.zelvait.com
- Type:
- Nombre:
Paso 3: Configurar IIS como Reverse Proxy
- En IIS, seleccionamos
n8n.zelvait.com
. - Vamos a «URL Rewrite» y creamos esta regla:
- Pattern:
(.*)
- Rewrite URL:
http://127.0.0.1:5678/{R:1}
- ✅ «Append query string»
- ✅ «Preserve host header»
- ✅ «Stop processing of subsequent rules»
- Pattern:
- Guardamos y reiniciamos IIS:
iisreset
Paso 4: Ajustar la Configuración de n8n
Editamos el archivo .env
de n8n (si no existe, crealo):
N8N_HOST=n8n.zelvait.com
N8N_PORT=5678
N8N_PROTOCOL=http
N8N_BASE_PATH=/
WEBHOOK_URL=https://n8n.zelvait.com/
Guardamos y reiniciamos n8n:
net stop n8n
net start n8n
Paso 5: Eliminar la Regla de Redirección HTTPS de n8n.zelvait.com
Nos dimos cuenta de que la redirección HTTPS global también se aplicaba a n8n.zelvait.com
, lo que causaba más problemas. La eliminamos y listo.
Paso 6: Problema Adicional – IIS Aplicó la Regla en el Sitio Incorrecto
Después de solucionar n8n, notamos que apps.zelvait.com
estaba redirigiendo incorrectamente a n8n.zelvait.com
. Descubrimos que la regla ReverseProxy_n8n
también se había aplicado en Default Web Site
. Para corregirlo:
- Verificamos en IIS y eliminamos
ReverseProxy_n8n
deDefault Web Site
. - Borramos el archivo
web.config
enC:\inetpub\wwwroot
, ya que contenía reglas no deseadas. - Reiniciamos IIS:
iisreset
Esto restauró el comportamiento correcto y evitó que apps.zelvait.com
interfiriera con n8n.zelvait.com
.
4. ¡Funciona! (Y Lo Que Aprendimos)
Después de todos estos ajustes, finalmente pudimos acceder a n8n en https://n8n.zelvait.com
sin errores. Ya no más pantallas en blanco, ya no más 404 en los archivos estáticos.
Lecciones Aprendidas
💡 No pelees con N8N_BASE_PATH
, si puedes, usa un subdominio exclusivo.
💡 IIS no es la mejor opción para aplicaciones Node.js, pero con Reverse Proxy funciona bien.
💡 Las reglas de URL Rewrite pueden ser traicioneras, pero bien configuradas, salvan vidas.
💡 Si IIS comienza a redirigir sitios incorrectamente, revisa web.config
y elimina reglas duplicadas.
5. ¡Próximos Pasos!
Ahora que n8n está funcionando bien, los siguientes pasos son:
- Configurar autenticación en n8n para evitar accesos no autorizados.
- Hacer backups automáticos de workflows.
- Optimizar el rendimiento del servidor.
Si esta guía te ahorró dolores de cabeza, compártela con alguien que también sufra configurando IIS. 😆🔥
¡Hasta la próxima odisea, colegas geeks! 🚀
💡 ¡A seguir automatizando como un pro! 🚀
Average Rating