Instalar con apt (un comando)
El paquete Debian monopbx es la forma más rápida de ejecutar MonoPbx en un servidor nuevo con Ubuntu 24.04 LTS (amd64). Instala Docker desde los paquetes de Ubuntu, el paquete de producción de Compose y el comando monopbx, y ejecuta todo como el servicio systemd monopbx.service. Caddy, al frente, obtiene un certificado de Let's Encrypt, sirve la consola por HTTPS y lleva el WebSocket SIP del softphone web en wss://<su dominio>/sip.
:::note Versión preliminar
Hasta que se publique la primera versión, el repositorio contiene compilaciones preliminares (0.1.0~edge…). Otros sistemas (Ubuntu 22.04, Debian 12, arm64) se rechazan con un mensaje claro y no se cambia nada.
:::
Un comando
Primero apunte un nombre DNS al servidor (un registro A) y luego:
curl -fsSL https://ilinaya.github.io/monopbx-apt/install.sh | sudo bash -s -- --domain pbx.example.com --email admin@example.com
El script revisa el sistema, agrega el repositorio APT de MonoPbx y verifica su llave de firma (huella 320D C78E FDC8 439C 04F5 FCA6 3E87 FE3D 4C71 5372), ejecuta apt-get install monopbx y después monopbx setup con sus opciones. Sin --domain, el servidor se llama <public-ip>.sslip.io (un servicio DNS público que responde con la dirección escrita en el nombre), así que el certificado funciona sin un dominio propio. Con --email usted acepta el Subscriber Agreement de Let's Encrypt; esa dirección recibe los avisos de vencimiento.
O paso a paso con apt
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://ilinaya.github.io/monopbx-apt/key.gpg | sudo tee /etc/apt/keyrings/monopbx.gpg >/dev/null
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/monopbx.gpg] https://ilinaya.github.io/monopbx-apt stable main" | sudo tee /etc/apt/sources.list.d/monopbx.list
sudo apt-get update && sudo apt-get install -y monopbx
sudo monopbx setup --domain pbx.example.com --email admin@example.com
Qué hace setup
| Paso | Detalle |
|---|---|
| Verificación previa | Ubuntu 24.04, 2 CPU, 4 GB de RAM, 20 GiB libres en /var/lib, puertos 80 y 443 libres, la IP pública y el DNS del dominio. |
| Secretos | mpbx init escribe todos los secretos en /opt/mpbx/compose/prod/.env (modo 0600, con copia en /etc/mpbx/secrets.env). La llave de recuperación se muestra una sola vez: en una terminal vuelve a escribir uno de sus grupos; sin terminal se imprime una vez, así que guarde la salida en un lugar seguro. |
| Frente | Caddy en 80/443: el certificado (Let's Encrypt, Caddy lo renueva), la consola y wss://<dominio>/sip hacia el borde SIP. |
| SIP | 5060 UDP/TCP y SIP sobre TLS en 5061. El certificado TLS viene del almacén de certificados del PBX, que pide su propio certificado de Let's Encrypt para el mismo nombre a través de Caddy y lo renueva solo. |
| Firewall | Si ufw está activo, abre 80/tcp, 443/tcp, 5060, 5061/tcp y el rango RTP. Abra los mismos puertos en el firewall de su nube. |
| Servicio | monopbx.service (un alias de mpbx.service), iniciado y habilitado; luego la autoprueba. |
| Resumen | La URL de la consola, el enlace de configuración de un solo uso para el primer administrador y la llave de recuperación. |
Abra el enlace de configuración (https://<dominio>/setup#token=…) para crear al primer administrador: correo, contraseña y luego el segundo factor TOTP (escanee el código QR con una app de autenticación). ¿Perdió el enlace? sudo monopbx setup-url genera uno nuevo.
Opciones
--domain FQDN nombre público; su registro A debe apuntar a este servidor (predeterminado: <public-ip>.sslip.io)
--email ADDRESS contacto de Let's Encrypt; obligatorio salvo con --no-tls
--no-tls sin certificado público: Caddy usa su propia CA interna (los navegadores advierten). Para pruebas y redes cerradas
--public-ip IP omite la detección de la IP pública (detrás de NAT, indique la dirección a la que llegan los teléfonos)
--relay URL el relay de notificaciones push para las apps móviles (predeterminado: el relay de MonoPbx)
--no-relay no registrarse en un relay push (las apps móviles solo timbran en primer plano)
--turn ejecuta coturn para softphones detrás de NAT estricto
--yes no preguntar "Continue?"
Cualquier otra opción de install.sh del instalador para VM puede ir después de --, por ejemplo -- --calls 500.
Comandos del día a día
monopbx status # versión, servicio, contenedores
monopbx logs mpbx # sigue un servicio (mpbx, mpbx-sip, caddy, postgres, ...)
sudo monopbx selftest # contenedores, HTTPS por Caddy, wss /sip, SIP TLS 5061, mpbx selftest
sudo monopbx backup # pg_dump en /var/backups/monopbx (0600); --with-secrets también copia .env
sudo monopbx setup-url # un nuevo enlace para el primer administrador
sudo monopbx ctl rollback # cualquier comando de mpbx-ctl
Copie los respaldos y /opt/mpbx/compose/prod/.env fuera del servidor. Para respaldos completos y cifrados consulte Respaldo y restauración.
Actualizaciones
sudo apt-get update && sudo apt-get upgrade instala la siguiente versión: el paso posterior a la instalación del paquete hace un pg_dump y luego ejecuta mpbx-ctl upgrade (instantánea, verificaciones, migraciones, autoprueba y reversión automática si algo falla). Si la actualización no termina, MonoPbx sigue con la versión anterior y sudo monopbx upgrade la reintenta. Defina MONOPBX_SKIP_UPGRADE=1 para apt-get si quiere posponerla.
Desinstalar
sudo monopbx uninstall # detiene y quita el servicio y los contenedores; conserva datos y secretos
sudo monopbx uninstall --purge # también borra los volúmenes de datos y /opt/mpbx (escribe el nombre del host)
sudo apt-get remove monopbx # quita el paquete; nunca detiene MonoPbx ni borra datos
Docker sigue instalado.