Asterisk in Docker: Difference between revisions
Brian Wilson (talk | contribs) mNo edit summary |
Brian Wilson (talk | contribs) mNo edit summary |
||
Line 1: | Line 1: | ||
Read the [[Docker]] page if you don't know what Docker is. | Read the [[Docker]] page if you don't know what Docker is. | ||
Notes on building | Notes on building a current executable, the old way: [[Building Asterisk]] | ||
== Building a docker container == | |||
I used with the github respoke/asterisk image as my starting point. | |||
git clone git@github.com:respoke/asterisk-docker.git | |||
Then I broke respoke's image out into two parts, so that it would build faster. | |||
Currently I work logged into Bellman. | |||
I have a Debian Stretch container wildsong/build that has all the | |||
tools in it, when the container builds it downloads sources and | |||
configures and compiles them. | |||
cd source/docker/docker-build | |||
Once the 'build' container is working, check in changes to github and a new copy | |||
will build at hub.docker.com. | |||
== Configuration == | == Configuration == | ||
I | Put environment settings into Dockerfile and add j2 config files that I created for [[Fogg]]. | ||
The configuration is entirely file based because my home phone system is relatively static. | |||
The | |||
The docker-asterisk container configures Asterisk based on templates | The docker-asterisk container configures Asterisk based on templates | ||
in etc_asterisk. | in etc_asterisk. | ||
cd source/docker/docker-asterisk | cd source/docker/docker-asterisk | ||
''edit Dockerfile to adjust environment'' | ''edit Dockerfile to adjust environment'' | ||
cd etc_asterisk | cd etc_asterisk | ||
''edit files'' | ''edit files'' | ||
cd .. | cd .. | ||
docker rm -f asterisk | docker rm -f asterisk | ||
docker build -t asterisk | docker build -t asterisk . | ||
== | == Launch server == | ||
Using the --net=host option is not a best practice because it exposes every port running on the docker machine. | Using the --net=host option is not a best practice because it exposes every port running on the docker machine. | ||
It means it looks like Asterisk is just running on Bellman, not inside a container. | It means it looks like Asterisk is just running on Bellman, not inside a container. | ||
docker run -d --net=host | docker run -d --net=host --name=asterisk asterisk | ||
I don't think I need any -p port mappings or --expose if I use --net=host, and though it's not "best practices" | |||
it will make Asterisk networking problems go away pretty much. | |||
== Testing == | |||
=== Outside call === | === Outside call === | ||
Call from PSTN to 707-827-0001 | |||
* Is it being logged at Twilio? '''YES''' | * Is it being logged at Twilio? '''YES''' | ||
* Can I see the connection attempt in the Asterisk console? '''No''' | * Can I see the connection attempt in the Asterisk console? '''No''' | ||
Line 97: | Line 59: | ||
* Two way audio? | * Two way audio? | ||
* TODO Set up SMS and MMS message gateways??? | * TODO Set up SMS and MMS message gateways??? | ||
=== Inside call, to PBX === | === Inside call, to PBX === | ||
Line 135: | Line 96: | ||
docker exec -it asterisk asterisk -r | docker exec -it asterisk asterisk -r | ||
Or you can | Or you can connect the usual way via a bash shell | ||
docker exec -it asterisk bash | |||
tcpdump -n not port 22 and not arp and not host 192.168.123.159 | |||
== Connected phones == | == Connected phones == |
Revision as of 02:21, 27 February 2019
Read the Docker page if you don't know what Docker is.
Notes on building a current executable, the old way: Building Asterisk
Building a docker container
I used with the github respoke/asterisk image as my starting point.
git clone [email protected]:respoke/asterisk-docker.git
Then I broke respoke's image out into two parts, so that it would build faster.
Currently I work logged into Bellman.
I have a Debian Stretch container wildsong/build that has all the tools in it, when the container builds it downloads sources and configures and compiles them.
cd source/docker/docker-build
Once the 'build' container is working, check in changes to github and a new copy will build at hub.docker.com.
Configuration
Put environment settings into Dockerfile and add j2 config files that I created for Fogg.
The configuration is entirely file based because my home phone system is relatively static.
The docker-asterisk container configures Asterisk based on templates in etc_asterisk.
cd source/docker/docker-asterisk edit Dockerfile to adjust environment cd etc_asterisk edit files cd .. docker rm -f asterisk docker build -t asterisk .
Launch server
Using the --net=host option is not a best practice because it exposes every port running on the docker machine. It means it looks like Asterisk is just running on Bellman, not inside a container.
docker run -d --net=host --name=asterisk asterisk
I don't think I need any -p port mappings or --expose if I use --net=host, and though it's not "best practices" it will make Asterisk networking problems go away pretty much.
Testing
Outside call
Call from PSTN to 707-827-0001
- Is it being logged at Twilio? YES
- Can I see the connection attempt in the Asterisk console? No
- Can I see the connection attempt being forwarded through the firewall? Don't know yet
- Two way audio?
- TODO Set up SMS and MMS message gateways???
Inside call, to PBX
- Press voicemail button. Does prompt come back? YES
- TODO -- I want it configured to bypass the user/pass prompt.
Inside call, station to station
I have two stations registering right now, the GXV phones.
- 100 Ring all phones
- 101 Studio phone 192.168.123.80 on wire
- 102 eLab phone 192.168.123.76 on WIFI
- 850 voice mail
- Call to voice mail works.
- Calling station to station works.
- TODO -- GET SMART PHONE set up. Currently it fails to register
[Nov 6 06:56:21] NOTICE[262]: res_pjsip/pjsip_distributor.c:659 log_failed_request: Request 'REGISTER' from '<sip:[email protected]>' failed for '192.168.123.207:13411' (callid: [email protected]) - Failed to authenticate [Nov 6 06:56:21] NOTICE[262]: res_pjsip/pjsip_distributor.c:659 log_failed_request: Request 'REGISTER' from '<sip:[email protected]>' failed for '192.168.123.207:13411' (callid: [email protected]) - No matching endpoint found
Voicemail
Logins fail with this error.
[Nov 6 06:54:09] WARNING[294][C-00000008]: app_voicemail.c:11191 vm_authenticate: Couldn't read username
Intercom calling
TODO
Console
You can connect to the Asterisk console directly with this command
docker exec -it asterisk asterisk -r
Or you can connect the usual way via a bash shell
docker exec -it asterisk bash
tcpdump -n not port 22 and not arp and not host 192.168.123.159
Connected phones
I don't know how to see what phones are registered with pjsip!??
I started a separate page for it, PJSIP.