From 25d4e71eab129eee45653305f5c46af6745b1a51 Mon Sep 17 00:00:00 2001 From: Marco Gallegos Date: Sat, 5 Jul 2025 12:41:24 -0600 Subject: [PATCH] Update README.md --- README.md | 106 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 56 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 5fb8ded..6c0ade5 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,70 @@ # Stack de n8n y Evolution API para Coolify +### Versión 3.0 - Segura y Lista para Producción -Este repositorio contiene la configuración de Docker Compose para desplegar un stack completo con n8n y Evolution API, utilizando una base de datos PostgreSQL y una instancia de Redis compartidas. +Este repositorio contiene la configuración de Docker Compose para desplegar un stack completo y unificado con **n8n** y **Evolution API**, utilizando servicios compartidos de PostgreSQL y Redis. -Está diseñado para ser desplegado fácilmente en [Coolify](https://coolify.io) a través de su integración con Git. +Está diseñado para ser desplegado de forma robusta y segura en **Coolify** a través de su integración con Git. + +--- + +## Arquitectura Clave + +Esta configuración utiliza un enfoque profesional para garantizar un despliegue estable: + +1. **Imagen de PostgreSQL Personalizada:** Se usa un `Dockerfile.postgres` para construir una imagen propia de PostgreSQL que incluye el script de inicialización. Esto elimina por completo los errores de montaje de volúmenes. + +2. **Sin Mapeo de Puertos:** No se usa la sección `ports` para dejar que el proxy de Coolify gestione el tráfico y los certificados SSL, evitando conflictos. + +3. **Gestión de Secretos Centralizada:** Todas las variables de entorno, especialmente los secretos, se gestionan **exclusivamente** en la interfaz de usuario de Coolify. **Este repositorio no contiene ninguna contraseña o clave de API.** + +## Estructura del Repositorio + +``` +/ +|-- .gitignore +|-- .env.example <-- Plantilla de todas las variables necesarias. ¡NO CONTIENE SECRETOS! +|-- docker-compose.yaml <-- Orquesta los servicios y construye la imagen de Postgres. +|-- Dockerfile.postgres <-- Define cómo construir nuestra imagen de Postgres. +|-- init-db.sh <-- Script para crear la base de datos de Evolution. +`-- README.md <-- Esta guía. +``` ## Servicios -- **n8n**: Servicio de automatización de flujos de trabajo. -- **api**: Servicio de Evolution API para la conexión con WhatsApp. -- **postgres**: Servidor de base de datos PostgreSQL 16, compartido por n8n y la API. -- **redis**: Servidor de caché Redis, utilizado por la API de Evolution. +| Nombre del Servicio | Descripción | Accesible en | +| ------------------- | ---------------------------------------------- | ------------------------------------------------ | +| `n8n_app` | El servicio de automatización de flujos n8n. | `https://flows.soul23.cloud` (vía proxy Coolify) | +| `evolution_api` | La API de Evolution para la conexión con WA. | `https://evo.soul23.cloud` (vía proxy Coolify) | +| `pg_database` | Servidor PostgreSQL 16 compartido. | `pg_database:5432` (red interna de Docker) | +| `redis_cache` | Servidor de caché Redis para Evolution. | `redis_cache:6379` (red interna de Docker) | -## Despliegue en Coolify +--- -1. **Crea un repositorio Git** (si estás leyendo esto, ya lo hiciste). -2. En Coolify, crea un nuevo recurso de tipo **Application**. -3. Elige **Deploy from a Git Repository (Docker Compose)**. -4. Selecciona este repositorio. Coolify detectará automáticamente el `docker-compose.yml`. -5. Ve a la pestaña **Environment Variables** y añade las variables de entorno necesarias (ver sección abajo). **No las guardes en un archivo `.env` en el repositorio.** -6. En la pestaña **Domains**, configura los dominios para los puertos `5678` (n8n) y `8080` (Evolution API). - - `https://flows2.soul23.cloud` -> `n8n:5678` - - `https://evo2.soul23.cloud` -> `api:8080` -7. ¡Despliega! +## Guía de Despliegue en Coolify -## Variables de Entorno +1. **Pre-requisitos:** Asegúrate de que tus registros DNS (`flows.soul23.cloud` y `evo.soul23.cloud`) apunten a la IP de tu servidor Coolify. -Debes configurar estas variables en la UI de Coolify. **NO LAS SUBAS AL REPOSITORIO.** +2. **Configuración en Coolify:** + - Crea una nueva **Application** desde este repositorio de Git. + - **Build Pack:** `Docker Compose` + - **Base Directory:** `/` + - **Docker Compose Location:** `/docker-compose.yaml` -```ini -# --- Configuración Global --- -TZ=America/Monterrey +3. **Variables de Entorno (¡Importante!):** + - Ve a la pestaña **Environment Variables**. + - Usa el archivo `.env.example` de este repositorio como **plantilla** para saber qué variables necesitas. + - Añade las variables una por una o en modo "raw", reemplazando los valores de ejemplo con **tus secretos reales**. **Nunca subas tus secretos a Git.** -# --- FQDNs (Dominios) --- -SERVICE_FQDN_N8N=https://flows2.soul23.cloud -N8N_HOST=flows2.soul23.cloud -SERVICE_FQDN_EVO=https://evo2.soul23.cloud +4. **Dominios:** + - Ve a la pestaña **Domains** y configura las rutas: + - `https://flows.soul23.cloud` -> `n8n_app` (puerto `5678`) + - `https://evo.soul23.cloud` -> `evolution_api` (puerto `8080`) -# --- Credenciales de la Base de Datos (Unificadas) --- -POSTGRES_USER=usuario_seguro -POSTGRES_PASSWORD=contraseña_muy_segura_y_larga +5. **Guardar y Desplegar:** + - Guarda toda la configuración y haz clic en **Deploy**. -# --- Nombres de las Bases de Datos --- -N8N_DB_NAME=n8n -EVOLUTION_DB_NAME=evolution - -# --- Credenciales de API --- -EVOLUTION_API_KEY=tu_api_key_secreta_para_evolution - -# --- Configuración SMTP para n8n --- -N8N_EMAIL_MODE=smtp -N8N_SMTP_HOST=smtp.hostinger.com -N8N_SMTP_PORT=465 -N8N_SMTP_USER=dev@vanityexperience.mx -N8N_SMTP_PASS=tu_contraseña_smtp -N8N_SMTP_SENDER="n8n AlMa" -N8N_SMTP_SSL=true - -# --- OTRAS VARIABLES DE EVOLUTION API --- -# Añade aquí el resto de tus variables de configuración de Evolution API -# Ejemplo: -# WEBHOOK_EVENTS_MESSAGES_UPSERT=true -# ... etc ... -``` +### Solución de Problemas (Arranque en Frío) +Si un despliegue falla, el método más fiable es limpiar el estado anterior: +1. **Stop** la aplicación. +2. Ve a **Persistent Storage** y **elimina todos los volúmenes**. +3. **Redeploy**.