From d4b1ac55a2c021696644896b65e83c517a976611 Mon Sep 17 00:00:00 2001 From: elmer-20 <80175046+elmer-20@users.noreply.github.com> Date: Tue, 21 Apr 2026 12:22:01 -0500 Subject: [PATCH] Primer commit - setup evolution api --- docker-compose.yml | 13 +++++---- install.sh | 59 ++++++++++++++++++++-------------------- steps.txt | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 37 deletions(-) create mode 100644 steps.txt diff --git a/docker-compose.yml b/docker-compose.yml index 0e5986a..a25e809 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,7 @@ services: - redis - postgres ports: - - ${EVOLUTION_API_PORT}:8080 + - 127.0.0.1:${EVOLUTION_API_PORT}:8080 volumes: - evolution_instances:/evolution/instances networks: @@ -24,11 +24,12 @@ services: - evolution-net container_name: redis command: > - redis-server --port 6379 --appendonly yes + redis-server --port 6379 --appendonly yes --requirepass ${REDIS_PASSWORD} volumes: - evolution_redis:/data - ports: - - ${REDIS_PORT}:6379 + # Sin 'ports': solo accesible dentro de la red Docker interna + expose: + - 6379 postgres: container_name: postgres @@ -38,13 +39,11 @@ services: command: ["postgres", "-c", "max_connections=1000", "-c", "listen_addresses=*"] restart: always - ports: - - ${POSTGRESS_PORT}:5432 + # Sin 'ports': solo accesible dentro de la red Docker interna environment: - POSTGRES_USER=${POSTGRESS_USER} - POSTGRES_PASSWORD=${POSTGRESS_PASS} - POSTGRES_DB=evolution - - POSTGRES_HOST_AUTH_METHOD=trust volumes: - postgres_data:/var/lib/postgresql/data expose: diff --git a/install.sh b/install.sh index 75ba1e6..6174ce9 100644 --- a/install.sh +++ b/install.sh @@ -4,10 +4,10 @@ set -euo pipefail # Colores ANSI GREEN='\033[0;32m' RED='\033[0;31m' -NC='\033[0m' # No Color (reset) +NC='\033[0m' # ───────────────────────────────────────────────────────────────────────────── -# Cargar variables de entorno del .env (requiere que exista en el mismo directorio) +# Cargar variables de entorno del .env # ───────────────────────────────────────────────────────────────────────────── if [[ -f .env ]]; then set -a && source .env && set +a @@ -16,12 +16,11 @@ else exit 1 fi -# ───────────────────────────────────────────────────────────────────────────── -# Determinar protocolo y configuración de cookie según N8N_HOST -# ───────────────────────────────────────────────────────────────────────────── - -# Obtener IP pública (global) -PUBLIC_IP=$(curl -s http://checkip.amazonaws.com || curl -s https://icanhazip.com) +# Validar variables obligatorias +: "${EVOLUTION_API_PORT:?Falta EVOLUTION_API_PORT en .env}" +: "${POSTGRESS_USER:?Falta POSTGRESS_USER en .env}" +: "${POSTGRESS_PASS:?Falta POSTGRESS_PASS en .env}" +: "${REDIS_PASSWORD:?Falta REDIS_PASSWORD en .env}" # ───────────────────────────────────────────────────────────────────────────── # Actualizar repositorios y paquetes @@ -29,17 +28,18 @@ PUBLIC_IP=$(curl -s http://checkip.amazonaws.com || curl -s https://icanhazip.co sudo apt update # ───────────────────────────────────────────────────────────────────────────── -# Instalar prerequisitos (si faltan) +# Instalar prerequisitos # ───────────────────────────────────────────────────────────────────────────── sudo apt install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ - lsb-release + lsb-release \ + netcat-openbsd # ───────────────────────────────────────────────────────────────────────────── -# Instalación de Docker (si no está instalado) +# Instalación de Docker # ───────────────────────────────────────────────────────────────────────────── if ! command -v docker >/dev/null 2>&1; then echo "Docker no encontrado. Instalando Docker..." @@ -56,7 +56,7 @@ else fi # ───────────────────────────────────────────────────────────────────────────── -# Instalación de Docker Compose CLI plugin (si no está instalado) +# Instalación de Docker Compose CLI plugin # ───────────────────────────────────────────────────────────────────────────── if ! docker compose version >/dev/null 2>&1; then echo "Docker Compose CLI plugin no encontrado. Instalando..." @@ -67,46 +67,45 @@ else fi # ───────────────────────────────────────────────────────────────────────────── -# Instalación de Evolution API (si no está instalado) +# Instalación de Evolution API # ───────────────────────────────────────────────────────────────────────────── -if sudo docker container evolution_api >/dev/null 2>&1; then +# FIX: el comando correcto es 'docker inspect', no 'docker container ' +if docker inspect evolution_api >/dev/null 2>&1; then echo "Evolution API ya está instalado y configurado." else - echo "Instalando Evolution API y servicios (corriendo docker-compose.yml) ..." + echo "Instalando Evolution API y servicios..." sudo docker compose up -d - - echo -e "${GREEN} Evolution API y servicios instalados${NC}" + echo -e "${GREEN}Evolution API y servicios instalados${NC}" fi +# ───────────────────────────────────────────────────────────────────────────── +# Verificar que Evolution API levantó correctamente (localhost, no IP pública) +# ───────────────────────────────────────────────────────────────────────────── CHECK_APP_MAX_ATTEMPTS=5 CHECK_APP_DELAY_SECONDS=5 -# Función para validar que un puerto esté accesible externamente para una aplicación -# Recibe Puerto y Nombre de la Aplicación -# Realiza hasta CHECK_APP_MAX_ATTEMPTS intentos con CHECK_APP_DELAY_SECONDS segundos de delay. Si tras CHECK_APP_MAX_ATTEMPTS fallos, muestra error y termina. -check_port_open() { +check_port_local() { local PORT=$1 local APP_NAME=$2 local attempt=1 while ((attempt <= CHECK_APP_MAX_ATTEMPTS)); do - - echo -e "Verificando acceso a ${APP_NAME} . . . " - + echo "Verificando ${APP_NAME} en localhost:${PORT} (intento ${attempt}/${CHECK_APP_MAX_ATTEMPTS})..." sleep ${CHECK_APP_DELAY_SECONDS} - # Verificar respuesta del VPS - if nc -z -w5 "${PUBLIC_IP}" "${PORT}"; then - echo -e "${GREEN}¡Instalación completada! ${APP_NAME} funcionando y accesible: http://${PUBLIC_IP}:${PORT}${NC}/manager" + + if nc -z -w5 127.0.0.1 "${PORT}"; then + echo -e "${GREEN}¡${APP_NAME} está corriendo en localhost:${PORT}!${NC}" return 0 fi attempt=$((attempt + 1)) done - # Si llegamos aquí, todos los intentos fallaron - echo -e "${RED}Error: El puerto ${PORT} para ${APP_NAME} no es accesible externamente en ${PUBLIC_IP}:${PORT}. Verifica las reglas de entrada / firewall de tu servidor VPS.${NC}" + echo -e "${RED}Error: ${APP_NAME} no responde en localhost:${PORT} tras ${CHECK_APP_MAX_ATTEMPTS} intentos.${NC}" + echo "Revisa los logs con: docker compose logs evolution_api" + exit 1 } -check_port_open "${EVOLUTION_API_PORT}" "Evolution API" +check_port_local "${EVOLUTION_API_PORT}" "Evolution API" # Refrescar grupos para la sesión actual newgrp docker diff --git a/steps.txt b/steps.txt new file mode 100644 index 0000000..f91d2dd --- /dev/null +++ b/steps.txt @@ -0,0 +1,67 @@ +1.1. Ingresa a la carpeta del instalador +Una vez descargado, ingresa a la carpeta correspondiente: + +cd shell-evolution-api +Copiar +2. Crea el archivo .env +Vamos a crear el archivo de configuración de nuestro instalador basados en un archivo de ejemplo: + +cp .env.example .env +Copiar +2.1. Configuración del archivo .env +Antes de levantar los servicios, asegúrate de configurar tu archivo .env: + +nano .env +Copiar +Edita el archivo .env con tus propios valores: + +############################################ +# Evolution API +############################################ + +# ------------------------------------------ +AUTHENTICATION_API_KEY=api_key # Clave de autenticación para Evolution API (Contraseña de administrador) +# ------------------------------------------ +EVOLUTION_API_PORT=8080 # Puerto de escucha para Evolution API +# ------------------------------------------ +CONFIG_SESSION_PHONE_VERSION=2.3000.1023204200 # Whatsapp Web version for baileys channel: https://web.whatsapp.com/check-update?version=0&platform=web +# ------------------------------------------ + +############################################ +# PostgreSQL +############################################ + +# ------------------------------------------ +POSTGRESS_USER=user # Usuario de PostgreSQL (POR SEGURIDAD MODIFICA ESTE VALOR) +# ------------------------------------------ +POSTGRESS_PASS=123456 # Contraseña de PostgreSQL (POR SEGURIDAD MODIFICA ESTE VALOR) +# ------------------------------------------ +POSTGRESS_PORT=5432 # Puerto de PostgreSQL (Se sugiere no modificar) +# ------------------------------------------ + +############################################ +# Redis +############################################ + +REDIS_PORT=6379 # Puerto de Redis (Se sugiere no modificar) +3. Ejecutar el instalador +3.1. Dar permisos de ejecución al script +Con ese comando le indicas al sistema que el archivo install.sh ya puede ser ejecutado en el servidor: + +chmod +x install.sh +Copiar +3.2. Ejecutar el script +El script actualizará el sistema, instalará Docker y Docker Compose, añadirá el usuario al grupo docker y desplegará Evolution API: + +./install.sh +Copiar +Shell Ubuntu +Nota: +El script omitirá la instalación de los servicios que ya tengas instalados en tu servidor VPS como Docker y Docker Compose. +4. Verifica la instalación +4.1. Evolution API +Al finalizar, verás un mensaje indicando la URL de acceso a Evolution API: + +¡Instalación completada! Evolution API funcionando y accesible: http://IP_DEL_SERVIDOR:EVOLUTION_API_PORT/manager +Login Evolution API +Nota: Recuerda remplazar IP_DEL_SERVIDOR por el dominio / IP de tu servidor y tener el puerto EVOLUTION_API_PORT abierto. \ No newline at end of file