Instalar en Ubuntu 24.04 (VM)
El instalador para VM configura un MonoPbx de un solo nodo en Ubuntu 24.04 LTS (amd64 o arm64) y nada más: ni Debian, ni RHEL. Por dentro es el paquete de producción de Docker Compose. El instalador agrega Docker, los secretos, HTTPS, una unidad de systemd y una autoprueba alrededor de él.
:::warning Dominio de descarga provisional
El comando de una línea usa get.mpbx.ilinaia.com. Ese dominio es provisional: no existe registro DNS y todavía no se ha publicado ninguna versión. Mientras tanto, compile el paquete usted mismo (vea "Compilar el paquete") y ejecute el instalador con MPBX_BUNDLE_FILE y MPBX_BUNDLE_SHA256 definidos.
:::
# once the download domain exists
curl -fsSL https://get.mpbx.ilinaia.com/install.sh | sudo bash
# today, with a bundle you built
MPBX_BUNDLE_FILE=/path/mpbx-bundle.tar.gz MPBX_BUNDLE_SHA256=<sha256> sudo -E bash install.sh
Nunca ejecute el instalador en una estación de trabajo. Rechaza cualquier sistema que no sea Ubuntu 24.04, pero igual instala paquetes y escribe en /etc y /opt. Pruébelo primero en una VM desechable.
:::note Estado de la verificación
Las pruebas del propio instalador se ejecutan desde deploy/installer/test. Una instalación completa en una VM desechable de Ubuntu 24.04 es una verificación manual pendiente del propietario. Los bloques ejecutables de la guía los revisa site/scripts/check-guides.mjs.
:::
Qué hace
| Paso | Detalle |
|---|---|
| Verificación previa | Ubuntu 24.04, x86_64 o aarch64, systemd, root, 2 CPU, 4 GB de RAM, 20 GiB libres en /var/lib, los puertos 80 y 443 y el puerto web libres, una terminal (para confirmar la clave de recuperación), la IP pública, y que el DNS de --domain apunte a esa IP. |
| Docker | Se omite si Docker Engine 24+ con Compose 2.24+ ya funciona. Si no, se usa el repositorio apt oficial de Docker, y la huella de la clave de firma debe coincidir con la fijada en el script, o no se instala nada. |
| Paquete | Descarga mpbx-bundle.tar.gz y SHA256SUMS, verifica el SHA-256 e instala en /opt/mpbx. |
| Secretos | Ejecuta mpbx init. En una terminal muestra la clave de recuperación una sola vez y le pide que vuelva a escribir un grupo de ella antes de escribir nada. También imprime la URL de configuración de un solo uso para el primer administrador. |
| Servicio | /etc/systemd/system/mpbx.service (habilitado) y el asistente /usr/local/sbin/mpbx-ctl. |
| Autoprueba | mpbx-ctl selftest verifica la unidad, cada contenedor, la API por HTTP y HTTPS, que ningún puerto de base de datos esté escuchando en el host, y que .env tenga modo 0600. |
| Cortafuegos | Imprime las reglas que debe abrir. No cambia ningún cortafuegos. |
Opciones
--domain FQDN public name (its A record must point at this server); with --accept-acme-terms enables ACME
--accept-acme-terms accept the ACME CA's subscriber agreement (Let's Encrypt by default)
--acme-email ADDRESS contact for the CA's expiry notices
--acme-directory URL another ACME CA (https only)
--public-ip IP skip the public-IP lookup
--no-tls | --tls do not publish 80/443 | publish them (default)
--http-port PORT plain web/API port (default 8080)
--channel stable|beta|nightly, --version X
--unattended no terminal: the recovery key is printed once to stdout and cannot be confirmed
--yes do not ask "Continue?"
También existen --skip-dns-check, --force-bundle, --skip-resource-checks y --docker-only.
Cortafuegos
| Puerto | Motivo |
|---|---|
| 80/tcp, 443/tcp | Desafío y redirección de ACME; cliente web, API y WebSocket |
| 5060/udp+tcp, 5061/tcp | SIP. El rol de borde SIP todavía no está disponible, así que hoy nada escucha aquí. |
| 30000-40000/udp | RTP (rtpengine). Sin él las llamadas se conectan pero no tienen audio. |
| 3478 y el rango de relevo | solo con el perfil turn |
Nunca exponga 5432, 6379, 8123, 9000 ni 22222 (el puerto de control de rtpengine no tiene autenticación). El paquete no publica ninguno de ellos. Los puertos publicados por Docker evitan ufw.
Comandos del día a día
sudo mpbx-ctl status
sudo mpbx-ctl logs mpbx
sudo mpbx-ctl selftest
sudo mpbx-ctl restart
sudo mpbx-ctl stop
sudo mpbx-ctl setup-url # a new single-use setup URL; the previous one stops working
sudo mpbx-ctl version
La configuración y los secretos están en /opt/mpbx/compose/prod/.env. Respalde este archivo junto con los volúmenes de Docker (vea Respaldo y restauración).
Volver a ejecutarlo es seguro
Cada paso converge. Los secretos existentes nunca se regeneran, los valores de .env que cambió se conservan y no se borra nada. Una instalación fallida puede volver a iniciarse. La actualización y la reversión (mpbx upgrade) todavía no están construidas: un paquete de otra versión se rechaza a menos que pase --force-bundle.
Desinstalar
sudo mpbx-ctl uninstall # asks first; keeps the Docker volumes and .env
sudo mpbx-ctl uninstall --delete-data # also deletes the volumes and /opt/mpbx; you must type this host's name
--yes por sí solo nunca borra datos. Docker, su fuente de apt y su cortafuegos nunca se tocan. Borrar datos también borra la clave maestra: sin un respaldo y su frase de paso no se puede recuperar.
Compilar el paquete
Desde una copia del repositorio, ejecute deploy/installer/build-bundle.sh --version X.Y.Z --images-file images.env --out dist. Produce mpbx-bundle.tar.gz y SHA256SUMS. images.env define MPBX_IMAGE y MPBX_RTPENGINE_IMAGE. En la versión 1 no hay firma del paquete ni de las imágenes: la integridad depende de HTTPS hacia el host de descarga, del SHA-256 del paquete, de la clave de Docker fijada y de las imágenes fijadas por digest.