FreePBX 17: central VoIP en Debian 12

Mascote LinuxPro conecta cabos em um rack de telefonia IP com o logo FreePBX, acompanhado do cão caramelo cyborg.

Montar una centralita telefónica IP en Linux no necesita empezar por la edición manual del dialplan. El FreePBX 17 ofrece una interfaz web para administrar Asterisk: extensiones, troncales, rutas, colas y atención automática quedan organizados en módulos. El cambio importante de esta generación está en la base: Debian 12, instalación por script o ISO y atención a la migración de chan_sip a PJSIP.

En esta guía, vamos a separar las versiones implicadas, elegir el método de instalación y montar un laboratorio con dos extensiones. Después, veremos qué cambia al migrar una centralita existente y los cuidados antes de conectar con una operadora. Las referencias son la documentación oficial de Sangoma, el instalador mantenido por el proyecto y los dos vídeos indicados al final.

Referencia: octubre de 2026. FreePBX, Asterisk, Debian y la imagen ISO tienen versiones y ciclos propios. No confunda el número de la ISO con la versión de todos los módulos, ni use una demostración antigua como indicación automática del estado actual del proyecto.

FreePBX no sustituye a Asterisk

Piense en dos capas: el Asterisk ejecuta la telefonía; el FreePBX proporciona el panel que organiza su configuración. El primero procesa llamadas y aplicaciones del dialplan. El segundo permite administrar la central sin escribir cada configuración a mano. Es esta relación la que el repositorio oficial del instalador describe.

También hay una diferencia entre software abierto y servicio telefónico: instalar FreePBX no entrega un número público ni llamadas externas gratuitas. Dos extensiones locales pueden conversar sin una operadora; para alcanzar la red telefónica pública, será necesario un servicio apropiado, como un tronco SIP contratado.

El ecosistema combina componentes abiertos con módulos comerciales opcionales. Por tanto, confirme la licencia del recurso deseado antes de asumir que una función mostrada en una demostración está incluida en la instalación básica.

Qué cambia en FreePBX 17

  • Base oficialmente soportada: Debian 12 Bookworm. No use Debian 13 ni Ubuntu como sustitutos automáticos para este procedimiento.
  • PHP 8.2: es la versión utilizada en esta generación; no cambie la pila de PHP por su cuenta en una centralita en producción.
  • Instalador Bash abierto: se puede ejecutar sobre un Debian 12 nuevo, físico o virtual.
  • ISO disponible: automatiza la instalación de Debian y la ejecución de ese mismo instalador, en lugar de constituir una ruta completamente independiente.
  • Asterisk 22 por defecto actualmente: los ejemplos del lanzamiento pueden mostrar Asterisk 21, pero no representan necesariamente una instalación nueva.

Estos puntos figuran en la página oficial de FreePBX 17. La versión final, o GA, se publicó el 2 de agosto de 2024. El código actual del instalador confirma Asterisk 22 y PHP 8.2 como predeterminados y rechaza sistemas que no sean Bookworm.

Arquitectura: panel, extensiones y operadora

En el laboratorio, dos clientes SIP registran sus extensiones en el Asterisk. El administrador configura la centralita mediante FreePBX. El troncal con una operadora es un paso posterior: no es necesario para la primera llamada interna.

Arquitetura do FreePBX 17 no Debian 12: administração web, Asterisk 22, dois ramais PJSIP e tronco SIP opcional.
Panel de administración y flujo de llamadas. El ejemplo mantiene el contenido multimedia en el PBX; el troncal SIP es opcional.

La señalización no es audio. El SIP negocia la llamada; el RTP transporta el contenido multimedia. Así, una extensión puede registrarse y hacer que la otra suene, pero seguir sin audio si la red es incorrecta. El diagrama representa el contenido multimedia pasando por la centralita; las configuraciones de contenido multimedia directo pueden alterar esa ruta.

