Evolution API Evolution API began as a WhatsApp controller API based on CodeChat, which in turn implemented the Baileys library. While originally focused on WhatsApp, Evolution API has grown into a comprehensive platform supporting multiple messaging services and integrations. We continue to acknowledge CodeChat for laying the groundwork. Today, Evolution API is not limited to WhatsApp. It integrates with various platforms such as Typebot, Chatwoot, Dify, and OpenAI, offering a broad array of functionalities beyond messaging. Evolution API supports both the Baileys-based WhatsApp API and the official WhatsApp Business API, with upcoming support for Instagram and Messenger.
Go to file
Erick Flores Santos 2c5e3eead3
Update README.md
2025-02-07 01:39:41 -05:00
.github Update ESLint configuration, Dockerfile, and package dependencies; add GitHub Actions workflow for code quality checks 2025-01-09 17:04:33 -03:00
.vscode Revert "V2 fix chatwoot reply quote" 2024-09-05 09:26:33 -03:00
Docker feat: send media with form-data 2024-10-04 14:45:16 -03:00
Extras/chatwoot chore: adjusts in docker files 2024-08-09 07:17:09 -03:00
manager/dist update manager 2024-10-11 11:26:37 -03:00
prisma refactor v1 2025-02-06 19:42:57 -05:00
public/images remove o arquivo 2024-10-24 08:52:56 -03:00
src feat: Re-enable group metadata caching in Baileys service 2025-02-02 16:42:17 -03:00
.dockerignore refactor v1 2025-02-06 19:42:57 -05:00
.DS_Store git actions v2 2024-06-09 16:15:44 -03:00
.env.example.local refactor v1 2025-02-06 19:42:57 -05:00
.env.example.local.docker . 2025-02-07 01:23:57 -05:00
.env.example.railway refactor v1 2025-02-06 19:42:57 -05:00
.env.example.render . 2025-02-07 01:23:57 -05:00
.eslintignore init project evolution api 2023-06-09 07:48:59 -03:00
.eslintrc.js Update ESLint configuration, Dockerfile, and package dependencies; add GitHub Actions workflow for code quality checks 2025-01-09 17:04:33 -03:00
.gitignore Added lock and update some libs 2025-01-07 08:50:24 +01:00
.prettierrc.js wip 2023-07-26 11:12:00 -03:00
CHANGELOG.md version: 2.2.3 2025-02-03 11:52:37 -03:00
Dockerfile refactor v1 2025-02-06 19:42:57 -05:00
LICENSE license: license terms updated 2024-10-04 13:27:46 -03:00
local_install.sh feat: sh local install 2024-11-02 08:12:30 -03:00
package-lock.json refactor v1 2025-02-06 19:42:57 -05:00
package.json version: 2.2.3 2025-01-31 17:45:09 -03:00
README.md Update README.md 2025-02-07 01:39:41 -05:00
runWithProvider.js refactor v1 2025-02-06 19:42:57 -05:00
tsconfig.json Update ESLint configuration, Dockerfile, and package dependencies; add GitHub Actions workflow for code quality checks 2025-01-09 17:04:33 -03:00
tsup.config.ts Fixed chatwoot translation files on build 2024-08-15 15:32:17 -03:00

🌱 Evolution API

Evolution API es un proveedor de API no oficial para WhatsApp que ofrece webhooks en tiempo real para recibir y enviar mensajes desde un número conectado.

Este proyecto es un fork del repositorio original de Evolution API, diseñado para ejecutarse sin necesidad de docker-compose. Utiliza solo un Dockerfile, lo que lo hace ideal para desplegar en plataformas como Railway, Render u otros servicios serverless.


🚀 Características principales

✔️ Webhooks en tiempo real para recibir y enviar mensajes.
✔️ Configuración sin docker-compose, utilizando solo un Dockerfile.
✔️ Compatible con Railway, Render y entornos serverless.
✔️ Uso de Redis y PostgreSQL para una gestión eficiente.


🛠 Instalación en Local

