WhatsApp bot en VPS mediante Baileys: gratis en lugar de WhatsApp Business API

calendar_month 8 de mayo de 2026 schedule 9 min de lectura visibility 20 vistas
person
Valebyte Team
WhatsApp bot en VPS mediante Baileys: gratis en lugar de WhatsApp Business API
Para lanzar un bot de WhatsApp en un VPS a través de la librería Baileys, es suficiente con un servidor de 1 vCPU, 2 GB de RAM y SO Ubuntu, lo que permite eliminar por completo los pagos desde $0.005 por mensaje, característicos de la API oficial de WhatsApp Business (WABA) o proveedores como Twilio.

¿Por qué usar un whatsapp bot vps en lugar de la API oficial?

La solución oficial WhatsApp Business API (WABA) impone muchas restricciones a las empresas: desde la necesidad de verificación de la compañía hasta una moderación estricta de las plantillas de mensajes. El uso de soluciones wa bot self host basadas en la librería Baileys permite superar estas barreras, convirtiendo un número de teléfono común en una pasarela completa para la automatización. La principal ventaja aquí es la total libertad en la elección del contenido y la ausencia de cargos por diálogos.

Beneficios económicos de las soluciones self-hosted

Al utilizar APIs de pago como Twilio o MessageBird, el costo de un solo mensaje saliente puede rondar los $0.005. Para un envío a 10,000 contactos, el presupuesto sería de $50. Al mismo tiempo, el alquiler de un VPS para ejecutar baileys whatsapp costará entre $5 y $10 al mes sin límites en la cantidad de mensajes. La diferencia en los costos se vuelve colosal al escalar el proyecto.

Ventajas técnicas de Baileys

La librería Baileys está escrita en TypeScript y es una de las implementaciones más estables del protocolo WhatsApp Web. A diferencia de las soluciones basadas en Selenium o Puppeteer, no ejecuta una instancia completa del navegador Chrome, lo que reduce radicalmente el consumo de recursos del servidor. Esto permite ejecutar decenas de bots en un solo VPS económico. Si ya has configurado un bot de Telegram 24/7 en un VPS, los principios de trabajo con eventos asíncronos en Baileys te resultarán familiares.

Arquitectura de baileys whatsapp y requisitos del sistema

El funcionamiento de whatsapp web api a través de Baileys se basa en la emulación del modo multidispositivo (Multi-Device). El servidor se conecta a los servidores de WhatsApp utilizando una conexión WebSocket e intercambia datos cifrados. Un punto clave es el almacenamiento de la sesión: después de escanear el código QR, las claves de autenticación se guardan en una carpeta local o base de datos, lo que permite que el bot se reconecte automáticamente tras reiniciar el VPS.

Especificaciones mínimas y recomendadas del servidor

Para el funcionamiento estable de uno o dos bots, las tarifas más sencillas son suficientes; sin embargo, para sistemas de alta carga (envíos a miles de números), conviene prever un margen de memoria RAM.

Característica Mínimo (1-2 bots) Óptimo (10+ bots)
Procesador (vCPU) 1 Core (2.0 GHz+) 2-4 Cores
Memoria RAM 1 GB 4-8 GB
Disco (NVMe) 10 GB 40 GB+
Sistema operativo Ubuntu 22.04 LTS Ubuntu 22.04 / Debian 11

Por qué es importante usar discos NVMe

Durante una comunicación activa, Baileys escribe constantemente el estado de la sesión y almacena en caché archivos multimedia. El uso de discos NVMe rápidos en el VPS evita retrasos (lag) al procesar webhooks entrantes, especialmente cuando el bot maneja cientos de diálogos simultáneos. Esto es crítico para garantizar una respuesta instantánea, comparable al funcionamiento de wa-mate u otras pasarelas comerciales.

¿Buscas un servidor confiable para tus proyectos?

VPS desde $10/mes y servidores dedicados desde $9/mes con NVMe, protección DDoS y soporte 24/7.

Ver ofertas →

Instalación paso a paso de wa bot self host en VPS

