Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
asterisk [2024/07/19 00:42] 127.0.0.1 Externe Bearbeitung |
asterisk [2025/06/03 01:00] (aktuell) jango [Installation] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | Asterisk ist ein freier und quelloffene VoIP Server. FreePBX ist ein Open Source Webinterface dazu. Siehe auch [[sip|SIP]], | ||
+ | Um Asterisk in MS Teams einzubinden nutzt man das " | ||
+ | |||
+ | Asterisk nutzt das [[stun|STUN]] Protokoll um Firewalls und [[nat|NAT]] zu erkennen. | ||
+ | |||
+ | < | ||
+ | asterisk -rvvv | ||
+ | asterisk -rx < | ||
+ | </ | ||
+ | |||
+ | CLI | ||
+ | |||
+ | < | ||
+ | console dial < | ||
+ | console send text "Hello wold" | ||
+ | console hangup | ||
+ | </ | ||
+ | |||
+ | In Konfigurationsdateien kann man andere Dateien einbinden um es übersichtlich zu halten | ||
+ | < | ||
+ | #include myusers.conf | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | =====Installation===== | ||
+ | |||
+ | < | ||
+ | #!/bin/sh | ||
+ | |||
+ | apt-get -y install make build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion | ||
+ | |||
+ | cd /usr/src | ||
+ | |||
+ | wget http:// | ||
+ | tar zxvf asterisk-18-current.tar.gz | ||
+ | |||
+ | cd asterisk-18.* | ||
+ | |||
+ | contrib/ | ||
+ | contrib/ | ||
+ | |||
+ | ./configure --with-jansson-bundled | ||
+ | |||
+ | make menuselect | ||
+ | make | ||
+ | make install | ||
+ | make samples | ||
+ | make config | ||
+ | |||
+ | ldconfig | ||
+ | |||
+ | groupadd asterisk | ||
+ | useradd -d / | ||
+ | |||
+ | sed -i ' | ||
+ | sed -i ' | ||
+ | sed -i ' | ||
+ | |||
+ | mkdir / | ||
+ | |||
+ | chown -R asterisk: | ||
+ | </ | ||
+ | |||
+ | =====Erstkonfiguration===== | ||
+ | |||
+ | Beispiel einer < | ||
+ | |||
+ | < | ||
+ | [general] | ||
+ | context = extern | ||
+ | transport = udp,tls | ||
+ | qualify = yes | ||
+ | |||
+ | ; | ||
+ | allow = all | ||
+ | |||
+ | ; tls & srtp | ||
+ | tlsenable = yes | ||
+ | tlscertfile = / | ||
+ | tlsprivatekey = / | ||
+ | |||
+ | ; sms | ||
+ | accept_outofcall_message = yes | ||
+ | outofcall_message_context = sms | ||
+ | auth_message_requests = yes | ||
+ | |||
+ | [101] | ||
+ | type = friend | ||
+ | secret = 1234 | ||
+ | context = intern | ||
+ | host = dynamic | ||
+ | mailbox = 101@vm | ||
+ | encryption = yes | ||
+ | |||
+ | [102] | ||
+ | type = friend | ||
+ | secret = 1234 | ||
+ | context = intern | ||
+ | host = dynamic | ||
+ | mailbox = 102@vm | ||
+ | encryption = yes | ||
+ | |||
+ | #include ext/ | ||
+ | </ | ||
+ | =====Extensions===== | ||
+ | |||
+ | In der Datei ''/ | ||
+ | |||
+ | < | ||
+ | [extern] | ||
+ | exten => _XXX., | ||
+ | same => n, | ||
+ | same => n, | ||
+ | |||
+ | [intern] | ||
+ | ; voicemail main | ||
+ | exten => 9999, | ||
+ | exten => 9999, | ||
+ | exten => 9999, | ||
+ | |||
+ | ; script example | ||
+ | ; exten => _XXX, 1, System("/ | ||
+ | |||
+ | ; all peers | ||
+ | exten => _XXX, 1, Answer() | ||
+ | exten => _XXX, n, Dial(SIP/ | ||
+ | exten => _XXX, n, VoiceMail(${EXTEN: | ||
+ | exten => _XXX, n, HangUp() | ||
+ | |||
+ | ; exten => _102, 1, Dial(08001234567@external, | ||
+ | |||
+ | [sms] | ||
+ | exten => _X., | ||
+ | exten => _X., | ||
+ | exten => _X., | ||
+ | exten => _X., | ||
+ | exten => _X., | ||
+ | exten => _X., | ||
+ | </ | ||
+ | |||
+ | Siehe auch https:// | ||
+ | |||
+ | =====VoiceMail===== | ||
+ | |||
+ | In der Datei < | ||
+ | |||
+ | < | ||
+ | [vm] | ||
+ | 101 => 1234,Jane Doe, | ||
+ | 102 => 1234,Dummy Account, | ||
+ | </ | ||
+ | |||
+ | =====Logs===== | ||
+ | |||
+ | In der Datei ''/ | ||
+ | |||
+ | < | ||
+ | console => debug, | ||
+ | </ | ||
+ | |||
+ | =====CDR===== | ||
+ | |||
+ | CDR steht für '' | ||
+ | |||
+ | =====Callfile===== | ||
+ | |||
+ | |||
+ | < | ||
+ | Channel: SIP/102 ; anrufer | ||
+ | MaxRetries: 2 | ||
+ | RetryTime: 60 | ||
+ | WaitTime: 30 | ||
+ | Context: intern | ||
+ | Extension: 101 ; angerufener | ||
+ | </ | ||
+ | |||
+ | Und die Datei in das Verzeichnis ''/ | ||
+ | |||
+ | =====TLS===== | ||
+ | |||
+ | ====Lets encrypt==== | ||
+ | |||
+ | < | ||
+ | apt install certbot | ||
+ | certbot certonly --standalone -d zarat.ml | ||
+ | |||
+ | mkdir / | ||
+ | |||
+ | cp / | ||
+ | cp / | ||
+ | |||
+ | chown asterisk: | ||
+ | |||
+ | chmod go-rwx / | ||
+ | </ | ||
+ | |||
+ | Datei ''/ | ||
+ | |||
+ | < | ||
+ | tlscertfile=/ | ||
+ | tlsprivatekey=/ | ||
+ | </ | ||
+ | |||
+ | See https:// | ||
+ | |||
+ | ====Asterisk internal==== | ||
+ | |||
+ | < | ||
+ | cd /usr/src | ||
+ | wget http:// | ||
+ | tar zxvf asterisk-16-current.tar.gz | ||
+ | rm -rf asterisk-16-current.tar.gz | ||
+ | cd asterisk-*/ | ||
+ | |||
+ | su asterisk | ||
+ | |||
+ | mkdir / | ||
+ | |||
+ | contrib/ | ||
+ | |||
+ | chmod 600 / | ||
+ | chown -R asterisk: | ||
+ | </ | ||
+ | |||
+ | Datei ''/ | ||
+ | |||
+ | < | ||
+ | tlsenable = yes | ||
+ | tlscertfile = / | ||
+ | transport = udp,tls | ||
+ | </ | ||
+ | |||
+ | =====Konferenzen===== | ||
+ | |||
+ | In der Datei ''/ | ||
+ | |||
+ | < | ||
+ | [general] | ||
+ | |||
+ | [default_bridge] | ||
+ | type=bridge | ||
+ | max_members=10 | ||
+ | |||
+ | [admin_user] | ||
+ | type=user | ||
+ | pin=1234 | ||
+ | admin=yes | ||
+ | marked=yes | ||
+ | music_on_hold_when_empty=yes | ||
+ | |||
+ | [default_user] | ||
+ | type=user | ||
+ | pin=1234 | ||
+ | wait_marked=yes | ||
+ | end_marked=yes | ||
+ | music_on_hold_when_empty=yes | ||
+ | announce_user_count=yes | ||
+ | </ | ||
+ | |||
+ | In der Datei ''/ | ||
+ | |||
+ | < | ||
+ | ; conference guest | ||
+ | exten => 100, | ||
+ | exten => 100, | ||
+ | exten => 100, | ||
+ | |||
+ | ; conference admin | ||
+ | exten => 101, | ||
+ | exten => 101, | ||
+ | exten => 101, | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | |||
+ | =====HTTP WebRTC===== | ||
+ | |||
+ | Möchte man den Zugriff via WebRTC aktivieren muss man den Zugang für SIP deaktivieren. Dazu in der Datei ''/ | ||
+ | |||
+ | Für WebRTC müssen die folgenden Module vorhanden und aktiv sein. | ||
+ | |||
+ | * res_crypto | ||
+ | * res_http_websocket | ||
+ | * res_pjsip_transport_websocket | ||
+ | |||
+ | In der Datei ''/ | ||
+ | |||
+ | < | ||
+ | [transport-wss] | ||
+ | type=transport | ||
+ | protocol=wss | ||
+ | bind=0.0.0.0 | ||
+ | |||
+ | [webrtc_client] | ||
+ | type=aor | ||
+ | max_contacts=5 | ||
+ | remove_existing=yes | ||
+ | |||
+ | [webrtc_client] | ||
+ | type=auth | ||
+ | auth_type=userpass | ||
+ | username=webrtc_client | ||
+ | password=webrtc_client | ||
+ | |||
+ | [webrtc_client] | ||
+ | type=endpoint | ||
+ | aors=webrtc_client | ||
+ | auth=webrtc_client | ||
+ | dtls_auto_generate_cert=yes | ||
+ | webrtc=yes | ||
+ | context=default | ||
+ | disallow=all | ||
+ | allow=opus, | ||
+ | </ | ||
+ | |||
+ | In die Datei ''/ | ||
+ | |||
+ | < | ||
+ | [general] | ||
+ | enabled=yes | ||
+ | bindaddr=0.0.0.0 | ||
+ | bindport=8088 | ||
+ | tlsenable=yes | ||
+ | tlsbindaddr=0.0.0.0: | ||
+ | tlscertfile=/ | ||
+ | tlsprivatekey=/ | ||
+ | </ | ||
+ | |||
+ | Siehe https:// | ||
+ | |||
+ | =====Manager===== | ||
+ | |||
+ | Todo - Siehe https:// | ||
+ | |||
+ | =====Fax===== | ||
+ | |||
+ | < | ||
+ | [default] | ||
+ | ; Answer the line and listen | ||
+ | exten => s,1,Answer | ||
+ | ; Dial an extension, let asterisk give a ringtone | ||
+ | exten => s, | ||
+ | ; Hangup if nobody picked up within 40 seconds | ||
+ | exten => s,3,Hangup | ||
+ | |||
+ | ; Did we get a fax? | ||
+ | exten => fax, | ||
+ | exten => fax, | ||
+ | </ | ||
+ | |||
+ | Send to queue | ||
+ | |||
+ | < | ||
+ | Channel: | ||
+ | MaxRetries: 0 | ||
+ | WaitTime: 20 | ||
+ | Application: | ||
+ | Data:/ | ||
+ | </ | ||
+ | |||
+ | See https:// | ||
+ | |||
+ | =====Links===== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | Apps | ||
+ | |||
+ | * Zoiper | ||
+ | * Linphone | ||
+ | * MicroSIP | ||
+ | * MizuDroid |