---
title: "Despliega n8n en tu propio servidor: dominio, flujos de trabajo y copias de seguridad"
description: "Despliega n8n con la plantilla de Zenavo, configura HTTPS, la URL de los webhooks y la zona horaria, ejecuta tu primer flujo de trabajo y guarda la clave de cifrado y la copia de seguridad del volumen."
date: 2026-11-10
language: es-ES
url: https://zenavo.app/es-ES/blog/self-host-n8n
---

# Despliega n8n en tu propio servidor: dominio, flujos de trabajo y copias de seguridad

Pasar las respuestas de un formulario a una hoja de cálculo, resumir mensajes a una hora fija o llamar a una API cuando llega un webhook: ese tipo de tareas repetitivas es justo lo que resuelve [n8n](https://n8n.io). Al alojarlo tú mismo no tienes límites por número de ejecuciones y tanto los flujos como las credenciales se quedan en tu propio servidor.

En esta guía usamos la plantilla de n8n de Zenavo para ir desde el despliegue, el dominio y los webhooks hasta las copias de seguridad y las actualizaciones. El servidor, Zenavo y las API de terceros que llamen tus flujos se facturan por separado.

## Despliega n8n

Primero [conecta un servidor Linux](https://docs.zenavo.app/es-ES/servers/add-a-server) a Zenavo, abre la [plantilla de n8n](https://zenavo.app/deploy?template=n8n), elige el servidor y despliega.

Actualmente la plantilla configura:

| Ajuste | Valor o finalidad |
|---|---|
| Imagen | `n8nio/n8n:latest` |
| Puerto HTTP | `5678` |
| Volumen | `/home/node/.n8n`: aquí están la base de datos SQLite por defecto, los flujos de trabajo y las credenciales |
| `N8N_ENCRYPTION_KEY` | Se genera al crear el proyecto y cifra las credenciales guardadas en los flujos |
| `GENERIC_TIMEZONE` | `UTC` por defecto; más abajo la cambiamos a tu zona horaria |
| `N8N_DIAGNOSTICS_ENABLED` | `false`, desactiva la telemetría |

`latest` sigue las versiones nuevas del proyecto. Para un uso estable a largo plazo, entra en **Ajustes → Origen** del servicio n8n y fija la etiqueta de la imagen en una versión que hayas probado (por ejemplo, `n8nio/n8n:1.82.0`), para que un nuevo despliegue no cambie de versión sin que te des cuenta.

## Asocia un dominio y configura los webhooks y la zona horaria

En la pestaña **Red** del servicio n8n, asocia un dominio como `n8n.example.com` al puerto `5678`, añade en el DNS un registro A que apunte al servidor y espera a que esté activo el HTTPS. Los pasos están en [Dominios y HTTPS](https://docs.zenavo.app/es-ES/networking/domains).

Después abre la pestaña **Variable** del servicio n8n y añade el dominio y la zona horaria:

```sh
N8N_HOST=n8n.example.com
N8N_PROTOCOL=https
N8N_EDITOR_BASE_URL=https://n8n.example.com/
WEBHOOK_URL=https://n8n.example.com/
N8N_PROXY_HOPS=1
GENERIC_TIMEZONE=Europe/Madrid
TZ=Europe/Madrid
```

Unas notas:

- `WEBHOOK_URL` define la dirección pública que generan los nodos Webhook; si no la pones, los nodos mostrarán la dirección interna del contenedor (`http://localhost:5678`).
- `N8N_PROXY_HOPS=1` corresponde al salto por el proxy inverso de Zenavo. Si además pones por delante un CDN como Cloudflare, ajusta el número de saltos.
- `GENERIC_TIMEZONE` marca la zona horaria por defecto de los disparadores programados (Schedule Trigger); cámbiala por la tuya, como `America/Mexico_City` o `America/Bogota`.

Guarda y reinicia el servicio, y luego abre `https://n8n.example.com` para crear la cuenta de propietario. Si más adelante cambias de dominio, actualiza también las variables de dirección anteriores.

## Ejecuta tu primer flujo de trabajo y prueba un webhook

Dentro del editor, crea primero un flujo mínimo para comprobar que todo funciona:

1. Crea un flujo nuevo y añade un **Manual Trigger**.
2. Añade un nodo **Edit Fields (Set)** y crea un campo de texto `message` con el valor `Hello from n8n`.
3. Haz clic en **Test workflow**, comprueba que el mensaje sale en el resultado de la derecha y guarda.

A continuación, comprueba que las peticiones externas llegan al nodo Webhook:

1. Añade un nodo **Webhook** con HTTP Method en `GET`.
2. Haz clic en **Listen for test event**, abre en el navegador la **Test URL** que muestra el nodo y comprueba que el editor recibe la petición al instante.
3. Cuando conectes un servicio externo real (GitHub, Stripe, Slack, etc.), usa la **Production URL** y activa el interruptor **Active** arriba a la derecha del flujo. La Test URL solo funciona mientras el editor está escuchando una prueba.

## Guarda a buen recaudo `N8N_ENCRYPTION_KEY`

Todas las claves de API, contraseñas de bases de datos y tokens OAuth que guardas en n8n se cifran con `N8N_ENCRYPTION_KEY` antes de escribirse en la base de datos.

Abre la pestaña **Variable** del servicio n8n y copia el valor de `N8N_ENCRYPTION_KEY` en tu gestor de contraseñas. **No lo cambies después de desplegar.** Si algún día restauras una copia de seguridad en un proyecto nuevo o en otro servidor, tendrás que poner exactamente la misma `N8N_ENCRYPTION_KEY`; sin ella, n8n no podrá descifrar las credenciales guardadas.

La opción de exportar un flujo como JSON desde el editor solo guarda los nodos y sus conexiones, sin credenciales ni historial de ejecuciones, así que no sustituye a una copia de seguridad completa.

## Copias de seguridad y actualizaciones

Todos los datos de n8n están en el volumen `/home/node/.n8n`. Haz copia de seguridad desde la pestaña **Copias de seguridad y restauración** del servicio n8n:

1. Elige un momento en que no haya tareas críticas en marcha y detén el proyecto (la copia de un volumen requiere que el proyecto esté detenido).
2. Crea la copia de seguridad del volumen y, cuando termine, vuelve a iniciar el proyecto.
3. Descarga una copia para guardarla junto con tu `N8N_ENCRYPTION_KEY`.

Los detalles están en [Copias de seguridad y restauración](https://docs.zenavo.app/es-ES/operations/backups). Si restauras la copia en un proyecto nuevo para probarla, ten en cuenta que los flujos activos volverán a ejecutar sus disparadores programados al arrancar: desactívalos antes o aísla el entorno de prueba.

Antes de actualizar, lee las [notas de la versión](https://docs.n8n.io/release-notes/) de n8n, haz primero una copia de seguridad del volumen y cambia después la versión de la imagen en **Ajustes → Origen**. Como una actualización puede migrar el esquema de la base de datos, volver a la etiqueta anterior de la imagen no siempre basta para revertir; si hace falta volver atrás, restaura la copia previa a la actualización.

## Preguntas frecuentes

**¿El nodo Webhook sigue mostrando `localhost:5678`?**
Comprueba que has añadido `WEBHOOK_URL=https://tu-dominio/` en la pestaña **Variable** y reinicia el servicio n8n después de guardar.

**¿Un servicio externo recibe un 404 al llamar al webhook?**
Confirma que estás usando la **Production URL** (con `/webhook/` y no `/webhook-test/`) y que el interruptor **Active** de la esquina superior derecha del flujo está encendido.

**¿Las tareas programadas no se ejecutan a la hora esperada?**
Comprueba que `GENERIC_TIMEZONE` y `TZ` tienen tu zona horaria en **Variable**, y revisa en **Settings → Timezone** del propio flujo si tiene definida otra zona horaria distinta.

**¿Qué servidor necesito?**
Para flujos ligeros del día a día basta un servidor de 1 vCPU y 2 GB de memoria. Si tus flujos procesan archivos grandes, listas JSON muy pesadas en memoria o muchas ejecuciones simultáneas, usa un servidor de 2 vCPU y 4 GB o más.

Empieza con la [plantilla de n8n](https://zenavo.app/deploy?template=n8n): asocia tu dominio, configura `WEBHOOK_URL` y la zona horaria, guarda `N8N_ENCRYPTION_KEY` y haz tu primera copia de seguridad del volumen.