📌 Requisitos previos

🔹 Tener Git instalado 👉 Descargar aquí.
🔹 Tener Redis instalado 👉 Descargar aquí.
🔹 Tener PostgreSQL instalado 👉 Descargar aquí y crear una base de datos llamada evolution.
🔹 Tener Node.js y npm instalados 👉 Descargar aquí.

📥 Pasos de instalación

1 Clonar el repositorio:

git clone --branch version_2.2.3 --single-branch https://github.com/erixcel/evolution-api.git
cd evolution-api

2 Instalar dependencias:

npm install

3 Generar la base de datos:

npm run db:generate

4 Aplicar migraciones:

npm run db:migrate:dev

⚠️ En Windows, ejecuta este comando desde Git Bash.

5 Construir el proyecto:

npm run build

6 Iniciar el servidor:

npm run dev:server

🐳 Instalación en Local con Docker

📌 Requisitos previos

🔹 Tener Git instalado 👉 Descargar aquí.
🔹 Tener Redis instalado 👉 Descargar aquí.
🔹 Tener PostgreSQL instalado 👉 Descargar aquí y crear una base de datos llamada evolution.
🔹 Tener Docker Desktop instalado y en ejecución 👉 Descargar aquí.

📥 Pasos de instalación

1 Clonar el repositorio:

git clone --branch version_2.2.3 --single-branch https://github.com/erixcel/evolution-api.git
cd evolution-api

2 Construir la imagen Docker:

docker build -t evolution-api .

3 Configurar .env:

DATABASE_CONNECTION_URI=postgresql://postgres:YOUR_PASSWORD@host.docker.internal:5432/evolution?schema=public
DATABASE_CONNECTION_URL=postgresql://postgres:YOUR_PASSWORD@host.docker.internal:5432/evolution?schema=public
CACHE_REDIS_URI=redis://host.docker.internal:6379/6

⚠️ En este caso en particular remplazamos localhost por host.docker.internal.

4 Ejecutar el contenedor Docker:

docker run --env-file .env -p 8080:8080 evolution-api

🌐 Instalación en Railway

📌 Pasos de Instalación

1 Preparar el Entorno

Antes de comenzar, crea una copia del archivo .env.example.railway que se encuentra en el repositorio.

2 Crear una Base de Datos PostgreSQL

Railway proporciona una base de datos PostgreSQL que puedes configurar en tus variables de entorno dentro del Docker. Sigue estos pasos:

  1. Accede a Railway y crea una nueva base de datos PostgreSQL.
  2. Copia la URL de conexión y agrégala en la copia del archivo .env que generaste:
DATABASE_CONNECTION_URI=postgresql://postgres:YOUR_PASSWORD@autorack.proxy.rlwy.net:YOUR_PORT/railway
DATABASE_CONNECTION_URL=postgresql://postgres:YOUR_PASSWORD@autorack.proxy.rlwy.net:YOUR_PORT/railway

💡 Nota: Únicamente reemplaza estas variables en el archivo .env.

3 Configurar una Base de Datos Redis

Si tu aplicación requiere almacenamiento en caché, puedes configurar Redis en Railway y agregarlo en el .env de Docker:

  1. Crea una base de datos Redis en Railway.
  2. Copia la URL de conexión y agrégala en la copia del archivo .env que generaste:
CACHE_REDIS_URI=redis://default:YOUR_PASSWORD@junction.proxy.rlwy.net:11556

💡 Nota: Únicamente reemplaza esta variable en el archivo .env.

4 Desplegar Servicio

Railway permite desplegar aplicaciones utilizando repositorios de Github o imágenes de Docker.

📌 Ejemplo de Despliegue con un Repositorio Público

Si deseas desplegar tu aplicación desde un repositorio público en GitHub, sigue estos pasos:

  1. Conéctate a Railway y selecciona "Deploy from GitHub".
  2. Escoge tu repositorio público.