¿Vas a virtualizar? Consulta también la historia de Proxmox e la historia de VirtualBox. Para entender la distribución que sustenta la centralita, vale la pena leer la historia de Ian Murdock y de Debian.

Prepare un laboratorio independiente

A página oficial de descargas informa el mínimo de 2 GB de RAM y 20 GB de disco para el host o VM Debian 12. Esto no es un dimensionamiento de producción: llamadas simultáneas, transcodificación y grabaciones cambian la necesidad de recursos.

Como punto de partida para este laboratorio pequeño, sugiero 2 vCPUs, 4 GB de RAM y 40 GB de disco. Es una elección de laboratorio, no una garantía de capacidad ni un requisito oficial. Utilice una VM exclusiva, dirección IP estable o reserva DHCP, DNS funcionando y acceso a internet para descargar los paquetes.

Deje la VM y los dos clientes en una red de laboratorio que permita la comunicación entre ellos. En redes aisladas por NAT del hipervisor, verifique la conectividad antes de investigar el SIP. No coloque la central directamente en internet para simplificar la prueba.

Opción 1: instalar con el script oficial

Utilice esta ruta en un Debian 12 recién instalado y dedicado. El instalador configura dependencias y repositorios: no lo ejecute en el servidor que ya aloja su sitio web, base de datos u otra PBX. Abra una sesión administrativa en la VM; los comandos de abajo son para ella, no para su estación de trabajo. Si usa SSH, prepare una sesión persistente con tmux antes de iniciar la instalación.

# Na VM Debian 12, abra uma sessão root
sudo -i

# Confira o sistema e a conectividade local
cat /etc/os-release
ip -br address
ip route

# Instale o utilitário de download, se necessário
apt-get update
apt-get install -y wget ca-certificates less tmux

# Abra a sessão persistente antes da instalação
tmux new -s freepbx

Dentro de la sesión de tmux, ejecute el siguiente bloque. Si la conexión SSH se cae, vuelva a entrar en la VM, abra la sesión root y continúe con tmux attach -t freepbx.

# Baixe o instalador oficial, sem executá-lo diretamente do download
wget -O /tmp/sng_freepbx_debian_install.sh \
  https://github.com/FreePBX/sng_freepbx_debian_install/raw/master/sng_freepbx_debian_install.sh

# Leia o script; pressione q para sair
less /tmp/sng_freepbx_debian_install.sh

# Depois da revisão, execute a instalação
bash /tmp/sng_freepbx_debian_install.sh

Si su instalación mínima no tiene sudo o less, utilice el acceso administrativo configurado durante la instalación de Debian e instale las utilidades necesarias. El README oficial documenta la descarga y la ejecución como root. No agregue --testing para una instalación normal.

Si el instalador indica que existe una versión más reciente, descargue el archivo de nuevo en lugar de saltarse la comprobación con --skipversion. En otra terminal administrativa, supervise el archivo más reciente creado en /var/log/pbx/:

ls -lt /var/log/pbx/freepbx17-install*.log
# Use o nome exato listado acima:
# tail -f /var/log/pbx/freepbx17-install-DATA-HORA.log

A documentación de instalación explica las opciones. --opensourceonly selecciona solo módulos abiertos de FreePBX; --dahdi es relevante para hardware de telefonía compatible. No añada DAHDI en un laboratorio puramente SIP sin necesidad: los drivers tienen dependencias específicas de kernel.

Opción 2: instalar mediante la ISO

¿Prefiere iniciar una VM desde un medio listo? Obtenga el enlace actual y el SHA-256 en página de descargas, compruebe la integridad de la imagen y siga el guía oficial de la ISO v17. La instalación sigue dependiendo de la red para descargar componentes.

Configure el firmware de la VM como UEFI. El menú de la ISO ofrece perfiles de instalación, llamados spice levels. Para un laboratorio solo SIP, sin placas físicas de telefonía, la guía sugiere Basic → FOG.

