Asterisk in Docker: Difference between revisions

From Wildsong
Jump to navigationJump to search
Brian Wilson (talk | contribs)
Brian Wilson (talk | contribs)
Line 5: Line 5:
== Building a docker container ==
== Building a docker container ==


I used with the github respoke/asterisk image as my starting point.
I started with the github respoke/asterisk image as my starting point. Then I did my own version because I wanted to use the latest Asterisk and respoke does not appear to get updated.


git clone [email protected]:respoke/asterisk-docker.git
Then I broke respoke's image out into two parts, so that it would build faster.


Then I broke respoke's image out into two parts, so that it would build faster.
I have a container on hub.docker.com called wildsong/build-asterisk that has all the
tools in it, when the container builds it downloads sources and
configures and compiles them. I keep the source here on Bellman.


Currently I work logged into Bellman.
cd source/docker/docker-build-asterisk


I have a Debian Stretch container wildsong/build that has all the
Once the 'build-asterisk' container is working, check in changes to github and a new copy
tools in it, when the container builds it downloads sources and  
will build at hub.docker.com automatically.
configures and compiles them.


cd source/docker/docker-build
Remember to tag which goes something like this


Once the 'build' container is working, check in changes to github and a new copy
git tag -a rel1.0.x -m 'release 1.0.x of build-asterisk'
will build at hub.docker.com.
git push origin rel1.0.x


== Configuration ==
== Configuration ==

Revision as of 01:52, 25 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 started with the github respoke/asterisk image as my starting point. Then I did my own version because I wanted to use the latest Asterisk and respoke does not appear to get updated.

Then I broke respoke's image out into two parts, so that it would build faster.

I have a container on hub.docker.com called wildsong/build-asterisk that has all the tools in it, when the container builds it downloads sources and configures and compiles them. I keep the source here on Bellman.

cd source/docker/docker-build-asterisk

Once the 'build-asterisk' container is working, check in changes to github and a new copy will build at hub.docker.com automatically.

Remember to tag which goes something like this

git tag -a rel1.0.x -m 'release 1.0.x of build-asterisk'
git push origin rel1.0.x

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.