Guía de despliegue

Alojar Chatwoot en un VPS: soporte al cliente omnicanal

Desplegar en un VPS Cloud →

Tutorial

Alojar Chatwoot en un VPS: soporte al cliente omnicanal

Autoalojamiento12 min de lectura10 pasos

Intercom y Zendesk facturan por agente, cierran el acceso a sus propios datos y disparan la factura en cuanto su equipo crece. Chatwoot (MIT, 34 k+ estrellas, v4.17.1) propone una alternativa radical: una plataforma de soporte al cliente omnicanal open source que usted aloja en su propio VPS. Livechat en su sitio, correos, WhatsApp Business, Telegram, Facebook Messenger y DM de Twitter/X — todas las conversaciones de sus clientes en una única bandeja de entrada compartida, sin tarifas por agente y sin que los datos salgan de su infraestructura.

Contenido· Por qué autoalojar su servicio de atención al cliente1/12
  1. 01Por qué autoalojar su servicio de atención al cliente
  2. 02Lo que obtiene con un Chatwoot autoalojado
  3. 03Requisitos previos
  4. 04Desplegar Chatwoot en un VPS en 6 pasos
  5. 05Gestión de múltiples bandejas de entrada
  6. 06Integraciones de Chatwoot: webhooks, Slack, API REST
  7. 07Actualizar Chatwoot
  8. 08Migrar de Chatwoot v3 a v4
  9. 09Procedimiento de migración v3 → v4
  10. 10Solución de problemas: errores comunes
  11. 11Chatwoot vs Crisp vs Intercom: qué herramienta para qué situación
  12. 12La documentación oficial

Por qué autoalojar su servicio de atención al cliente

Las soluciones SaaS de atención al cliente tienen un modelo de negocio sencillo: usted paga por agente y por canal, y los datos de sus clientes se almacenan en los servidores del proveedor. Para una agencia web o una pyme, esto supone rápidamente varios cientos de dólares al mes en cuanto el equipo supera las dos o tres personas. Chatwoot invierte esta ecuación: usted despliega la plataforma en su propio VPS, invita a tantos agentes como necesite y conecta todos sus canales sin coste adicional. Sus intercambios con los clientes permanecen en su infraestructura — un argumento de peso para el cumplimiento del RGPD, la confianza del cliente y la soberanía de los datos.

Lo que obtiene con un Chatwoot autoalojado

  • Bandeja de entrada compartida omnicanal: livechat, correo electrónico, WhatsApp, Telegram, Facebook Messenger y DMs de Twitter/X en un único panel de control.
  • Widget de livechat integrable: un componente personalizable que se añade a cualquier sitio web con dos líneas de JavaScript.
  • Respuestas predefinidas y reglas de automatización: asignación automática, respuesta de primer contacto y enrutamiento por idioma o palabra clave.
  • Colaboración en equipo: notas internas, asignación de conversaciones, menciones y colas de equipo visibles para todos los agentes.
  • CRM integrado: perfiles de contacto con historial de conversaciones, atributos personalizados y etiquetas.
  • API REST y webhooks: integración con n8n, Activepieces o su propio backend.
  • Licencia MIT — sin tarificación por agente, sin datos enviados a terceros, soberanía total.

Requisitos previos

Chatwoot funciona con una pila Ruby on Rails + Sidekiq + PostgreSQL 15 + Redis 7, es decir, cuatro contenedores Docker. Prevea un VPS con 2 GB de RAM como mínimo (4 GB recomendados para equipos de más de 10 agentes). Ubuntu 24.04 con Docker es el camino más rápido. En el lado de la red, prepare un subdominio — support.your-domain.com, por ejemplo — y un reverse proxy (Nginx o Caddy) para activar el HTTPS. Chatwoot exige un FRONTEND_URL en HTTPS para que las redirecciones OAuth, los enlaces de los correos electrónicos y el script del widget de livechat funcionen correctamente.

Antes de empezar, verifique que Docker Compose v2 esté instalado (docker compose version): Chatwoot v4 utiliza la sintaxis docker compose (con espacio) y no el antiguo comando docker-compose.