# No diretório onde você salvou a ISO:
sha256sum SNGDEB-PBX17-*.iso
# Compare o resultado com o SHA-256 da mesma imagem no site oficial.

O directorio de ISOs también contiene imágenes históricas. Que esté disponible para descarga no significa que siga teniendo soporte. Para comenzar, siga el archivo indicado en la página actual, no una ISO antigua elegida por el nombre.

Atención a los discos: la documentación advierte que varios discos se incorporarán a RAID y que las unidades USB de 100 GB o más se tratarán como miembros y se borrarán. Utilice un soporte USB menor que 100 GB; la guía también indica posibles problemas con NVMe. Para el laboratorio, mantenga solo un disco virtual vacío. En hardware físico, desconecte los discos que no se vayan a utilizar y lea las opciones antes de confirmar.

La ISO v17 deshabilita el inicio de sesión de root por defecto. Según el perfil, la instalación puede mostrar una contraseña generada para el usuario sangoma: si aparece esa pantalla, guarde la contraseña. Siga la guía para definir o cambiar las credenciales y úsela sudo en las tareas administrativas. No es necesario recurrir a la recuperación de contraseña mediante GRUB solo porque el inicio de sesión de root no esté disponible.

Primer acceso y dos extensiones PJSIP

Una vez finalizada la instalación, abra en el navegador la dirección IP de la VM en la red de laboratorio. Cree las credenciales administrativas y configure el acceso seguro. En producción, use HTTPS con un certificado válido y restrinja la administración a la red de gestión o VPN.

  1. En Applications → Extensions, elija añadir una extensión PJSIP.
  2. Cree la extensión 1001, con un nombre de identificación. Mantenga el Secret generado o use otro igualmente fuerte y exclusivo. No use el propio número como contraseña.
  3. Repita el procedimiento para la extensión 1002, con otra contraseña.
  4. Guarde y aplique los cambios con Apply Config.
  5. Configure un cliente SIP para cada extensión: servidor/dominio = IP de la VM; contraseña = Secret correspondiente. Utilice el número de extensión como usuario en la configuración predeterminada; si hay autenticación personalizada, verifique el usuario definido en la central. Verifique también el puerto y el transporte.
  6. Con ambos registrados, llame de 1001 a 1002 y después en sentido inverso. Compruebe el audio en ambos lados.

Los campos de extensión, identificación y contraseña se describen en la guía de extensiones PJSIP. Algunas capturas de la wiki pertenecen a versiones anteriores; siga el tipo PJSIP, no tutoriales antiguos que eligen chan_sip.

Para una primera comprobación desde el terminal de la central:

sudo asterisk -rx 'core show version'
sudo asterisk -rx 'pjsip show endpoints'
sudo asterisk -rx 'pjsip show contacts'

Si ya está como root y no tiene sudo, omita ese prefijo. Estos comandos ayudan a comprobar el Asterisk instalado, los endpoints y sus contactos. La prueba funcional sigue siendo la llamada completada con audio bidireccional, no solo la presencia de la extensión en la lista.

Softphones para Debian y Ubuntu

El MicroSIP mostrado en el vídeo es una opción para Windows. Para participar en el mismo laboratorio desde un escritorio Linux, puede usar uno de los clientes SIP siguientes. El cliente se queda en la estación del usuario, no en el servidor FreePBX.

Cliente Perfil Cómo obtener
Linphone Softphone abierto para audio y vídeo sobre SIP. Descarga oficial, con AppImage para Linux, o paquete linphone-desktop de la distribución cuando esté disponible.
Twinkle Alternativa centrada en la telefonía de voz SIP, con transferencia y conferencia. Paquete twinkle; consulte el catálogo de Debian 12 o verifique la disponibilidad en su estación Ubuntu 24.04 con apt-cache policy twinkle.
Blink Cliente SIP con funciones adicionales de comunicación. O sitio web oficial dirige Debian y Ubuntu al repositorio de AG Projects. Compruebe la compatibilidad con su versión antes de añadirlo.
GOnnect Cliente VoIP integrado en el escritorio, con aprovisionamiento mediante archivos e integración con contactos y auriculares compatibles. Proyecto GONICUS distribuido para Linux a través de Flathub.