https://github.com/erixcel/evolution-api/tree/version_2.2.3
  1. Railway detectará automáticamente el Dockerfile y comenzará el proceso de despliegue.
  2. Agrega las variables de entorno en Settings → Environment Variables.

📌 Ejemplo de Despliegue con una Imagen Pública

Si en lugar de un repositorio deseas utilizar una imagen pública de Docker Hub, haz lo siguiente:

  1. Crea un nuevo servicio en Railway.
  2. Selecciona la opción Deploy from an Image.
  3. Introduce el nombre de la imagen pública de Docker Hub.
docker.io/erixcel/evolution-api:version_2.2.3
  1. Agrega las variables de entorno en Settings → Environment Variables.

5 Obtener la URL Pública

  • Dirígete a la pestaña Deployments.
  • Copia la URL asignada por Railway.
  • Accede a tu aplicación desde cualquier navegador.

Con estos pasos, tu aplicación estará en funcionamiento en Railway de manera rápida y eficiente. 🚀


🤑 Instalación en Render (100% Gratis)

📌 Pasos de instalación

1 Preparar el Entorno

Antes de comenzar, crea una copia del archivo .env.example.render que se encuentra en el repositorio y renómbralo .env.

2 Crear una Base de Datos Redis

Render no ofrece Redis en su plan gratuito, pero puedes usar Upstash para obtener un servicio de Redis sin costo:

CACHE_REDIS_URI=rediss://default:YOUR_PASSWORD@just-stallion-44283.upstash.io:6379

💡 Nota: Únicamente reemplaza esta variable en el archivo .env.

3 Crear una Base de Datos PostgreSQL

Render no ofrece PostgreSQL en su plan gratuito, pero puedes usar Supabase:

  1. Crea un proyecto en Supabase.
  2. Copia la URL de conexión y agrégala en la copia del archivo .env que generaste:
DATABASE_CONNECTION_URI=postgresql://postgres.YOUR_USER:YOUR_PASSWORD@aws-0-us-west-1.pooler.supabase.com:6543/postgres?pgbouncer=true&connection_limit=1
DATABASE_CONNECTION_URL=postgresql://postgres.YOUR_USER:YOUR_PASSWORD@aws-0-us-west-1.pooler.supabase.com:5432/postgres?pgbouncer=true&connection_limit=1

💡 Nota: Únicamente reemplaza estas variables en el archivo .env.

⚠️ IMPORTANTE: DATABASE_CONNECTION_URI siempre apuntara al puerto 6543 y DATABASE_CONNECTION_URL al puerto 5432.

4 Desplegar Servicio

Render permite desplegar aplicaciones de forma gratuita utilizando repositorios de Github o imágenes de Docker.

📌 Desplegar desde un Repositorio Público

  1. Conéctate a Render y selecciona "New Web Service".
  2. Escoge la opción "Deploy from a Git Repository".
  3. Selecciona tu repositorio público en GitHub.
https://github.com/erixcel/evolution-api/tree/version_2.2.3
  1. Render detectará el Dockerfile y comenzará el despliegue.
  2. Agrega las variables de entorno en Settings → Environment Variables.

📌 Desplegar desde una Imagen Pública

Si prefieres usar una imagen de Docker Hub en lugar de un repositorio:

  1. Crea un nuevo servicio en Render.
  2. Selecciona "Deploy from Docker Image".
  3. Introduce la imagen pública de Docker Hub:
docker.io/erixcel/evolution-api:version_2.2.3
  1. Agrega las variables de entorno en Settings → Environment Variables.
  2. Render iniciará la construcción y despliegue de tu aplicación.

5 Obtener la URL Pública

  • Una vez que el despliegue esté completo, Render generará una URL pública.
  • Copia la URL y accede a tu aplicación desde cualquier navegador.

Con estos pasos, tu aplicación estará en funcionamiento en Render sin costos adicionales. 🚀

🏆 Créditos

© 2025 Evolution API - Creado para facilitar la integración de WhatsApp con soluciones en tiempo real 📩
© 2025 erixcel - Desarrollador a cargo de esta solucion 👨‍💻