Para comenzar a trabajar, es necesario preparar el entorno de ejecución de Node.js. Recomendamos utilizar la versión LTS (actualmente 18 o 20), ya que Baileys utiliza activamente las capacidades modernas de JavaScript y el tipado de TypeScript.

Preparación del entorno en Ubuntu

Conéctate a tu VPS por SSH y realiza la actualización de paquetes:

sudo apt update && sudo apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential

Después de instalar Node.js, crea un directorio para el proyecto e inicialízalo:

mkdir wa-bot && cd wa-bot
npm init -y
npm install @whiskeysockets/baileys pino qrcode-terminal

Configuración de autorización y login por QR en /tmp

Una de las particularidades de trabajar en contenedores Linux o en servidores con derechos de acceso limitados es la elección del lugar para almacenar la sesión. A menudo, los desarrolladores usan el directorio /tmp para claves temporales, pero para un bot permanente es mejor crear una carpeta dedicada auth_info en la raíz del proyecto. Esto garantizará la preservación de la sesión al reiniciar la aplicación.

Ejemplo de código básico para iniciar y generar el código QR en la terminal:

const { default: makeWASocket, useMultiFileAuthState } = require('@whiskeysockets/baileys')
const qrcode = require('qrcode-terminal')

async function startBot() {
    const { state, saveCreds } = await useMultiFileAuthState('auth_info')
    const sock = makeWASocket({
        auth: state,
        printQRInTerminal: true
    })

    sock.ev.on('creds.update', saveCreds)
    sock.ev.on('connection.update', (update) => {
        const { connection, lastDisconnect } = update
        if(connection === 'close') {
            console.log('Conexión cerrada, reiniciando...')
            startBot()
        } else if(connection === 'open') {
            console.log('¡Bot conectado con éxito!')
        }
    })
}

startBot()

Si planeas integrar el bot con un CRM, presta atención a Self-hosted Chatwoot. Esto permitirá unificar los mensajes de WhatsApp y otros canales en una sola interfaz en tu propio servidor.

Implementación de whatsapp web api: webhooks y procesamiento de mensajes

Para que tu whatsapp бот vps sea útil, debe poder reaccionar a los mensajes entrantes y reenviarlos a sistemas externos (por ejemplo, a tu base de datos o CRM a través de webhooks). Baileys proporciona un sistema de eventos conveniente para monitorear nuevos mensajes.

Procesamiento de texto entrante

Para filtrar el spam y procesar comandos, utiliza el escuchador del evento messages.upsert. Es importante considerar que WhatsApp envía los mensajes en paquetes, por lo que el código debe poder iterar sobre el array de datos entrantes.

sock.ev.on('messages.upsert', async m => {
    const msg = m.messages[0]
    if (!msg.key.fromMe && m.type === 'notify') {
        const text = msg.message.conversation || msg.message.extendedTextMessage?.text
        const remoteJid = msg.key.remoteJid

        console.log(`Mensaje recibido de ${remoteJid}: ${text}`)
        
        if (text === 'Hola') {
            await sock.sendMessage(remoteJid, { text: '¡Hola! ¿En qué puedo ayudarte?' })
        }
    }
})

Integración con n8n para automatización

Para crear cadenas complejas sin escribir cientos de líneas de código en Node.js, puedes usar Self-hosted n8n. Puedes configurar el bot para que envíe cada mensaje entrante mediante una solicitud POST a n8n, donde ocurrirá la lógica de procesamiento (por ejemplo, una consulta a ChatGPT o una búsqueda en Google Sheets), y devuelva la respuesta a WhatsApp.

Riesgos de bloqueo y cómo evitar las restricciones de wa-mate

El principal riesgo al usar una whatsapp web api no oficial es el baneo del número. WhatsApp lucha activamente contra la automatización utilizando algoritmos de aprendizaje automático para detectar bots. Si tu número es bloqueado, recuperarlo para trabajar con la API será extremadamente difícil.