Para empezar, yo elegiría el Linphone disponible en el repositorio de la propia estación. El paquete está documentado en Debian 12 y está disponible en Ubuntu 24.04; en Ubuntu, pertenece al componente Universe. Esto no significa que esté disponible en todas las versiones de Debian o Ubuntu. Comprueba el candidato antes de instalar:

# Na estação gráfica Debian/Ubuntu, não no servidor PBX
sudo apt-get update
apt-cache policy linphone-desktop twinkle

# Escolha um cliente com candidato disponível:
sudo apt-get install linphone-desktop
# Alternativa, em vez do Linphone:
# sudo apt-get install twinkle

No instales un .deb de Ubuntu en Debian, ni de otra versión de la distribución por comodidad: las bibliotecas necesarias pueden ser diferentes. El paquete de la distribución también puede tener una versión anterior a la proporcionada directamente por el proyecto.

GOnnect merece una observación: el proyecto fue pensado para provisionamiento por archivo, en lugar de un asistente para registrar la cuenta SIP. Con Flatpak y el repositorio Flathub ya configurados en la estación, la instalación se puede hacer así:

flatpak install flathub de.gonicus.gonnect

Después, adapta el archivo de ejemplo oficial a las credenciales y al transporte de tu extensión y guárdalo en ~/.var/app/de.gonicus.gonnect/config/gonnect/99-user.conf, según el README. Consulta las orientaciones de GOnnect antes de iniciar y proteja el archivo porque contiene credenciales. No basta con instalar la aplicación y buscar una pantalla para registrar la cuenta SIP. Las integraciones de escritorio y hardware dependen del entorno y de los dispositivos compatibles.

# Crie o diretório antes de salvar a configuração adaptada
mkdir -p ~/.var/app/de.gonicus.gonnect/config/gonnect
# Depois de salvar 99-user.conf com suas credenciais:
chmod 600 ~/.var/app/de.gonicus.gonnect/config/gonnect/99-user.conf
flatpak run de.gonicus.gonnect

Actualización (11/10/2026) — AppImage experimental: hemos contribuido con el PR #764 para construir GOnnect en AppImage para Ubuntu 24.04 x86_64. La propuesta sigue abierta: no es una versión oficial ni ofrece un binario para descargar en el PR. El Flatpak sigue siendo la distribución oficial indicada arriba.

En la prueba local con la compilación inicial del AppImage en Ubuntu 24.04 con KDE/X11 y auriculares EKSA, confirmamos una llamada con audio en ambos sentidos tras seleccionar los dispositivos correctos en GOnnect y usar QT_AUDIO_BACKEND=pulseaudio. El ajuste elige la interfaz PulseAudio solo para la aplicación, sin cambiar el audio predeterminado del sistema. Después, el mismo patrón se incorporó al AppImage reconstruido, que pasó las pruebas de inicio y cierre, pero aún no se ha validado una nueva llamada manual.

Es un resultado específico de ese entorno, no garantía para otros escritorios o auriculares ni un diagnóstico definitivo de fallo en Qt/PipeWire. Consulte el PR para conocer los requisitos, las limitaciones y las instrucciones de compilación; las credenciales SIP y la configuración personal no forman parte de la contribución.

Si necesita el binario distribuido por el propio Linphone, la referencia oficial de release de Linux consultada para este artículo apunta a Linphone 6.2.3 en AppImage x86_64. Es una alternativa al paquete nativo, no una garantía de compatibilidad con cualquier sistema: verifique la arquitectura y los requisitos de la versión. El GitHub indicado contiene el código fuente; los binarios oficiales se encuentran en el dominio de descargas del proyecto.