Desplegar Chatwoot en un VPS en 6 pasos

  1. Despliegue en un clic desde la marketplace ServOrbit

    Abra su panel de control ServOrbit, vaya a Marketplace → Colaboración y productividad → Chatwoot y haga clic en Desplegar. Docker descarga chatwoot/chatwoot:latest e inicia cuatro contenedores: PostgreSQL, Redis, el servidor web Rails y el worker Sidekiq. En el primer arranque, la migración de la base de datos se ejecuta automáticamente — espere entre 60 y 90 segundos antes de que la interfaz esté disponible.

    Para una instalación manual, clone el docker-compose.yml oficial, copie .env.example en .env, configure SECRET_KEY_BASE (genérelo con openssl rand -hex 64) y ejecute:

    docker compose up -d
    docker compose exec rails bundle exec rails db:chatwoot_prepare
  2. Crear la cuenta de administrador

    Diríjase a http://<su-ip-vps>:3000. Chatwoot muestra un asistente de primera configuración: introduzca su nombre, su dirección de correo electrónico y una contraseña robusta. Esta cuenta se convierte en la de superadministrador. Después podrá invitar a agentes adicionales y crear equipos desde el panel Ajustes.

    Si la página permanece en blanco pasados 90 segundos, revise los logs del contenedor web: docker compose logs web --tail=50. Un error SECRET_KEY_BASE not set o PG::ConnectionBad apunta a una configuración incorrecta en .env.

  3. Configurar FRONTEND_URL y activar HTTPS

    Apunte su dominio al VPS (registro A → IP del VPS). Instale Caddy (apt install -y caddy) y cree /etc/caddy/Caddyfile: support.your-domain.com { reverse_proxy localhost:3000 }. Recargue Caddy (systemctl reload caddy). A continuación, ponga FRONTEND_URL=https://support.your-domain.com en su archivo .env y reinicie el contenedor web: docker compose restart web. Chatwoot utiliza esta URL para las redirecciones OAuth, los enlaces de los correos electrónicos y el script del widget.

    Active también FORCE_SSL=true en .env para que Rails redirija automáticamente las conexiones HTTP a HTTPS y establezca cookies Secure.

  4. Añadir su primera bandeja de entrada

    En Chatwoot, vaya a Ajustes → Bandejas de entrada → Añadir una bandeja. Elija Sitio web para el livechat, Correo electrónico para los intercambios SMTP/IMAP, o un canal de mensajería como WhatsApp Cloud API o Telegram. Para el livechat, copie el snippet JavaScript generado y péguelo en el <head> de su sitio. Los visitantes ven inmediatamente la burbuja de chat.

  5. Invitar a los agentes y configurar la automatización

    Vaya a Ajustes → Agentes y envíe invitaciones por correo electrónico. En Ajustes → Automatización, cree reglas para asignar automáticamente las conversaciones (por ejemplo, WhatsApp → equipo comercial, correo electrónico → facturación) y enviar mensajes de primer contacto fuera del horario de atención. El worker Sidekiq se encarga de todas las tareas asíncronas: envío de correos electrónicos, disparo de webhooks y notificaciones push.

  6. Conectar WhatsApp Business (opcional)

    Cree una aplicación en Meta for Developers y active la API WhatsApp Business Cloud. En Chatwoot → Ajustes → Bandejas de entrada → Añadir → WhatsApp, introduzca su número de teléfono de WhatsApp Business, el ID de la cuenta de WhatsApp Business, el token de acceso y el token de verificación del Webhook. Los mensajes entrantes de WhatsApp aparecen ya en la bandeja de entrada compartida junto al livechat y los correos electrónicos.

Configure las respuestas predefinidas (Ajustes → Respuestas predefinidas) desde el primer día: acuse de recibo del contacto, confirmación de pedido, plazos de tramitación. Sus agentes ganan varios minutos por conversación — y la coherencia de tono queda garantizada sea quien sea quien responda. Combínelas con las reglas de automatización para enviar automáticamente la respuesta de primer contacto por la noche y los fines de semana.

Gestión de múltiples bandejas de entrada

Chatwoot permite centralizar múltiples canales en una sola interfaz. Cada canal crea una bandeja de entrada independiente, visible en la barra lateral y asignable a un equipo dedicado.

Correo electrónico (SMTP/IMAP): en Ajustes → Bandejas de entrada → Correo electrónico, introduzca su dirección entrante y las credenciales IMAP. Chatwoot consulta el buzón cada dos minutos y crea una conversación por hilo. Las respuestas se envían por SMTP conservando el mismo hilo.

DMs de Twitter/X: conecte una cuenta mediante la API Twitter v2 (clave de API + secreto + token de acceso). Los mensajes directos entrantes aparecen en tiempo real mediante webhook. Nota: el acceso a la API Twitter v2 requiere una suscripción de desarrollador Basic o superior.

