BookinglyTech News
Software

Chatwoot mueve su API a pago y un administrador cuenta cómo migrar al self-hosted

La nube de Chatwoot reserva API y webhooks a los planes de pago desde 19 dólares por agente y mes. El widget sigue gratis, así que las integraciones empezaron a devolver 403 sin avisar.

2 min de lecturar/selfhosted0 vistas

Chatwoot metió el acceso a la API y a los webhooks de su nube dentro de los planes de pago, desde 19 dólares por agente y mes. El widget de chat siguió funcionando igual en el plan gratuito, pero las integraciones que hablaban con la API empezaron a recibir 403 de un día para otro. Un administrador que pasó por ahí lo ha contado y ha publicado las notas de su migración al self-hosted, donde la API y los webhooks siguen disponibles.

La primera trampa está en la imagen. El compose oficial usa chatwoot/chatwoot:latest, que arrastra la carpeta enterprise/ bajo una licencia distinta de la MIT. Los tags -ce son solo MIT, y en ellos siguen funcionando la API, los webhooks, el correo y el chat en vivo. Quien copie el archivo sin mirar el tag se está llevando código con otra licencia encima.

pgvector y el health check que nunca pasa

Postgres necesita la extensión pgvector. Las migraciones de la rama 4.x la crean, y postgres:16 a secas no la trae, así que el contenedor muere en el arranque. La imagen pgvector/pgvector:pg16 sí sirve.

Otra que cuesta un rato: con FORCE_SSL=true detrás de un proxy, el health check recibe un 301 hacia https y el contenedor nunca llega a estado healthy. Y FRONTEND_URL no se deduce de la petición entrante. Si cambias de dominio y no lo tocas, el widget se sigue cargando desde el host antiguo.

El detalle incómodo es la exportación. No hay forma de sacar las conversaciones, ni en Cloud ni en self-hosted; la petición de funcionalidad se cerró por inactividad el pasado noviembre. Este administrador sacó sus 56 conversaciones scriptando las peticiones firmadas del propio panel. Una vez que el servicio es tuyo, pg_dump es la exportación, y ese es probablemente el mejor argumento para montarlo.

En reposo, el conjunto consume unos 810 MB: 373 del proceso de Rails, 381 de Sidekiq, 44 de Postgres y 12 de Redis. Dos gigas de RAM es un mínimo sensato. Hay otro síntoma que despista: en el plan gratuito la API devuelve 403 mientras /api/v1/profile sigue devolviendo 200, que es exactamente lo que parece un token roto.

El compose que acompaña a las notas está probado sobre la 4.18.0-ce con pgvector e incluye los comandos en orden y una tabla comparativa de costes entre Cloud y self-hosted: las notas de la migración. El autor avisa de que están en el blog de su empresa.

Lo que hay detrás no es un fallo puntual, es un cambio de modelo: funciones que antes venían con el plan gratuito pasan a ser la palanca para subir de plan. Quien tenga una integración contra la API de Chatwoot Cloud debería comprobar si sigue en el aire, y decidir si le sale más a cuenta pagar por agente o mantener el contenedor por su cuenta.