Para acceder a sus extensiones, configure la cuenta SIP de su FreePBX en el cliente: dirección de la central, número de extensión, usuario de autenticación y Secret definidos anteriormente. No es necesario crear una cuenta en el servicio público del fabricante para realizar la llamada interna entre 1001 y 1002.

¿Red con IPv6 problemático? Para probar el acceso HTTP por IPv4, use curl -4 -I https://github.com/belledonnecommunications/linphone-desktop. En APT, la opción Acquire::ForceIPv4 fuerza las descargas por IPv4, sin desactivar IPv6 en el sistema:

sudo apt-get -o Acquire::ForceIPv4=true update
sudo apt-get -o Acquire::ForceIPv4=true install linphone-desktop

Forzar IPv4 no corrige, por sí solo, un fallo del resolvedor DNS. Diferencie un error de resolución de nombre, un fallo de conexión y un error de autenticación SIP antes de cambiar la red o el firewall.

Firewall y NAT: no los resuelva desactivando la protección

El vídeo de laboratorio de SR TECH LAB incluye accesos directos a un entorno de aprendizaje. No adopte la desactivación del firewall como configuración final. En Connectivity → Firewall, registre los hosts y redes necesarios, verifique las zonas y preserve una ruta administrativa antes de aplicar cambios. La guía oficial advierte que dejar una interfaz entera en la zona Trusted es una configuración incorrecta.

La guía informa que las interfaces nuevas entran en Trusted por defecto. Antes de cambiar la zona de la interfaz, registre la red del laboratorio en Networks, en la zona Local o Internal correspondiente, y el host/red de administración con los permisos necesarios. La zona External no permite SIP por defecto; mover la interfaz sin preparar esas reglas puede interrumpir los registros.

Para problemas de audio, revise Settings → Asterisk SIP Settings: redes locales, dirección externa cuando aplique, códecs y rango RTP. La documentación del módulo indica 10000–20000/UDP como rango RTP por defecto; confirme el valor real en su central. El puerto SIP depende del transporte y de la configuración adoptados.

  • No registra: compruebe dirección, usuario, contraseña, transporte y reglas de firewall.
  • Toca, pero no hay audio: investiga RTP, NAT, códecs y direcciones anunciadas.
  • Solo escucha un lado: verifica el camino de medios en ambos sentidos, incluido el firewall del cliente.

No crees reenvíos públicos para una prueba entre máquinas locales. Para extensiones remotas, evalúa una VPN. El firewall de FreePBX trata las troncales configuradas automáticamente, según la guía; esto no exime de revisar el firewall de borde, NAT y reglas de la nube, liberando solo los flujos y orígenes necesarios. Si usas TLS y SRTP, confirma soporte y configuración en todos los participantes: habilitar HTTPS en el panel no cifra automáticamente las llamadas.

De la llamada interna al troncal SIP

Después de la prueba local, una centralita conectada a la telefonía pública necesita tres elementos: troncal, ruta de salida e ruta de entrada. El troncal describe la conexión con el operador; la ruta de salida define qué números utilizarán esa conexión; la ruta de entrada dirige las llamadas recibidas hacia una extensión, grupo, cola o IVR.

Utiliza los parámetros proporcionados por el operador: autenticación o identificación por IP, servidor, transporte, códecs, formato de numeración e identificación de llamadas. No copies direcciones ni credenciales de un ejemplo de otro proveedor. Restringe los destinos permitidos y prueba llamadas reales antes de permitir el uso a los usuarios. La guía de configuración del PBX es un punto de partida para navegar por los módulos.

Migrar desde el antiguo FreePBX requiere una instalación nueva

