Ir al contenido

Buscar en la documentación

Busca en la documentación de Skiffly

n8n autoalojado

Despliega n8n con PostgreSQL en Skiffly desde la plantilla en un par de minutos y luego configura la URL de webhooks, un dominio propio, una clave de cifrado que conservas, respaldos, actualizaciones y el tamaño de los recursos.

Qué vas a construir: la plantilla n8n — un servicio n8n (n8nio/n8n, puerto 5678, un volumen de 2 GB para /home/node/.n8n) y un servicio Postgres (volumen de 10 GB) ya conectados entre sí — con un dominio público y, opcionalmente, un dominio propio y el modo de cola. Unos 5 minutos hasta tener el editor funcionando.

1. Desplegar la plantilla#

Nuevo proyectoautomation. En el lienzo, Nuevo servicio → Plantilla, busca n8n, Desplegar. No hace falta nada más: la contraseña de Postgres y N8N_ENCRYPTION_KEY se generan solas. Aparecen dos servicios y empiezan a compilarse; el servicio n8n pasa a SUCCESS cuando /healthz responde, normalmente en menos de un minuto.

2. Abrirlo#

La plantilla le da a n8n un dominio generado automáticamente (N8N_HOST, WEBHOOK_URL y N8N_EDITOR_BASE_URL referencian ${{self.SKIFFLY_PUBLIC_DOMAIN}}). Encuéntralo con skiffly domain -s n8n o en la tarjeta del servicio, ábrelo y crea la cuenta de propietario. Los nodos de webhook muestran la URL pública de inmediato.

Variables esperadas en el servicio n8n (skiffly variables -s n8n): DB_TYPE=postgresdb, DB_POSTGRESDB_HOSTpostgres, N8N_ENCRYPTION_KEY, N8N_PROTOCOL=https, N8N_RUNNERS_ENABLED=true.

3. Conservar la clave de cifrado#

N8N_ENCRYPTION_KEY cifra todas las credenciales que guardas en n8n. Se generó al desplegar y vive en las variables del servicio y en /home/node/.n8n/config dentro del volumen. Cópiala ahora a un lugar seguro:

skiffly variables -s n8n --kv | grep N8N_ENCRYPTION_KEY

Si alguna vez cambia, las credenciales guardadas quedan ilegibles.

4. Dominio propio#

skiffly domain -s n8n n8n.example.com
# crea los registros CNAME y TXT que imprime y luego:
skiffly domain status n8n.example.com

Una vez verificado, las referencias self.SKIFFLY_PUBLIC_DOMAIN siguen apuntando al primer dominio del servicio, el generado. Cambia las tres variables de URL al dominio propio y vuelve a desplegar:

skiffly variables set -s n8n N8N_HOST=n8n.example.com WEBHOOK_URL=https://n8n.example.com/ N8N_EDITOR_BASE_URL=https://n8n.example.com/

Los webhooks existentes siguen funcionando en el dominio anterior mientras lo conserves; elimínalo con skiffly domain delete cuando todo se haya movido.

5. Recursos#

La plantilla le da a n8n 1 vCPU / 1 GiB, suficiente para unas cuantas decenas de workflows. Los workflows pesados (archivos grandes, muchas ejecuciones en paralelo) necesitan 2 GiB: servicio → Configuración → Recursos. No actives App Sleeping para n8n: los disparadores programados se detienen mientras duerme, y los webhooks tendrían que esperar a que despierte.

El historial de ejecuciones hace crecer la base de datos; define EXECUTIONS_DATA_PRUNE=true y EXECUTIONS_DATA_MAX_AGE=168 (horas) para mantener Postgres pequeño.

6. Actualizaciones#

La plantilla fija n8nio/n8n:latest, así que volver a desplegar descarga la versión más reciente (skiffly redeploy -s n8n); n8n migra su base de datos al arrancar. Para controlar la versión, fija la imagen a una etiqueta: skiffly deploy --image n8nio/n8n:1.80.0 -s n8n. Lee las notas de la versión de n8n antes de saltar entre versiones mayores.

7. Respaldos#

De ambos volúmenes se toma un snapshot diario (03:00 UTC) junto con un volcado lógico de Postgres; hoy las restauraciones se hacen a través de soporte. Tu propia copia de los workflows es un solo comando:

skiffly ssh -s n8n -T -- n8n export:workflow --all --pretty > workflows.json
skiffly ssh -s n8n -T -- n8n export:credentials --all --decrypted > credentials.json   # manejar con cuidado

8. Modo de cola (opcional)#

Para muchas ejecuciones concurrentes, n8n corre una instancia principal más workers sobre Redis:

  1. skiffly deploy --template redis.
  2. En n8n: EXECUTIONS_MODE=queue, QUEUE_BULL_REDIS_HOST=${{Redis.SKIFFLY_PRIVATE_DOMAIN}}, QUEUE_BULL_REDIS_PORT=6379, QUEUE_BULL_REDIS_PASSWORD=${{Redis.REDIS_PASSWORD}} (la plantilla genera una).
  3. Un servicio worker desde la misma imagen (skiffly deploy --image n8nio/n8n:latest --name n8n-worker), comando de inicio n8n worker, las mismas variables DB_*, N8N_ENCRYPTION_KEY=${{n8n.N8N_ENCRYPTION_KEY}} y QUEUE_*, sin dominio y sin volumen.

Solución de problemas#

SíntomaSolución
Las URL de webhook muestran http://localhost:5678WEBHOOK_URL/N8N_HOST no se resuelven: el servicio todavía no tiene dominio, ejecuta skiffly domain -s n8n y vuelve a desplegar
Credentials could not be decryptedN8N_ENCRYPTION_KEY cambió; restaura el valor original
n8n se reinicia con ECONNREFUSED postgres:5432Postgres todavía está arrancando o se cayó: skiffly logs -s Postgres
El editor va lento / las ejecuciones agotan el tiemposube la memoria en Configuración → Recursos y poda las ejecuciones
Your n8n server is configured to use a secure cookieN8N_PROTOCOL=https con una URL http plana; usa el dominio https://

Siguiente: Plantillas · Volúmenes y bases de datos · Redes