Asterisk PBX on Debian Stable Part 1

What this guide is:

This is basically a step by step reference of an Asterisk PBX quick start setup for anybody who wants to try it out, or if you are going to work for a company which sets up Asterisk PBX telephone systems.

What this guide isn’t:

This is by no means a complete guide, although it is an ongoing reference which I will add to it as I see fit.

Asterisk Docs and Info:

Asterisk is a hugely versatile and complete Open Source telephony system which already has its own documentation, man pages (man asterisk), support forums and wiki.

Debian:

This guide supposes that you have Debian Stable (Currently Lenny) installed, either as your main OS or as a server on the network.

Install and test Asterisk: (Do all the following as root, not with sudo)

apt-get install asterisk asterisk-dev asterisk-dbg asterisk-h323 asterisk-mp3 libasterisk-agi-perl asterisk-doc

We use Perl scripts for automated dialers and other advanced options, so I have added the Perl modules, that’s up to you. You may also like to do an “apt-cache search asterisk” if you need any language-specific files. As I am in Spain, I also add “asterisk-prompt-es”.

Test Asterisk (still as root)

asterisk -vvvvc

As I already have Asterisk installed, it automatically loads at boot, so the message I get is that it is already running:

ricpru:~# asterisk –vvvvc
Asterisk already running on /var/run/asterisk/asterisk.ctl.  Use ‘asterisk -r’ to connect.

So I do as it says:

ricpru:~# asterisk -r
Asterisk 1.4.21.2~dfsg-3+lenny1, Copyright (C) 1999 – 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘core show license’ for details.
==============================================
This package has been modified for the Debian GNU/Linux distribution
Please report all bugs to http://bugs.debian.org/asterisk
==============================================
Connected to Asterisk 1.4.21.2~dfsg-3+lenny1 currently running on ricpru (pid = 1844)

And I am left with the Asterisk prompt:

ricpru*CLI>

Asterisk is installed and working!

So now what?

First you need to get used to the config files. Then you need to select a phone. Asterisk works with Softphones , Analogue phones, IP phones, Mobile phones, Fax machines, basically anything that can be connected to a network or has an IP address and can make a call or send data.

Where are the config files?

ls /etc/asterisk

Yup, they all end in .conf and there are loads of them! Don’t panic! We are only going to start with a IAX/SIP Software Phone, which is the most basic to configure.

adsi.conf cdr_odbc.conf  features.conf  logger.conf  phone.conf  skinny.conf adtranvofr.conf  cdr_pgsql.conf   festival.conf  manager.conf  privacy.conf  sla.conf agents.conf         cdr_tds.conf  followme.conf  manager.d  queues.conf  smdi.conf alarmreceiver.conf  codecs.conf  func_odbc.conf  meetme.conf  res_odbc.conf  telcordia-1.adsi alsa.conf           dnsmgr.conf  gtalk.conf  mgcp.conf  res_pgsql.conf   udptl.conf amd.conf  dundi.conf   h323.conf  misdn.conf  res_snmp.conf  users.conf asterisk.adsi enum.conf  http.conf       modules.conf  rpt.conf  voicemail.conf asterisk.conf  esel.conf  iax.conf musiconhold.conf  rtp.conf  vpb.conf cdr.conf  extconfig.conf   iaxprov.conf  muted.conf  say.conf  watchdog.conf cdr_custom.conf  extensions.ael   indications.conf  osp.conf  sip.conf  zapata.conf cdr_manager.conf  extensions.conf  jabber.conf  oss.conf        sip_notify.conf

Software SIP/IAX phones:

Skype, Ekiga, etc etc….. there are loads, Google them and choose what you want. Personally I prefer VoixPhone. It’s easy to install and has a lot of features including IAX and SIP, but it’s all a matter of personal choice. The reason I want a phone with IAX is that we also use those configs for Hard Phones such as the Thomson ST2030 IP phone.

Download VoixPhone from HERE, Unpack it, Chmod -x it, and ./ Install it.

*HINT* I installed VoixPhone to /usr/local/bin as opposed to /usr/local which is the default and created a launcher called voix. This way I can launch the VoixPhone executable as voix from the command line.

Create an empty launcher file:

vim /usr/local/bin/voix

Insert this text:

# cat >/usr/local/bin/voix <<EOF
#!/bin/sh
/usr/local/bin/voixphone/VoixPhone
EOF

Then make it executable:

chmod 755 /usr/local/bin/voix

*64bit Hint* VoixPhone is a 32bit app. If you are running a 64bit system, install the ia32 libs:

apt-get install ia32-libs ia32-libs-gtk

Part 2 – Configuring Asterisk and your new VoixPhone:

PART 2 Coming soon………………………

In the meantime, have a read of this PDF Handbook and My Asterisk Bible :-)

How to create a bootable USB pendrive Debian netinstall

