PearlPBX2
← Todas las publicaciones

PearlPBX2 2.7.1: lanzamiento público, licencia y un stack Docker Compose completo

La versión 2.7.1 es el primer lanzamiento público de PearlPBX2: llega la licencia, documentación de inicio rápido y un stack Docker Compose completo que levanta todo el backend con un solo docker compose up.

Licencia y archivos públicos

El proyecto se publica bajo la PolyForm Shield License 1.0.0 — el código fuente está disponible, y su uso está permitido para cualquier propósito, incluyendo tu propio despliegue comercial, excepto vender un producto o servicio que compita con PearlPBX2. Junto con la licencia se añadieron LICENSE, NOTICE, CONTRIBUTING.md y QUICKSTART.md, con las rutas de instalación por Ansible y Docker Compose, además de cabeceras SPDX en los módulos clave.

Un stack Docker Compose completo

docker-compose.yml ahora levanta más que Django y Asterisk: todo el backend — fastagi, dashboard-listener y un callback-service opcional (vía --profile callback), cada uno con su propio Dockerfile. Un nuevo servicio asterisk-init prepara un manager.conf mínimo con AMI habilitado y parchea modules.conf para cargar res_crypto.so antes del primer arranque de Asterisk — la imagen oficial andrius/asterisk:22 viene con AMI deshabilitado, y sin res_crypto ni siquiera el healthcheck propio de la imagen pasa. docker-entrypoint.sh ejecuta migrate y collectstatic de forma idempotente en cada arranque del contenedor django, y docker-compose.override.yml añade un bind mount del código fuente y uvicorn --reload para desarrollo local.

Correcciones menores, pero que se notan

  • Los archivos estáticos por fin se sirven bajo Docker: se añadió whitenoise, ya que DEBUG=False incluso en modo desarrollo, y no hay nginx delante del contenedor django.
  • REDIS_URL en docker-compose.yml se construía mal a partir de las variables REDIS_HOST/REDIS_PORT, que no se usaban — esto rompía /dashboard/ulines/ y potencialmente el dashboard por WebSocket; ahora la variable se define directamente.
  • Las llamadas salientes ahora también se comparan con los webhooks por la tabla de enrutamiento, no solo por el contexto del dialplan — antes, los webhooks que solo escuchaban contextos entrantes nunca se disparaban para llamadas salientes.
  • FASTAGI_HOST/FASTAGI_PORT permiten ejecutar el servidor FastAGI en algo distinto de 127.0.0.1:4573 — necesario cuando Asterisk corre en un contenedor separado.