Teléfono y WebRTC: Chatwoot v4.17 migró su integración de videollamadas de Dyte a Cloudflare RealtimeKit. Si utiliza las videollamadas, reconfigure la integración en Ajustes → Integraciones → Cloudflare Calls con su App ID y App Token.

Canal API: para integraciones personalizadas (chatbot, CRM propio), cree una bandeja de entrada de tipo API. Expone un endpoint REST para recibir mensajes y usted envía las respuestas mediante POST /api/v1/accounts/{id}/conversations/{conv_id}/messages. Es la puerta de entrada para conectar cualquier fuente externa.

Integraciones de Chatwoot: webhooks, Slack, API REST

Chatwoot ofrece varios niveles de integración para insertarse en su stack existente.

Webhooks: en Ajustes → Integraciones → Webhooks, añada la URL de su endpoint. Chatwoot lanza un evento JSON en cada conversación creada, mensaje recibido o cambio de estado. Útil para sincronizar tickets con un CRM, lanzar un flujo de trabajo n8n o registrar conversaciones en su base de datos.

Notificaciones Slack: conecte un workspace Slack mediante OAuth en Ajustes → Integraciones → Slack. Las nuevas conversaciones y menciones en Chatwoot generan una notificación en el canal Slack elegido. Sus agentes no pierden ningún mensaje ni fuera de la interfaz.

API REST: todos los recursos de Chatwoot (conversaciones, contactos, mensajes, equipos, etiquetas) se exponen mediante una API REST v1 documentada en /swagger. Autenticación por token (user_access_token o clave API de agente). Casos de uso comunes: importar contactos desde un CRM, generar informes de conversaciones resueltas, actualizar automáticamente atributos de contacto.

Zapier / Make (ex-Integromat): Chatwoot dispone de conectores nativos en Zapier y Make para lanzar acciones sin código. Ejemplo: nueva conversación en Chatwoot → crear una oportunidad en el CRM → notificar al equipo comercial por correo.

Actualizar Chatwoot

Las actualizaciones menores (patch releases como v4.17.0 → v4.17.1) son seguras y suelen contener correcciones de seguridad: planifíquelas en las 48 horas siguientes a su publicación.

Para una actualización de parche:

docker compose pull
docker compose down
docker compose up -d
docker compose exec rails bundle exec rails db:migrate

Revise los logs (docker compose logs web --tail=30) y pruebe el envío de un mensaje en cada canal.

Para una actualización mayor (v3 → v4), el proceso es más delicado: v4 introduce migraciones de esquema PostgreSQL bloqueantes (tablas mentions y conversation_participants reestructuradas). Nunca ejecute docker compose pull && docker compose up -d sin una copia de seguridad previa en una versión mayor.

Buena práctica: fije siempre una versión concreta en docker-compose.yml (chatwoot/chatwoot:v4.17.1 en lugar de latest) para controlar exactamente lo que se ejecuta en producción y evitar actualizaciones silenciosas.

Migrar de Chatwoot v3 a v4

Chatwoot v4, publicado en junio de 2026, introduce la nueva interfaz «Nova UI» y varias migraciones de esquema PostgreSQL bloqueantes. Una actualización en caliente desde v3 rompe sistemáticamente la instancia si se hace sin preparación — es el tema de la incidencia oficial #12088, que recoge los casos más habituales.

La razón principal de la rotura: v4 renombra la tabla mentions y reestructura la tabla conversation_participants. Un docker compose pull && docker compose up -d sin copia de seguridad previa lanza las migraciones automáticamente; si una migración falla a mitad de camino (timeout, restricción de FK no satisfecha), la base de datos queda en un estado intermedio y Chatwoot ya no arranca.

En la práctica, hay tres categorías de instancias en riesgo: las que funcionan en v3 con un volumen de conversaciones superior a 50 000 (las migraciones masivas son lentas y pueden superar el timeout de 30 s de Rails), las que tienen columnas personalizadas no documentadas en la tabla contacts, y las que utilizan Sidekiq Pro (eliminado de la Community Edition en v4 — los jobs en espera en el momento de la actualización se pierden).