**NOTE 1** There are various ways to create pendrive Linux installs, some work and some fail depending on the pendrive model and also how the computer BIOS boots from USB.
**NOTE 2** This didn’t work with a HP 4Gb pendrive, but did with my Kingston pendrive. Also, it worked with my laptop and netbook but didn’t boot on a RAID Cluster server at work when trying to install Debian Lenny Netinstall.

For other distros with Pendrive Install guides, see the end of this post

1. Insert the USB stick, but do not mount it, yet. If it automounts, unmount it.

2. Get the sid install files (even if you install etch/lenny/squeeze):
a) wget ftp.us.debian.org:/debian/dists/sid/main/installer-i386/\current/images/netboot/debian-installer/i386/linux
b) wget ftp.us.debian.org:/debian/dists/sid/main/installer-i386/\current/images/netboot/debian-installer/i386/initrd.gz
c) wget ftp.us.debian.org:/debian/dists/sid/main/installer-i386/\current/images/netboot/mini.iso

3. Insure these packages are installed on your machine:

apt-get install mbr syslinux mtools -y

4. Apply the following commands, replaceing sdb with the propper device name.

install-mbr /dev/sdb
syslinux /dev/sdb1
mount /dev/sdb1 /media/usb

cp linux initrd.gz mini.iso /media/usb

*NOTE* These are 3 separate commands, do NOT copy, paste and issue as one command. Hit “Enter” after each line.

echo -e "default linux\nappend priority=low vga=normal "\
"initrd=initrd.gz ramdisk_size=12000 root=/dev/ram rw"\
> /media/usb/syslinux.cfg

Now umount from /media/usb
umount /dev/sdb1

Other Distro Pendrive Guides
Crunchbang Statler (Debian Squeeze) http://crunchbanglinux.org/wiki/statler_usb_installation
Crunchbang Statler on EeePc http://richs-lxh.linux-hardcore.com/2010/04/howto_crunchbang-statler-xfce-on-eeepc/
Debian Installer from USB http://linux.derkeiler.com/Mailing-Lists/Debian/2008-02/msg02948.html
Debian on USB + Links http://wiki.debian.org/BootUsb

Howto Create a Custom Debian Installer Netinstall iso

Remote server installations or Custom distro:

This is handy if you need to have preconfigured netinstall isos for remote installations of servers. Or maybe you just want to create a custom Debian based distro. At work I create these isos tailor made to suit our customers needs (more or less) then perform an automated remote installation.

The basic steps:

The basics are that you download a Debian Netinstall iso : http://www.debian.org/CD/netinst/

We mount the iso to a temporary directory, where we insert a “Preseed” file which has our custom settings configured. Then we recreate the iso.

Custom preseed file:

Before doing anything you need to get the example Preseed and edit it to your liking:

http://www.debian.org/releases/lenny/example-preseed.txt

**All of these commands are performed as Root in the /root home directory.**

You know the risks of running as root, and I will take for granted that you are an experienced Linux user who respects the responsibility of being root.

Lets create a custom iso:

Create a temporary direcory to mount the iso:

mkdir -p loopdir

Mount the Debian netinstall iso:

mount -o loop debian_netinstall_iso.iso loopdir

Remove the cd dircetory

rm -rf cd

Recreate a new cd directory:

mkdir cd

Now we Rsync everything over from the loopdir to our new cd directory:

rsync -a -H –exclude=TRANS.TBL loopdir/ cd

Unmount the netinstall iso from loopdir:

umount loopdir

Make a new directory to extract the initrd.gz, change to that directory and extract:

mkdir irmod

cd irmod

**Note**

The initrd.gz for the 64bit Netinstall iso is in /install.amd/. If this command fails it’s becuase it is somewhere else. Just have a look for it and change the command accordingly.

*One command at a time, don’t copy and paste both lines* (arguments are two dashes not one ” – -”)

gzip -d < ../cd/install.amd/initrd.gz | \

cpio –extract –verbose –make-directories –no-absolute-filenames

Now we copy over our custom Preseed file to initrd:

cp ../my_preseed.cfg preseed.cfg

*One command at a time, don’t copy and paste both lines*

find . | cpio -H newc –create –verbose | \

gzip -9 > ../cd/install.amd/initrd.gz

Now we go back to the /root directory and remove the irmod directory:

cd ../

rm -fr irmod/

Change to the cd directory and create an Md5sum:

cd cd

md5sum `find -follow -type f` > md5sum.txt

Back to /root again to create your new iso:

cd ..

*One command at a time, don’t copy and paste both lines*

mkisofs -o name_of_you_iso.iso -r -J -no-emul-boot -boot-load-size 4 \

-boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./cd

Now you have your own custom iso which you can burn to CD or run in VirtualBox or a chosen Emulator. Have a good read of the Preseed documentation as you can configure practically everything on the Netinstall iso, including adding your own custom Debian applications, themes, etc. basically you can go from automated basic netinstall to full blown distro. It’s up to you.