In 2007 I left my job of 13 years and started my own business. I needed a phone system. I knew of Asterisk only in name, having no real previous experience with any PBX or even VoIP. My business partner was looking at a used Merlin system on eBay, but I at least knew that was a terrible idea, and asked for a week to come up with a better solution.
Long story short, I downloaded Asterisk and dove in head first. Once I got a couple of softphones working (and had had a pretty good time doing it) I threw caution to the wind, ordered a Digium TDM card to plug a few POTS lines into, and bought a mess of SIP phones for the office. In just a couple of days I had a completely functional phone system running.
While trying to answer some of my own questions along the way, I started hanging out in the #asterisk IRC channel on Freenode. Once I had a greater understanding of how things worked myself, I noticed a lot of people coming in asking some of the same questions I had.
Asterisk looks a bit intimidating at first, shipping with over 100 config files which drives some people to seek out a GUI like FreePBX to try and make things easier. My goal with this guide was to try and write a decent Asterisk primer for the beginner in such a way that it doesn't seem so overwhelming - a bootstrap of knowledge to get you off and running.
This primer will teach you how to compile, install, and configure a basic Asterisk system from scratch, hopefully giving you an understanding of how the system works as a foundation to explore the rest of it yourself with confidence.
This primer is not going to explain what every single option in every single configuration file does, or what every single module does, etc.
This primer is out-of-date. Quite some time ago Asterisk 12 added the external PJSIP project as a new SIP channel driver, chan_pjsip, and as of Asterisk 17 deprecated the original chan_sip driver which was becoming more and more problematic to extend and maintain. While it is still included in the source and can be compiled and used, chan_sip is slated to be completely removed in Asterisk 21.
This primer is still based on chan_sip, so just be aware. I will at some point re-write this entire primer for PJSIP. I should have done it years ago, but, life and such..