El camino documentado para salir de versiones anteriores es Backup & Restore en un FreePBX 17 nuevo. No existe actualización directa in-place de esas versiones al 17. Esta indicación se encuentra en la guía oficial de migración.

  1. Inventaría extensiones, troncales, rutas, grabaciones, certificados, módulos comerciales y personalizaciones.
  2. Genera la copia de seguridad mediante el módulo correspondiente y guarda una copia fuera de la central.
  3. Instala FreePBX 17 en otra VM. Antes de restaurar, aísla el laboratorio para evitar registros concurrentes en el operador y llamadas no deseadas.
  4. Restaura la copia de seguridad y revisa la conversión de extensiones y troncales chan_sip a PJSIP.
  5. Revise dialplans y scripts propios, incluido AGI, que usan Macro(); con Asterisk 22, requieren adaptación para Gosub().
  6. Valide los flujos de atención y planifique el cambio con una ventana y procedimiento de retorno.

PJSIP no es un nuevo protocolo que el operador tenga que inventar. Es la pila/driver SIP usado por Asterisk. La documentación de Asterisk confirma la eliminación de chan_sip a partir de Asterisk 21. Los teléfonos siguen hablando SIP, pero los parámetros y comportamientos deben verificarse en la migración. Backup completado no equivale a restore aprobado — la misma distinción tratada en el artículo sobre copia de seguridad con restauración probada.

La documentación describe el cambio de versión con asterisk-version-switch para transiciones heredadas, pero no recomienda permanecer en chan_sip. No elija una versión antigua sin verificar su soporte. Para esta guía, el destino es Asterisk 22 estándar, con PJSIP y las personalizaciones adaptadas.

Soporte: FreePBX, sistema operativo y Asterisk

A matriz oficial de versiones lista FreePBX 17 como soportado y apunta 30 de junio de 2028 como EOL previsto. Es la situación consultada para este artículo, no una promesa inmutable.

No concluyas que un FreePBX antiguo es seguro porque sus módulos aún reciban cierto mantenimiento: la matriz distingue el soporte de la aplicación del sistema SNG7, ya finalizado. También presenta versiones futuras como planificadas. La planificación no es un lanzamiento disponible. Antes de desplegar o migrar, vuelve a consultar la matriz y los ciclos de las dependencias.

No actualices la base de una central FreePBX 17 de Debian 12 a Debian 13: esa combinación no está oficialmente soportada. Las actualizaciones de paquetes dentro de Bookworm y la migración a otra versión de la distribución son operaciones diferentes.

Vídeos: instalación práctica y migración

Complemento en vídeo — SR TECH LAB: FreePBX 17 Instalación completa en VMware | Extensiones PJSIP y primera llamada VoIP, publicado el 12 de agosto de 2026. Muestra una máquina virtual, dos extensiones PJSIP y la primera llamada con MicroSIP. Es un laboratorio, no un modelo de seguridad para producción.

Webinar oficial — Sangoma: FreePBX 17 Práctica: Instalación y migración, publicado el 27 de junio de 2024. Explica la instalación, PJSIP, el cambio de Macro a Gosub y la migración mediante copia de seguridad y restauración. El vídeo es anterior a la GA de agosto de 2024; versiones, pantallas y disponibilidad de funciones deben contrastarse con la documentación actual.

Lista de comprobación antes de pasar a producción

  • Debian y módulos actualizados por las rutas soportadas, con copia de seguridad previa a los cambios.
  • Acceso administrativo restringido, HTTPS y contraseñas exclusivas para el panel y las extensiones.
  • Firewall activo, zonas revisadas y ninguna interfaz completa en Trusted por conveniencia.
  • Llamadas entrantes, salientes e internas probadas con audio bidireccional, transferencia y atención.
  • Rutas limitadas a los destinos necesarios, con alertas y límites de consumo en el operador cuando estén disponibles.
  • Copias de seguridad protegidas fuera del PBX, restauración ensayada y política de retención para grabaciones.
  • Monitorización de disco, disponibilidad, certificados y fallos de registro.

El primer objetivo es sencillo: dos extensiones hablando con la protección activa. El salto a producción viene después, con registros, rutas, seguridad y recuperación probados. FreePBX facilita administrar la telefonía; no elimina la responsabilidad de operar la central.