Properly terminate crystal-lang service in docker
Production-ready crystal application in docker must process correctly several
signals to shutdown properly. There is two commands in docker can be used to stop running container:
docker stop and
docker kill. First one,
docker stop stops a running container by sending it SIGTERM signal, let the main process process it, and after a grace period uses SIGKILL to terminate the application.
Create the smallest Crystal-lang docker image based on scratch
Official Crystal-lang docker image is Ubuntu-based and relatively big, but production-ready image could be tiny, if we will use docker multi-stage builds. The smallest image could be created using scratch image, but if it’s needed to do some processing before actual code starts, busybox or alpine is recommended.
All-in-one (Crystal-lang library that handle all the Asterisk PBX interfaces)
I’ve created and open-sourced a Crystal-lang shard (library) that handle all the Asterisk PBX interfaces (ARI, AMI and all types of AGI). Get it here: https://github.com/ctiapps/asterisk.
How to install software on firewalled server
Quick answer: Reverse SSH proxy. Create dynamic tunnel:
ssh -D 51010 localhost, ssh to the remote machine:
ssh -R 51010:127.0.0.1:51010 firewalled-server and install the software using proxychains command.
Digital Ocean, Floating IP and VoIP
Tiny docker image with ngrokI've found an excellent tiny Docker image for ngrok (wernight/ngrok). From now just using it to handle this blog.
Asterisk OPUS patch for 11.11.0
Released updated patch, now it supports Asterisk 11.11.0 and 12.2.5. With VP8 in pass-through mode, tested — it works well. Get it here!
WebRTC with Asterisk 11?
Tonight I have tried two WebRTC clients (JsSIP and sipML5) with Asterisk 11 and get both of them working — echo test calls with ulaw (g711u) codec works, but with one-way audio if I call from WebRTC to the SIP softphone.
Opus and VP8 in Asterisk 11 (Experimental support)
Great news! Meetecho just introduced experimental OPUS support in Asterisk 11. https://github.com/meetecho/asterisk-opus Time to test it with WebRTC!
Roaming PBX updateWhat's new: Asterisk 11.4 / SILK codec / Watchdog, so Raspberry Pi board works better.
Roaming PBX – first releaseToday I have baked latest image (containing ruby, pcapsipdump, asterisk, silk codec). Because it is still a bit alpha, I was created shorted URL, download link, containing latest image: [j.mp/tinypbx](//j.mp/tinypbx).
Roaming PBX, first edition
Currently image was compiled, I removed GUI from it (just for now). Some tests... And it will be ready... hope in few hours! Instructions will follow.
Download link, containing latest image: http://j.mp/tinypbx). Standard flashing instructions: gunzip .gz file, insert SD card, flash with Linux DD command... This site for example, describing flashing procedure well.
Creating your own custom image for Raspberry Pi
I wanted to create image builder for cross-compile environment, so say hello to it: https://github.com/andrius/build-raspbian-image.
Perfect results (SIP TCP vs UDP)
Yesterday I have replaced UDP to TCP at my Android softphone (Bria) and... Usually by this time (2:20 PM), my cellphone battery has 50% charge and now it is 88 percent.
Voice quality... I do not feel any difference.
Raspberry Pi - how to create your own image
Currently I do developing my own Roaming VoIP PBX as a Rasbbrry Pi image, and have to rebuild project packages often. It is not best idea to compile packages right on Raspberry Pi. That would take hours. I was searching for a tool that can create image base — on my laptop or VPS.
Asterisk with silk8 and amr-nb codecs
As part of lab-project (roaming PBX), I’ve compiled SILK and AMR codecs for Asterisk. AMR by googling and researching and SILK following instructions in this repository: https://github.com/mordak/codec_silk.
Update (20 March, 2013)
Tested SILK8 (SILK-NB) on Android (with CSIPSimple and Bria) – it does not work well, quality is not fantastic definitaly. Have tried both versions: compiled by myself and official Digium SILK codec.
Debian installer (Asterisk and AGI library)
Roaming PBX with Raspberry Pi, Asterisk and chan_dongle
As an frequent tralveller, I well understand the needs of another travelers and citizens of the world in telecommunications ;) While ago I’ve decided to spent my free time building Roaming PBX solution.
Why create AGI?
You can manipulate database data through func_odbc, you can call a Linux system script and process result, in case if you want to send a notice about event to a web application, you can use a curl function.
No problem to send out email or jabber/google talk notification...
So, why and when you should use AGI? I believe, correct answers are:
- Dial-plan is complex, you have a growing amount of huge macros and contexts;
- System are hosted or cluster with various customers with different needs and functions;
- You do integration with another application or web app and have to process inbound events (and send outbound);
- Want to create an API to support 3rd apps;
- Application API of another application;
- And most important – database is a core part of application and should access data permanently.