KI-AGENT: FreePBX Diagnoseprofil ergänzen
This commit is contained in:
12
.env.example
12
.env.example
@@ -79,6 +79,18 @@ TELEPHONY_DEV_SIP_PORT=5060
|
|||||||
TELEPHONY_DEV_RTP_MIN_PORT=10000
|
TELEPHONY_DEV_RTP_MIN_PORT=10000
|
||||||
TELEPHONY_DEV_RTP_MAX_PORT=10020
|
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
|
# Externe Telefonie über Telekom/tel.t-online.de. Keine echten Zugangsdaten
|
||||||
# einchecken. SIP-ID ist in der Regel die Rufnummer mit Vorwahl ohne Leerzeichen
|
# einchecken. SIP-ID ist in der Regel die Rufnummer mit Vorwahl ohne Leerzeichen
|
||||||
# und ohne Sonderzeichen, z. B. 0301234567. Wenn dein Anschluss noch die
|
# und ohne Sonderzeichen, z. B. 0301234567. Wenn dein Anschluss noch die
|
||||||
|
|||||||
@@ -142,6 +142,49 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- traefik
|
- 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:
|
matrix-db:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -489,6 +532,19 @@ services:
|
|||||||
- "./traefik/logs:/logs"
|
- "./traefik/logs:/logs"
|
||||||
networks:
|
networks:
|
||||||
- traefik
|
- 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:
|
networks:
|
||||||
traefik:
|
traefik:
|
||||||
external: false
|
external: false
|
||||||
|
|||||||
@@ -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`.
|
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.
|
||||||
|
|||||||
7
telephony/freepbx/init.sql
Normal file
7
telephony/freepbx/init.sql
Normal 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
2
telephony/freepbx/my.cnf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[mysqld]
|
||||||
|
sql_mode=NO_ENGINE_SUBSTITUTION
|
||||||
1
telephony/freepbx/secrets/freepbxuser_password.txt
Normal file
1
telephony/freepbx/secrets/freepbxuser_password.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
change-this-freepbx-user-password
|
||||||
1
telephony/freepbx/secrets/mysql_root_password.txt
Normal file
1
telephony/freepbx/secrets/mysql_root_password.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
change-this-freepbx-root-password
|
||||||
1
telephony/freepbx/secrets/sasl_passwd.txt
Normal file
1
telephony/freepbx/secrets/sasl_passwd.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[smtp.example.com]:587 user@example.com:change-this-app-password
|
||||||
Reference in New Issue
Block a user