Cómo evitar el baneo en los envíos masivos

  • Calentamiento del número: No comiences envíos masivos con un número nuevo. Durante los primeros 7-14 días, úsalo para conversaciones normales con contactos "de confianza" que te tengan en su agenda.
  • Uso de proxies: Si ejecutas varios bots en un mismo VPS, WhatsApp podría bloquearlos todos por IP. Se recomienda usar un proxy residencial o móvil individual para cada bot. Esto es especialmente relevante si realizas tareas como el web scraping de Wildberries/OZON/Avito en un VPS, donde las tecnologías anti-baneo juegan un papel clave.
  • Aleatorización de retrasos: Nunca respondas instantáneamente. Añade un retraso aleatorio de 2 a 5 segundos antes de enviar un mensaje para imitar las acciones de una persona real.
  • Límites: No envíes más de 50-100 mensajes por hora a usuarios desconocidos. Si los usuarios comienzan a presionar el botón de "Reportar", el baneo llegará instantáneamente.

Comparación con wa-mate y otras pasarelas

Servicios como wa-mate son esencialmente capas sobre Baileys o librerías similares, proporcionando una API HTTP conveniente mediante una suscripción mensual. Al desplegar la solución por tu cuenta en un VPS, obtienes la misma funcionalidad, pero mantienes el control total sobre los datos y ahorras entre $30 y $100 al mes en suscripciones.

Comparación de costos: Baileys en VPS vs Twilio API

Para una empresa, la elección entre una solución self-hosted y la API oficial a menudo se reduce a las matemáticas y la evaluación de riesgos. A continuación se muestra una tabla de costos estimados para un volumen de 50,000 mensajes al mes.

Concepto de gasto Twilio (WABA) Baileys (VPS)
Alquiler de servidor / Suscripción $0 (pero hay consumos mínimos) $10 (Valebyte VPS)
Costo de 50k mensajes ~$250 (depende del país) $0
Verificación de empresa (FB Business) Obligatoria No requerida
Riesgo de bloqueo Bajo (cumpliendo las reglas) Medio/Alto (depende del spam)
Total mensual $250+ $10

Como se ve en la tabla, wa bot self host es hasta 25 veces más económico. Sin embargo, hay que tener en cuenta los costos de soporte técnico y monitoreo del script. Para asegurar un tiempo de actividad (uptime) del 99.9%, se recomienda usar el gestor de procesos PM2.

Despliegue y monitoreo 24/7

Para que tu bot no se "caiga" después de cerrar la sesión SSH, es necesario usar PM2. Este es el estándar de la industria para aplicaciones Node.js, permitiendo reiniciar automáticamente el script en caso de errores o reinicio del servidor.

Configuración de PM2

sudo npm install -g pm2
pm2 start index.js --name "whatsapp-bot"
pm2 save
pm2 startup

Ahora el bot funcionará en segundo plano. Para ver los logs en tiempo real, usa el comando pm2 logs whatsapp-bot. Esto permitirá monitorear rápidamente errores de autorización o problemas con la conexión WebSocket.

Monitoreo de recursos

Aunque Baileys consume pocos recursos, con una gran cantidad de diálogos puede ocurrir una fuga de memoria (memory leak). Se recomienda configurar un límite de memoria RAM en PM2 para que el proceso se reinicie al alcanzar, por ejemplo, 500 MB de RAM:

pm2 start index.js --max-memory-restart 500M

Para un seguimiento de errores más avanzado, puedes integrar Self-hosted Sentry, lo que te permitirá recibir notificaciones sobre fallos en el código del bot antes de que los clientes comiencen a quejarse por la falta de respuestas.

Conclusiones

El uso de Baileys en un VPS es la forma más efectiva de lanzar un bot de WhatsApp para pequeñas y medianas empresas sin los enormes costos de la API oficial. Para un funcionamiento estable, basta con un servidor de 2 GB de RAM y el cumplimiento de las reglas de "calentamiento" del número, lo que garantizará una comunicación ininterrumpida con los clientes con una inversión mínima en infraestructura.

¿Listo para elegir un servidor?

VPS y servidores dedicados en más de 72 países con activación instantánea y acceso root completo.

Empezar ahora →

Share this post:

support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.