Cómo instalar n8n en Kubernetes paso a paso
Kubernetes se utiliza para desplegar, gestionar y escalar aplicaciones en contenedores, incluidas herramientas como n8n cuando es necesario. En esta guía aprenderás cómo instalar n8n en Kubernetes para crear una base limpia, estable y fácil de administrar.
Paso 1: comprobar los requisitos y elegir el servidor adecuado
Antes de instalar n8n en Kubernetes, primero necesitas un servidor Linux, preferiblemente con una dirección IP pública fija, un dominio o subdominio propio y acceso root. Para esta guía, la opción más sencilla es utilizar un único servidor con Ubuntu como base e instalar después una distribución ligera de Kubernetes, como K3s. K3s es una buena opción para empezar, ya que incluye varios componentes habituales de Kubernetes.
También es importante elegir el tamaño del servidor de forma realista. Debes tener en cuenta que Kubernetes añade sus propios componentes del sistema y que n8n también necesita memoria y CPU. A continuación, reunimos algunos casos de uso habituales y configuraciones de servidor recomendadas.
Si todavía no conoces n8n o quieres comparar alternativas, también puede interesarte una comparativa de n8n vs. Zapier o n8n vs. Make. Mientras que Zapier y Make se centran más en automatizaciones sencillas en la nube, n8n ofrece mucha más flexibilidad y control gracias al autoalojamiento.
Entorno de aprendizaje y pruebas para uso privado
Si primero quieres familiarizarte con n8n en Kubernetes, una configuración de servidor básica suele ser suficiente. En este caso, el objetivo principal es crear tus primeros flujos de trabajo o workflows de n8n, entender la interfaz y probar automatizaciones sencillas. La carga normalmente será baja, ya que se ejecutan pocos flujos de trabajo al mismo tiempo y no hay un uso continuo en segundo plano. Para ello, suele bastar un servidor virtual privado (VPS) con 2 vCores, 2 GB de RAM y 80 GB NVMe. Ten en cuenta, sin embargo, que Kubernetes también consume recursos, por lo que el rendimiento será limitado. Por eso, esta opción solo resulta recomendable de forma puntual para workflows productivos o ejecuciones continuas.
Usuarios particulares con uso productivo o pequeñas startups
Si quieres utilizar n8n en Kubernetes de forma activa en tu día a día, por ejemplo para automatizar procesos entre herramientas, API o proyectos propios, conviene planificar algo más de capacidad. En este escenario, los workflows se ejecutan con regularidad o se activan mediante webhooks. Esta configuración también permite los primeros usos en equipo o pequeños proyectos colaborativos. Una configuración con 4 vCores, 4 GB de RAM y 120 GB NVMe ofrece un buen equilibrio entre rendimiento y costes. Así dispondrás de recursos suficientes para varias ejecuciones simultáneas de flujos de trabajo. Por eso, esta variante es una buena opción para empezar en un entorno productivo.
Pymes con varios workflows y ejecuciones periódicas
En pequeñas y medianas empresas, n8n suele utilizarse para la automatización de procesos empresariales. Algunos ejemplos habituales son la integración de sistemas CRM, automatizaciones de correo electrónico o el procesamiento de pedidos de una tienda online. En estos casos, los workflows se ejecutan con regularidad y, en parte, de forma simultánea, lo que aumenta notablemente la carga del sistema. Una configuración con 6 vCores, 8 GB de RAM y 240 GB NVMe ofrece una base estable para el uso en producción. Obtendrás ejecuciones más rápidas y evitarás cuellos de botella cuando haya varios procesos al mismo tiempo. Además, tendrás margen suficiente para ampliar la instalación más adelante.
Equipos en crecimiento, agencias o entornos muy automatizados
Cuando se utiliza n8n de forma intensiva y se ejecutan muchos workflows al mismo tiempo, los requisitos aumentan de forma considerable. En agencias o equipos más grandes, es habitual ejecutar numerosas automatizaciones en paralelo para cubrir marketing, procesamiento de datos y procesos internos. También son frecuentes los flujos de trabajo más complejos con varias llamadas a API o tiempos de ejecución más largos. Una configuración más potente con 8 vCores, 16 GB de RAM y 480 GB NVMe ayuda a mantener la estabilidad del sistema y un buen rendimiento. Esta variante ofrece margen suficiente para crecer y absorber picos de carga elevados. Al mismo tiempo, crea una buena base para ampliar más adelante hacia configuraciones de Kubernetes más escalables.
Tabla resumen: servidores y casos de uso
| Ámbito de aplicación | Uso habitual | Configuración recomendada |
|---|---|---|
| Entornos de aprendizaje y prueba | Primeros pasos con Kubernetes, algunos workflows de n8n, sin funcionamiento continuo ni alta carga | 2 vCores, 2 GB RAM, 80 GB NVMe |
| Usuarios particulares con uso productivo o pequeñas startups | Automatizaciones propias, webhooks, pequeñas integraciones mediante API, primeros usos en equipo | 4 vCores, 4 GB RAM, 120 GB NVMe |
| Pymes con varios workflows y ejecuciones periódicas | Automatizaciones internas, integraciones con CRM, tienda online o correo electrónico, varios usuarios | 6 vCores, 8 GB RAM, 240 GB NVMe |
| Equipos en crecimiento, agencias o entornos muy automatizados | Muchos workflows activos, webhooks frecuentes y margen para escalar más adelante | 8 vCores, 16 GB RAM, 480 GB NVMe |
Para escenarios especialmente amplios, con muchas ejecuciones simultáneas o servicios adicionales en el mismo servidor, también puede resultar útil una configuración superior con 12 vCores, 24 GB de RAM y 720 GB NVMe.
- Automatiza procesos técnicos
- Tareas ilimitadas y control de costes en tu servidor
- Más de 500 integraciones de código abierto
Paso 2: preparar el servidor e instalar los paquetes básicos
Conéctate por SSH a tu servidor Ubuntu y actualiza primero los repositorios de paquetes y el software instalado. Esto es importante para empezar con una base limpia y actualizada.
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget nano opensslbashA continuación, puedes comprobar si el servidor es accesible correctamente y si ya dispone de una IP pública:
hostname -IbashTambién puedes verificar la IP pública en tu proveedor de hosting. Anota la dirección, ya que la necesitarás dentro de poco para crear el registro DNS de tu subdominio.
Paso 3: hacer que el subdominio apunte al servidor
Crea en tu proveedor de dominios un registro A para el subdominio que quieras utilizar. Si más adelante tu instancia de n8n en Kubernetes debe estar disponible en n8n.tu-dominio.es, ese subdominio debe apuntar exactamente a la IP pública de tu servidor. Solo cuando este registro DNS esté activo, el acceso externo y las conexiones HTTPS funcionarán de forma fiable.
Un registro DNS típico tendría este aspecto:
Tipo: A
Nombre: n8n
Valor: 203.0.113.10
TTL: 3600txtPaso 4: instalar K3s
Si estás empezando, K3s suele ser la forma más cómoda de desplegar Kubernetes en un único servidor. K3s incluye por defecto varios componentes importantes como complementos, entre ellos Traefik como controlador de entrada y soporte integrado para almacenamiento persistencia local.
Instala primero K3s con el siguiente comando:
curl -sfL https://get.k3s.io | sh -bashComprueba después con este comando si el servicio se está ejecutando:
sudo systemctl status k3sbashLos clústeres de Kubernetes utilizan distintos controladores de entrada para redirigir el tráfico hacia los servicios internos. En K3s, Traefik está activado por defecto. Otros controladores, como NGINX o HAProxy, también se usan con frecuencia, aunque se diferencian en el comportamiento, el enrutamiento y la configuración necesaria.
Si todo se ha iniciado correctamente, puedes consultar el estado del clúster:
sudo k3s kubectl get nodesbash
Para utilizar kubectl con más comodidad, lo mejor es crear un alias:
echo 'alias kubectl="sudo k3s kubectl"' >> ~/.bashrc
source ~/.bashrc
kubectl get nodesbashSi aquí tu servidor aparece con el estado “Ready”, Kubernetes está listo para usarse.
Si no quieres gestionar un entorno de n8n en Kubernetes, también existen métodos de instalación más sencillos, como una instalación de n8n con Docker o configuraciones mediante otras plataformas. Por ejemplo, puedes usar n8n con CapRover o n8n con CasaOS. Estas opciones resultan especialmente adecuadas para proyectos pequeños o para quienes están empezando. También es posible una instalación de n8n en Plesk.
Paso 5: instalar Helm
El chart de Helm oficial de n8n requiere Helm 3.12 o una versión más reciente. Helm es un gestor de paquetes para Kubernetes y cumple una función similar a apt en Ubuntu. En lugar de crear y gestionar manualmente archivos de configuración individuales, con Helm puedes instalar aplicaciones completas mediante “Charts”. Así, la instalación resulta mucho más sencilla, clara y menos propensa a errores.
Helm resulta muy útil si estás empezando, ya que no necesitas entender ni escribir cada archivo YAML por tu cuenta. En su lugar, solo ajustas algunos parámetros principales y Helm se encarga automáticamente del resto. Más adelante, también podrás aplicar actualizaciones o cambios con mayor facilidad, porque Helm gestiona el estado de tu instalación.
Instala ahora Helm directamente en tu servidor. La documentación oficial de Helm explica la instalación mediante binarios precompilados. Sin embargo, en Ubuntu también es habitual instalarlo con el script oficial proporcionado. Este método es especialmente sencillo:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.shbashCon el primer comando descargas el script de instalación. Después, haces que el archivo sea ejecutable y lo inicias. El script instala Helm automáticamente en la versión adecuada para tu sistema.
Comprueba después si la instalación se ha realizado correctamente mostrando la versión instalada:
helm versionbash
Si aquí aparece un número de versión, Helm está instalado correctamente y ya puedes utilizar el chart de Helm de n8n en Kubernetes.
Muchas personas empiezan con herramientas más sencillas y, con el tiempo, acaban usando n8n. Una evolución habitual es la migración de Zapier a n8n, para ganar más control sobre los datos, los workflows y el alojamiento.
Paso 6: crear un namespace para n8n
Para mantener los recursos de n8n claramente separados de otros objetos de Kubernetes, crea ahora un namespace propio, es decir, un espacio de nombres separado dentro de Kubernetes. Se trata de una práctica recomendada en Kubernetes.
kubectl create namespace n8nbashComprueba después si el namespace se ha creado correctamente:
kubectl get namespacesbash
Paso 7: instalar cert-manager para certificados TLS
Para una instalación accesible públicamente, conviene exponer n8n en Kubernetes directamente mediante HTTPS. El propio n8n recomienda utilizar para TLS un proxy inverso o una capa HTTP/HTTPS previa. En Kubernetes, Traefik asume ese papel en esta guía, mientras que cert-manager automatiza la emisión y renovación de los certificados. cert-manager también puede instalarse mediante un chart de Helm. Para ello, utiliza el siguiente comando:
helm install cert-manager oci://quay.io/jetstack/charts/cert-manager \
--namespace cert-manager \
--create-namespace \
--set crds.enabled=truebashDespués, comprueba los pods. Los pods son la unidad ejecutable más pequeña de Kubernetes y contienen uno o varios contenedores que se ejecutan juntos en un nodo. Permiten que los contenedores incluidos funcionen de forma conjunta y compartan recursos como red y almacenamiento.
kubectl get pods -n cert-managerbash
Espera hasta que todos los pods hayan alcanzado el estado “Running” o “Completed”.
Paso 8: crear un ClusterIssuer de Let’s Encrypt
Para que cert-manager pueda generar certificados para tu dominio de forma automática más adelante, crea ahora un recurso llamado ClusterIssuer para Let’s Encrypt. Un ClusterIssuer es una configuración central de Kubernetes que define de qué proveedor se obtienen los certificados y cómo se verifica tu dominio. En este caso se utiliza Let’s Encrypt, una entidad certificadora gratuita.
Para quienes empiezan, la validación mediante HTTP-01 suele ser la opción más sencilla, ya que no requiere conexión con ninguna API de DNS. En su lugar, Let’s Encrypt comprueba si tu dominio es accesible mediante una solicitud HTTP al dominio configurado. Si esta solicitud tiene éxito, el dominio se considera verificado y se emite el certificado.
Crea ahora un archivo llamado clusterissuer.yaml:
nano clusterissuer.yamlbashEn este archivo defines la siguiente configuración:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: tu-correo@ejemplo.es
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
ingressClassName: traefikyamlSustituye la dirección de correo electrónico por la tuya. Let’s Encrypt la utiliza para avisarte de información importante, como la próxima caducidad de los certificados.
Aplica después el archivo a tu clúster de Kubernetes:
kubectl apply -f clusterissuer.yamlbashCon ello se crea el ClusterIssuer y queda disponible para todas las aplicaciones del clúster. Después, comprueba que el recurso se haya creado correctamente:
kubectl get clusterissuerbash
Si aparece el ClusterIssuer, la configuración se ha realizado correctamente. La emisión del certificado se llevará a cabo más adelante de forma automática, cuando n8n sea accesible mediante el dominio y se haya configurado el recurso Ingress correspondiente.
Paso 9: crear un secreto de Kubernetes para n8n
El chart de Helm oficial utiliza un secreto de Kubernetes para almacenar valores clave, entre ellos N8N_ENCRYPTION_KEY, N8N_HOST, N8N_PORT y N8N_PROTOCOL. Estos parámetros son necesarios para el funcionamiento básico de n8n. Sustituye n8n.tu-dominio.es por tu subdominio real y ejecuta después el siguiente comando:
kubectl create secret generic n8n-secrets -n n8n \
--from-literal=N8N_ENCRYPTION_KEY=$(openssl rand -hex 32) \
--from-literal=N8N_HOST=n8n.tu-dominio.es \
--from-literal=N8N_PORT=5678 \
--from-literal=N8N_PROTOCOL=https \
--from-literal=WEBHOOK_URL=https://n8n.tu-dominio.es/ \
--from-literal=N8N_PROXY_HOPS=1bashPaso 10: crear el archivo values para la instalación de n8n
Instalamos n8n en el llamado modo Standalone. Esto significa que n8n se ejecuta con una configuración sencilla: funciona en un único pod y no necesita servicios adicionales como una base de datos externa o Redis. En su lugar, utiliza una base de datos SQLite integrada. Esta variante es ideal para primeros proyectos, instalaciones pequeñas o para aprender, ya que resulta mucho menos compleja.
Para que Helm sepa cómo debe configurarse n8n, crea ahora un archivo de configuración llamado n8n-values.yaml.
nano n8n-values.yamlbashEn este archivo defines los ajustes más importantes para tu instalación, por ejemplo variables de entorno, espacio de almacenamiento o el dominio.
queueMode:
enabled: false
database:
type: sqlite
useExternal: false
redis:
enabled: false
persistence:
enabled: true
size: 10Gi
secretRefs:
existingSecret: n8n-secrets
main:
extraEnv:
- name: TZ
value: Europe/Madrid
ingress:
enabled: true
className: traefik
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: n8n.tu-dominio.es
paths:
- path: /
pathType: Prefix
tls:
- secretName: n8n-tls
hosts:
- n8n.tu-dominio.esyamlAsegúrate de sustituir n8n.tu-dominio.es por tu propio dominio. Este archivo actúa como archivo principal de configuración de tu instalación y podrás ajustarlo más adelante en cualquier momento si quieres ampliar o escalar n8n.
El chart ofrece muchas más opciones, entre ellas Queue Mode, workers, HPA y procesadores de webhooks dedicados. Para una primera instalación, esta configuración simplificada suele ser la forma más adecuada de empezar. La documentación oficial de n8n distingue claramente entre Standalone para entornos pequeños y Queue Mode para configuraciones escalables con PostgreSQL y Redis.
Paso 11: instalar n8n con el chart oficial de Helm
Ahora sigue la instalación propiamente dicha de n8n en Kubernetes mediante el chart de Helm. Para ello, ejecuta el siguiente comando:
helm install n8n oci://ghcr.io/n8n-io/n8n-helm-chart/n8n \
--version 1.0.0 \
-n n8n \
-f n8n-values.yamlbashDespués, comprueba si se han creado los recursos:
kubectl get all -n n8nbashA continuación, revisa los pods con más detalle para asegurarte de que n8n se ha iniciado correctamente y no se han producido errores.
kubectl get pods -n n8n -wbashEn cuanto el pod principal esté en ejecución y listo, n8n quedará instalado en el clúster.
Además del chart OCI de ghcr.io/n8n-io utilizado en esta guía, existen otras fuentes de charts de Helm con las que también se puede instalar n8n en Kubernetes. Entre ellas se incluye un chart mantenido por la comunidad, disponible a través del proyecto GitHub Community Charts y actualizado con regularidad, así como el conocido chart de 8gears, disponible en GitHub y ArtifactHub.
Paso 12: comprobar el Ingress y el certificado
Como ya has configurado Ingress y TLS en el archivo values, cert-manager debería solicitar ahora un certificado para tu subdominio. Primero, comprueba el Ingress:
kubectl get ingress -n n8nbashA continuación, comprueba el certificado:
kubectl get certificate -n n8n
kubectl describe certificate n8n-tls -n n8nbashPaso 13: abrir n8n en el navegador y completar la configuración inicial
En cuanto el Ingress esté activo y el certificado se haya creado correctamente, abre tu instancia en el navegador:
https://n8n.tu-dominio.es
La primera vez que accedas, n8n te guiará durante la configuración inicial. Normalmente, en este paso crearás primero el usuario administrador de la instancia.

Paso 14: probar la instalación
Después de la configuración inicial, conviene comprobar brevemente si la instalación funciona correctamente. Para ello, abre el editor de n8n, crea un workflow de prueba sencillo y guárdalo. Además, también es recomendable revisar los registros (logs) del pod principal.
kubectl logs -n n8n -l app.kubernetes.io/component=main --tail=100bashSi el editor es accesible, el inicio de sesión funciona y en los logs no aparecen errores evidentes, la instalación básica se ha completado correctamente.
Paso 15: lo que debes saber para el funcionamiento en producción
Para instalaciones pequeñas, el modo Standalone es un buen punto de partida. Sin embargo, el chart oficial y la documentación de n8n diferencian claramente entre Standalone y Queue Mode, un modo de ejecución con cola de tareas pensado para cargas mayores. En cuanto entran en juego varios usuarios, más ejecuciones simultáneas o una alta carga de webhooks, este modo suele ser la opción más sólida. En ese caso, se añaden PostgreSQL y Redis. Además, los workers pueden escalarse de forma independiente.

