KI-AGENT: FreePBX Diagnoseprofil ergänzen

This commit is contained in:
2026-05-21 19:01:31 +02:00
parent 30cbc18b3a
commit 42bed16e25
8 changed files with 114 additions and 0 deletions

View File

@@ -79,6 +79,18 @@ TELEPHONY_DEV_SIP_PORT=5060
TELEPHONY_DEV_RTP_MIN_PORT=10000
TELEPHONY_DEV_RTP_MAX_PORT=10020
# Optionales FreePBX-Diagnoseprofil. Das Profil ist nur als Referenz-PBX für
# Provider-Tests gedacht und nutzt eigene Ports, damit der FEDEO-Asterisk
# parallel bestehen bleibt.
FREEPBX_DEV_IMAGE=escomputers/freepbx:17-nofail2ban
FREEPBX_DEV_PLATFORM=linux/amd64
FREEPBX_DEV_TZ=Europe/Berlin
FREEPBX_DEV_HTTP_PORT=18080
FREEPBX_DEV_HTTPS_PORT=18443
FREEPBX_DEV_SIP_PORT=15060
FREEPBX_DEV_RTP_MIN_PORT=18000
FREEPBX_DEV_RTP_MAX_PORT=18100
# Externe Telefonie über Telekom/tel.t-online.de. Keine echten Zugangsdaten
# einchecken. SIP-ID ist in der Regel die Rufnummer mit Vorwahl ohne Leerzeichen
# und ohne Sonderzeichen, z. B. 0301234567. Wenn dein Anschluss noch die

View File

@@ -142,6 +142,49 @@ services:
networks:
- traefik
freepbx-dev-db:
image: mariadb:10.11
restart: unless-stopped
profiles:
- freepbx-dev
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/freepbx_mysql_root_password
MYSQL_USER: freepbxuser
MYSQL_PASSWORD_FILE: /run/secrets/freepbx_user_password
secrets:
- freepbx_mysql_root_password
- freepbx_user_password
volumes:
- freepbx_dev_mysql:/var/lib/mysql
- ./telephony/freepbx/my.cnf:/etc/mysql/my.cnf:ro
- ./telephony/freepbx/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
networks:
- traefik
freepbx-dev:
image: ${FREEPBX_DEV_IMAGE:-escomputers/freepbx:17-nofail2ban}
platform: ${FREEPBX_DEV_PLATFORM:-linux/amd64}
restart: unless-stopped
profiles:
- freepbx-dev
depends_on:
- freepbx-dev-db
environment:
- TZ=${FREEPBX_DEV_TZ:-Europe/Berlin}
secrets:
- freepbx_user_password
- freepbx_postfix_sasl_passwd
volumes:
- freepbx_dev_var:/var
- freepbx_dev_etc:/etc
ports:
- "${FREEPBX_DEV_HTTP_PORT:-18080}:80/tcp"
- "${FREEPBX_DEV_HTTPS_PORT:-18443}:443/tcp"
- "${FREEPBX_DEV_SIP_PORT:-15060}:5060/udp"
- "${FREEPBX_DEV_RTP_MIN_PORT:-18000}-${FREEPBX_DEV_RTP_MAX_PORT:-18100}:18000-18100/udp"
networks:
- traefik
matrix-db:
image: postgres:16-alpine
restart: unless-stopped
@@ -489,6 +532,19 @@ services:
- "./traefik/logs:/logs"
networks:
- traefik
volumes:
freepbx_dev_mysql:
freepbx_dev_var:
freepbx_dev_etc:
secrets:
freepbx_mysql_root_password:
file: ./telephony/freepbx/secrets/mysql_root_password.txt
freepbx_user_password:
file: ./telephony/freepbx/secrets/freepbxuser_password.txt
freepbx_postfix_sasl_passwd:
file: ./telephony/freepbx/secrets/sasl_passwd.txt
networks:
traefik:
external: false

View File

@@ -67,3 +67,37 @@ docker compose --profile telephony-dev up -d asterisk-dev
```
Beim Start erzeugt der Container die Dateien `pjsip.telekom.conf` und `extensions.telekom.conf` in einem Docker-Volume. Ausgehende Anrufe mit Prefix `0` und internationale Ziele mit `+` werden über den Telekom-Trunk geroutet. Eingehende Anrufe landen standardmäßig auf Nebenstelle `1001`.
## FreePBX als Diagnose-PBX
Für Provider-Tests kann zusätzlich das optionale Profil `freepbx-dev` gestartet werden. FreePBX ist hier nicht als dauerhafte FEDEO-Abhängigkeit gedacht, sondern als Referenzoberfläche, um Trunk-, NAT-, CLIP- und Routing-Parameter gegen einen Provider wie Easybell zu prüfen.
```bash
docker compose --profile freepbx-dev up -d freepbx-dev-db freepbx-dev
```
Beim ersten Start muss FreePBX einmal gegen die lokale MariaDB installiert werden:
```bash
docker compose --profile freepbx-dev exec -T -w /usr/local/src/freepbx freepbx-dev \
bash -lc 'php install -n --dbuser=freepbxuser --dbpass="$(cat /run/secrets/freepbx_user_password)" --dbhost=freepbx-dev-db'
```
Danach ist die Oberfläche lokal unter `http://localhost:18080` erreichbar. Beim ersten Öffnen zeigt FreePBX die Ersteinrichtung für den Web-Admin-Benutzer. Diese Zugangsdaten gelten nur für die FreePBX-Diagnoseoberfläche und sind unabhängig von FEDEO.
Die Standardports sind bewusst konfliktarm gesetzt:
- Web: `18080` / `18443`
- SIP UDP: `15060`
- RTP UDP: `18000-18100`
Das verwendete FreePBX-Image ist aktuell nur für `linux/amd64` veröffentlicht. Auf Apple-Silicon-Hosts nutzt Docker Desktop deshalb über `FREEPBX_DEV_PLATFORM=linux/amd64` Emulation; für Diagnosezwecke ist das ausreichend, aber nicht als Produktionssetup gedacht.
Für einen möglichst realistischen Easybell-Test kann der FEDEO-Asterisk kurz gestoppt und FreePBX auf dem üblichen SIP-Port gestartet werden:
```bash
docker compose --profile telephony-dev stop asterisk-dev
FREEPBX_DEV_SIP_PORT=5060 docker compose --profile freepbx-dev up -d freepbx-dev
```
In FreePBX sollte der RTP-Bereich unter **Settings -> Asterisk SIP Settings** ebenfalls auf `18000-18100` gesetzt werden, damit er zur Compose-Portfreigabe passt. Wenn der Trunk dort erfolgreich registriert und ein Testanruf möglich ist, können die funktionierenden PJSIP- und NAT-Werte nach FEDEO übernommen werden.

View File

@@ -0,0 +1,7 @@
CREATE DATABASE IF NOT EXISTS asterisk;
GRANT ALL PRIVILEGES ON `asterisk`.* TO 'freepbxuser'@'%';
CREATE DATABASE IF NOT EXISTS asteriskcdrdb;
GRANT ALL PRIVILEGES ON `asteriskcdrdb`.* TO 'freepbxuser'@'%';
FLUSH PRIVILEGES;

2
telephony/freepbx/my.cnf Normal file
View File

@@ -0,0 +1,2 @@
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

View File

@@ -0,0 +1 @@
change-this-freepbx-user-password

View File

@@ -0,0 +1 @@
change-this-freepbx-root-password

View File

@@ -0,0 +1 @@
[smtp.example.com]:587 user@example.com:change-this-app-password