Procedimiento de migración v3 → v4

  1. Hacer una copia de seguridad de la base y de los volúmenes

    Antes de cualquier manipulación, guarde el estado completo: docker compose exec postgres pg_dumpall -U postgres > /tmp/chatwoot-v3-dump-$(date +%F).sql. Copie también los volúmenes Docker vinculados a PostgreSQL y a Rails Storage. Esta copia de seguridad es su única red: en caso de migración fallida, la restauración es la única salida limpia.

  2. Fijar la etiqueta de la imagen en v4

    En su docker-compose.yml, sustituya chatwoot/chatwoot:latest por chatwoot/chatwoot:v4.17.1 (o la última patch release v4). Evite latest en producción: esta etiqueta sigue el HEAD y puede introducir regresiones sin previo aviso. Revise el changelog de cada versión en el repositorio GitHub antes de apuntar a una etiqueta.

  3. Ejecutar las migraciones manualmente

    En lugar de dejar que Rails lance las migraciones al arrancar el contenedor web, ejecútelas de forma explícita y en primer plano para vigilar su avance: docker compose run --rm web bundle exec rails db:migrate. En caso de error, el mensaje es visible de inmediato — identifica la migración culpable y le permite corregirla o saltarla con db:migrate:up VERSION=... antes de relanzar.

  4. Arrancar y verificar

    Una vez terminadas las migraciones sin errores, arranque la pila: docker compose up -d. Conéctese a la interfaz Nova UI y compruebe que las bandejas de entrada, los contactos y las conversaciones existentes están presentes. Pruebe el envío y la recepción de un mensaje en cada canal conectado. Si Sidekiq muestra jobs con error, consulte la interfaz Sidekiq Web (montada en /sidekiq si está activada) para volver a ejecutarlos.

Solución de problemas: errores comunes

Workers de Sidekiq bloqueados. Si los correos salientes dejan de enviarse o los webhooks dejan de dispararse, Sidekiq probablemente está paralizado o sus workers están agotados. Compruebe mediante la interfaz Sidekiq Web (/sidekiq) o los logs: docker compose logs sidekiq --tail=50. La causa más frecuente es una cola mailers saturada. Reinicie el worker: docker compose restart sidekiq. Si el problema persiste, verifique la conexión Redis (docker compose exec redis redis-cli ping debe responder PONG).

Redis connection refused. Si Rails y Sidekiq no arrancan con Redis::CannotConnectError, el contenedor Redis no está listo. Compruebe su estado: docker compose ps redis. Un contenedor en Restarting indica un problema de volumen o permiso. Elimine el volumen Redis y reinicie si los datos Redis son transitorios (los jobs en cola se perderán).

ActionCable WebSocket sin conectar. El widget de livechat muestra «conexión perdida» o los agentes no reciben mensajes en tiempo real. Causa probable: el reverse proxy no reenvía las cabeceras WebSocket. Con Nginx, añada al bloque location:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Con Caddy, la configuración reverse_proxy localhost:3000 gestiona los WebSockets automáticamente.

Migración atascada a mitad. Si rails db:migrate se detiene con error, no vuelva a intentarlo de inmediato. Identifique la migración fallida en el mensaje de error, corrígala manualmente o sáltesela (rails db:migrate:up VERSION=<timestamp>), luego reintente. Como último recurso, restaure la copia de seguridad tomada antes de la migración.

Chatwoot vs Crisp vs Intercom: qué herramienta para qué situación

Desplace la tabla

CriterioChatwoot (autoalojado)CrispIntercom
Modelo de preciosGratuito (solo coste del VPS)Gratis limitado, luego ~25 €/mesDesde ~74 $/agente/mes
AlojamientoEn su propio VPSSolo SaaSSolo SaaS
Datos de clientesEn su infraestructuraServidores CrispServidores Intercom
RGPD / soberaníaTotal — sin tercerosDPA disponibleDPA disponible
Canales admitidosLivechat, correo, WhatsApp, Telegram, FB, Twitter/X, APILivechat, correo, MessengerLivechat, correo, SMS, WhatsApp (plan superior)
Agentes ilimitadosNo (limitado por plan)No (facturación por agente)
AutomatizaciónReglas nativas + APIReglas nativasFlujos de trabajo avanzados
Complejidad de despliegueMedia (requiere Docker)NingunaNinguna

La documentación oficial

Para la configuración avanzada (SMTP, LDAP SSO, almacenamiento S3, multicuenta) y las opciones propias de Chatwoot, consulte la documentación oficial de Chatwoot self-hosted. Esta guía cubre la puesta en línea en un VPS; la documentación del editor sigue siendo la referencia para los ajustes finos y las actualizaciones mayores.

Despliegue Chatwoot en su propio servidor

Autoaloje Chatwoot en un VPS ServOrbit — open source, sin tarifas por agente, todas sus conversaciones con clientes en su infraestructura.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva