fix(n8n): actualizar stack de automatización de workflows

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Eduardo David Paredes Vara
2026-05-25 05:48:07 +00:00
parent 1db61640d2
commit 6b641981dd
3 changed files with 43 additions and 17 deletions
+7 -7
View File
@@ -28,12 +28,12 @@ Este stack despliega n8n con:
- Repository URL: `<tu-repositorio>`
- Repository reference: `main`
- Compose path: `n8n/docker-compose.yml`
5. Carga el archivo de variables de entorno: `n8n/stack.env`
5. Copia `n8n/stack.env` a `n8n/.env` y carga `n8n/.env` como archivo de variables de entorno
6. Haz clic en **Deploy the stack**
### Variables de Entorno Importantes
Edita el archivo `stack.env`:
Edita el archivo `.env`:
```env
# Base de datos PostgreSQL
@@ -235,7 +235,7 @@ Usa el nodo **Schedule Trigger**:
docker logs n8n-pg
```
3. Verifica las credenciales en `stack.env`
3. Verifica las credenciales en `.env`
### Workflows se ejecutan lentamente
@@ -246,7 +246,7 @@ Usa el nodo **Schedule Trigger**:
### Error "Execution timed out"
Aumenta el timeout en `stack.env`:
Aumenta el timeout en `.env`:
```env
EXECUTIONS_TIMEOUT=600
@@ -312,8 +312,8 @@ cat n8n_backup_YYYYMMDD.sql | docker exec -i n8n-pg psql -U n8n n8n
Guarda `N8N_ENCRYPTION_KEY` en un lugar seguro:
```bash
# Extraer del stack.env
grep N8N_ENCRYPTION_KEY stack.env > encryption_key_backup.txt
# Extraer del .env
grep N8N_ENCRYPTION_KEY .env > encryption_key_backup.txt
# Guardar en un gestor de contraseñas o vault
```
@@ -330,7 +330,7 @@ También puedes exportar workflows manualmente:
## 🔄 Actualizaciones
1. Haz **backup** de la base de datos y la clave de cifrado
2. Actualiza en `stack.env`:
2. Actualiza en `.env`:
```env
N8N_IMAGE=n8nio/n8n:latest
```
+22 -4
View File
@@ -12,10 +12,10 @@ services:
DB_POSTGRESDB_USER: ${N8N_DB_USER}
DB_POSTGRESDB_PASSWORD: ${N8N_DB_PASSWORD}
N8N_HOST: ${SERVICE_FQDN_N8N}
N8N_HOST: ${N8N_HOST}
N8N_PORT: ${N8N_PORT}
N8N_PROTOCOL: ${N8N_PROTOCOL}
WEBHOOK_URL: https://${SERVICE_FQDN_N8N}/
WEBHOOK_URL: ${N8N_WEBHOOK_URL}
GENERIC_TIMEZONE: ${N8N_TIMEZONE}
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
@@ -38,8 +38,24 @@ services:
networks:
- n8n
- proxy
- mail_internal
labels:
traefik.http.services.n8n.loadbalancer.server.port: "5678"
traefik.enable: "true"
traefik.docker.network: "proxy"
traefik.http.routers.n8n-ui.rule: "Host(`${N8N_DOMAIN}`)"
traefik.http.routers.n8n-ui.entrypoints: "${TRAEFIK_ENTRYPOINT_SECURE}"
traefik.http.routers.n8n-ui.tls: "true"
traefik.http.routers.n8n-ui.tls.certresolver: "${TRAEFIK_CERTRESOLVER}"
traefik.http.routers.n8n-ui.service: "n8n"
traefik.http.routers.n8n-ui.priority: "10"
# traefik.http.routers.n8n-ui.middlewares: "crowdsec-bouncer@file,${TRAEFIK_AUTH_MIDDLEWARE}"
traefik.http.routers.n8n-webhook.rule: "Host(`${N8N_DOMAIN}`) && (PathPrefix(`/webhook`) || PathPrefix(`/webhook-test`))"
traefik.http.routers.n8n-webhook.entrypoints: "${TRAEFIK_ENTRYPOINT_SECURE}"
traefik.http.routers.n8n-webhook.tls: "true"
traefik.http.routers.n8n-webhook.tls.certresolver: "${TRAEFIK_CERTRESOLVER}"
traefik.http.routers.n8n-webhook.service: "n8n"
traefik.http.routers.n8n-webhook.priority: "20"
traefik.http.services.n8n.loadbalancer.server.port: "${N8N_PORT}"
n8n-db:
image: postgres:16
@@ -51,7 +67,7 @@ services:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- /opt/n8n/postgres:/var/lib/postgresql/data:Z
- ${N8N_DB_DATA_PATH}:/var/lib/postgresql/data:Z
networks:
- n8n
@@ -60,3 +76,5 @@ networks:
driver: bridge
proxy:
external: true
mail_internal:
external: true
+14 -6
View File
@@ -4,36 +4,44 @@ N8N_DB_HOST=n8n-db
N8N_DB_PORT=5432
N8N_DB_NAME=n8n
N8N_DB_USER=n8n
N8N_DB_PASSWORD=
N8N_DB_PASSWORD=change-me
##### n8n - Servidor / dominio #####
N8N_HOST=
N8N_PORT=5678
N8N_PROTOCOL=https
N8N_WEBHOOK_URL=
N8N_WEBHOOK_URL=https://app.example.com
N8N_TIMEZONE=Europe/Madrid
# Genera una nueva con: openssl rand -hex 32
N8N_ENCRYPTION_KEY=
N8N_ENCRYPTION_KEY=change-me-generate-with-openssl-rand-hex-32
N8N_NODE_ENV=production
N8N_DIAGNOSTICS_ENABLED=false
##### n8n - Correo (SMTP) #####
N8N_EMAIL_MODE=smtp
N8N_SMTP_HOST=
N8N_SMTP_HOST=mail-relay
N8N_SMTP_PORT=587
N8N_SMTP_USER=
N8N_SMTP_PASS=
N8N_SMTP_SENDER=n8n@thehomelesssherlock.com
N8N_SMTP_SENDER=admin@example.com
N8N_SMTP_SSL=false
N8N_SMTP_STARTTLS=false
##### PostgreSQL interno #####
POSTGRES_USER=n8n
POSTGRES_PASSWORD=
POSTGRES_PASSWORD=change-me
POSTGRES_DB=n8n
# Ruta en el host para los datos de Postgres
N8N_DB_DATA_PATH=/opt/n8n/postgres
##### Traefik #####
N8N_DOMAIN=app.example.com
TRAEFIK_ENTRYPOINT_SECURE=websecure
TRAEFIK_CERTRESOLVER=letsencrypt
TRAEFIK_AUTH_MIDDLEWARE=ths-authentik@docker
SERVICE_URL_N8N=https://app.example.com
SERVICE_FQDN_N8N=app.example.com