Asterisk for Raspberry Pi on ArchLinux: Difference between revisions
(65 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
If you don't want to follow these instructions and would prefer to download an image you can do so by downloading the image from [[Asterisk for Raspberry Pi Image]]. | If you don't want to follow these instructions and would prefer to download an image you can do so by downloading the image from [[Asterisk for Raspberry Pi Image]]. | ||
The following instructions are based on Arch Linux ARM (archlinux-hf- | The following instructions are based on Arch Linux ARM (archlinux-hf-2013-07-22.img.zip) | ||
= Write Image to SD Card = | = Write Image to SD Card = | ||
Line 7: | Line 7: | ||
Once the image is written insert the SD card into the Raspberry Pi and boot. The device will get an IP address from DHCP. | Once the image is written insert the SD card into the Raspberry Pi and boot. The device will get an IP address from DHCP. | ||
= Update OS = | |||
<pre> | |||
pacman-key --init | |||
pacman -Syu --noconfirm | |||
reboot | |||
</pre> | |||
= Utilities = | |||
Install utilities to help with setup/administration | |||
<pre> | |||
pacman -S --noconfirm vim mlocate zip unzip | |||
</pre> | |||
== vi to vim == | |||
<pre> | |||
pacman -R --noconfirm vi | |||
ln -s /usr/bin/vim /usr/bin/vi | |||
</pre> | |||
== Create ll alias == | |||
<pre> | |||
vi /root/.profile | |||
</pre> | |||
Add the following line | |||
<pre> | |||
alias ll="ls -la --color --group-directories-first --time-style=\"+%Y-%m-%d %H:%M\"" | |||
</pre> | |||
= Time Synchronisation = | |||
<pre> | |||
cp -f /usr/share/zoneinfo/Australia/Brisbane /etc/localtime | |||
</pre> | |||
= Set IP Address = | |||
<pre> | |||
vi /boot/cmdline.txt | |||
</pre> | |||
Add the following text. Make sure there is no carriage return at the end of the file and that everything is located on one line | |||
<pre> | |||
ip=192.168.1.11::192.168.1.254:255.255.255.0:rpi:eth0:off | |||
</pre> | |||
Set DNS Servers, DNS suffix and DNS search. | |||
<pre> | |||
vi /etc/resolv.conf | |||
</pre> | |||
add the lines | |||
<pre> | |||
domain mydomain.com | |||
search mydomain.com | |||
nameserver 192.168.1.254 | |||
</pre> | |||
After reboot check network settings | |||
<pre> | |||
ip addr show dev eth0 | |||
</pre> | |||
other useful commands | |||
<pre> | |||
ip addr add 192.168.17.250/24 dev eth0 | |||
ip route add 192.168.0.0/16 via 192.168.25.253 dev eth0 | |||
ip addr delete 192.168.17.250/24 dev eth0 | |||
ip route delete 192.168.0.0/16 via 192.168.25.253 dev eth0 | |||
</pre> | |||
= Expand Partition = | = Expand Partition = | ||
Line 36: | Line 107: | ||
I would recommend allocating the size of the swap file to be that equal to the RAM size. | I would recommend allocating the size of the swap file to be that equal to the RAM size. | ||
<pre> | <pre> | ||
fallocate -l | fallocate -l 512M /swapfile | ||
chmod 600 /swapfile | chmod 600 /swapfile | ||
mkswap /swapfile | mkswap /swapfile | ||
Line 49: | Line 120: | ||
<pre> | <pre> | ||
/swapfile none swap defaults 0 0 | /swapfile none swap defaults 0 0 | ||
</pre> | </pre> | ||
Line 107: | Line 133: | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
pacman -S --noconfirm alsa-utils | |||
</pre> | </pre> | ||
Test with | |||
<pre> | <pre> | ||
aplay /usr/share/sounds/alsa/Front_Left.wav && aplay /usr/share/sounds/alsa/Front_Center.wav && aplay /usr/share/sounds/alsa/Front_Right.wav | |||
</pre> | </pre> | ||
= | = Regional settings = | ||
Enable AU or country specific entries. | |||
<pre> | <pre> | ||
vi /etc/locale.gen | |||
</pre> | </pre> | ||
<pre> | <pre> | ||
vi /etc/rc.conf | vi /etc/rc.conf | ||
locale-gen | |||
</pre> | </pre> | ||
= Hostname = | = Hostname = | ||
<pre> | <pre> | ||
vi /etc/hostname | vi /etc/hostname | ||
</pre> | </pre> | ||
= Asterisk Packages = | |||
Asterisk uses initscripts to start, stop and manage the asterisk service. This causes a conflict with network and ntpdate. We need to install initscripts but remove the networking and clock functions. | |||
<pre> | <pre> | ||
pacman -S --noconfirm initscripts | |||
</pre> | </pre> | ||
<pre> | <pre> | ||
vi /etc/ | vi /etc/rc.conf | ||
</pre> | </pre> | ||
Remove '''ntpdate''', '''networking''' and '''sshd''' from DEAMONS=() | |||
<br><br> | |||
Install prerequisites for Asterisk. | |||
<pre> | <pre> | ||
pacman -S gcc make hgsvn libxml2 libnewt sqlite subversion mysql spandsp speex | pacman -S --noconfirm gcc make hgsvn libxml2 libnewt sqlite subversion mysql spandsp speex | ||
systemctl enable mysqld.service | systemctl enable mysqld.service | ||
systemctl start mysqld.service | systemctl start mysqld.service | ||
Line 207: | Line 180: | ||
<pre> | <pre> | ||
/usr/bin/mysql_secure_installation | /usr/bin/mysql_secure_installation | ||
</pre> | </pre> | ||
Line 258: | Line 224: | ||
= Sendmail = | = Sendmail = | ||
<pre> | <pre> | ||
pacman -R heirloom-mailx | pacman -R --noconfirm heirloom-mailx | ||
rm /etc/mail.rc.pacsave | rm /etc/mail.rc.pacsave | ||
pacman -S ssmtp | pacman -S --noconfirm ssmtp | ||
</pre> | </pre> | ||
Line 279: | Line 245: | ||
= Install Apache = | = Install Apache = | ||
<pre> | <pre> | ||
pacman -S apache php-apache php php-gd | pacman -S --noconfirm apache php-apache php php-gd | ||
</pre> | </pre> | ||
Line 304: | Line 270: | ||
extension=mysql.so | extension=mysql.so | ||
</pre> | </pre> | ||
Locate date.timezone and change accordingly. | |||
<pre> | |||
date.timezone = Australia/Brisbane | |||
</pre> | |||
For a list of [http://php.net/manual/en/timezones.php time zones] | |||
<pre> | <pre> | ||
Line 345: | Line 318: | ||
Refer to [[Asterisk Backup Shell Script]] for the script itself. | Refer to [[Asterisk Backup Shell Script]] for the script itself. | ||
<pre> | <pre> | ||
pacman -S smbclient | pacman -S --noconfirm smbclient | ||
</pre> | </pre> | ||
= perl = | = perl = | ||
NOTE: To install the perl module requires more RAM that what is available on the | NOTE: To install the perl module requires more RAM that what is available on the 256MB model of the rPi. Make sure you have a swap file otherwise this section will fail. | ||
<pre> | <pre> | ||
pacman -S perl | pacman -S --noconfirm perl perl-yaml libyaml perl-libwww sox mpg123 | ||
</pre> | </pre> | ||
== Text to Speech == | == Text to Speech == | ||
<pre> | <pre> | ||
perl -MCPAN -e "install Bundle::LWP" | PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Bundle::LWP" | ||
perl -MCPAN -e "install CGI::Util" | PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install CGI::Util" | ||
</pre> | </pre> | ||
Line 375: | Line 348: | ||
perl Makefile.PL | perl Makefile.PL | ||
make install | make install | ||
cd.. | cd .. | ||
</pre> | </pre> | ||
<pre> | <pre> | ||
perl -MCPAN -e "install Bundle::LWP" | PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Bundle::LWP" | ||
perl -MCPAN -e "install Proc::WaitStat" | PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Proc::WaitStat" | ||
perl -MCPAN -e "install MIME::Types" | PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install MIME::Types" | ||
</pre> | </pre> | ||
Line 388: | Line 361: | ||
mv fax2mail /usr/sbin/ | mv fax2mail /usr/sbin/ | ||
chmod 755 /usr/sbin/fax2mail | chmod 755 /usr/sbin/fax2mail | ||
mkdir /var/spool/asterisk/fax | mkdir /var/spool/asterisk/fax | ||
</pre> | </pre> | ||
Line 399: | Line 372: | ||
[[Category : Asterisk]] [[Category : Raspberry Pi]] | [[Category : ArchLinux]] [[Category : Asterisk]] [[Category : Raspberry Pi]] |
Latest revision as of 11:30, 12 March 2014
If you don't want to follow these instructions and would prefer to download an image you can do so by downloading the image from Asterisk for Raspberry Pi Image.
The following instructions are based on Arch Linux ARM (archlinux-hf-2013-07-22.img.zip)
Write Image to SD Card
Using Win32DiskImager and the latest version of Arch Linux ARM from Raspberry Pi write the image to the SD card.
Once the image is written insert the SD card into the Raspberry Pi and boot. The device will get an IP address from DHCP.
Update OS
pacman-key --init pacman -Syu --noconfirm reboot
Utilities
Install utilities to help with setup/administration
pacman -S --noconfirm vim mlocate zip unzip
vi to vim
pacman -R --noconfirm vi ln -s /usr/bin/vim /usr/bin/vi
Create ll alias
vi /root/.profile
Add the following line
alias ll="ls -la --color --group-directories-first --time-style=\"+%Y-%m-%d %H:%M\""
Time Synchronisation
cp -f /usr/share/zoneinfo/Australia/Brisbane /etc/localtime
Set IP Address
vi /boot/cmdline.txt
Add the following text. Make sure there is no carriage return at the end of the file and that everything is located on one line
ip=192.168.1.11::192.168.1.254:255.255.255.0:rpi:eth0:off
Set DNS Servers, DNS suffix and DNS search.
vi /etc/resolv.conf
add the lines
domain mydomain.com search mydomain.com nameserver 192.168.1.254
After reboot check network settings
ip addr show dev eth0
other useful commands
ip addr add 192.168.17.250/24 dev eth0 ip route add 192.168.0.0/16 via 192.168.25.253 dev eth0 ip addr delete 192.168.17.250/24 dev eth0 ip route delete 192.168.0.0/16 via 192.168.25.253 dev eth0
Expand Partition
Now that the device has booted log on and change the default partition from 2 GB to the maximum partition of your SD card.
fdisk /dev/mmcblk0 d (delete) 2 (partition 2) n (new) p (primary partition) 2 (partition 2 as previously deleted) enter (accept default start sector) enter (accept default end sector) w (write changes) reboot
Once the rPi has rebooted
resize2fs /dev/mmcblk0p2 reboot
Swap File
As the rPi has limited RAM, either 256 or 512 depending on your version we'll create a swap file to allow application to use higher memory if required.
I would recommend allocating the size of the swap file to be that equal to the RAM size.
fallocate -l 512M /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile
The swap file is now active. We now need to ensure that it is used at boot.
vi /etc/fstab
add the line to the file
/swapfile none swap defaults 0 0
Enable Sound Card
vi /etc/rc.conf
add the line
MODULES=(snd-bcm2835)
pacman -S --noconfirm alsa-utils
Test with
aplay /usr/share/sounds/alsa/Front_Left.wav && aplay /usr/share/sounds/alsa/Front_Center.wav && aplay /usr/share/sounds/alsa/Front_Right.wav
Regional settings
Enable AU or country specific entries.
vi /etc/locale.gen
vi /etc/rc.conf locale-gen
Hostname
vi /etc/hostname
Asterisk Packages
Asterisk uses initscripts to start, stop and manage the asterisk service. This causes a conflict with network and ntpdate. We need to install initscripts but remove the networking and clock functions.
pacman -S --noconfirm initscripts
vi /etc/rc.conf
Remove ntpdate, networking and sshd from DEAMONS=()
Install prerequisites for Asterisk.
pacman -S --noconfirm gcc make hgsvn libxml2 libnewt sqlite subversion mysql spandsp speex systemctl enable mysqld.service systemctl start mysqld.service
Secure mysql
/usr/bin/mysql_secure_installation
Install Asterisk
Download and install Asterisk. You can refer to Asterisk Install if required, but only Asterisk is required.
Set Asterisk to Automatic
vi /etc/rc.conf
and add asterisk to DEAMONS
logrotate
/etc/logrotate.d/asterisk
add the following lines to the file
/var/log/asterisk/messages /var/log/asterisk/*log { missingok notifempty rotate 12 weekly create 0640 root root postrotate /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null endscript }
logger
vi /etc/asterisk/logger.conf
change from:
;dateformat=%F %T
to
dateformat=%F %T %Z
Sendmail
pacman -R --noconfirm heirloom-mailx rm /etc/mail.rc.pacsave pacman -S --noconfirm ssmtp
vi /etc/ssmtp/ssmtp.conf
and add the lines
mailhub=192.168.13.3 hostname=rpi.klaverstyn.com FromLineOverride=yes
Edit aliases if required
vi /etc/ssmtp/revaliases
Install Apache
pacman -S --noconfirm apache php-apache php php-gd
vi /etc/httpd/conf/httpd.conf
and modify the following
AllowOverride All DirectoryIndex index.php index.html index.htm index.html.var
systemctl enable httpd.service
Configure php
vi /etc/php/php.ini
uncomment
extension=mysqli.so extension=mysql.so
Locate date.timezone and change accordingly.
date.timezone = Australia/Brisbane
For a list of time zones
vi /etc/httpd/conf/httpd.conf
add the following lines in thier respective sections
LoadModule php5_module modules/libphp5.so Include conf/extra/php5_module.conf AddHandler application/x-httpd-php .php
uncomment the following lines
TypesConfig conf/mime.types MIMEMagicFile conf/magic
vi /etc/httpd/conf/mime.types
add the following line
application/x-httpd-php5 php php5
systemctl start httpd.service
Note: The web root is /srv/http/
CDR
Refer to the Call Detail Records page which will allow Asterisk to write the CDR records to the database.
aCDR
aCDR is a web appliction that allows you to search throught your CDR records. View the aCDR page on installation.
Backup Script
Refer to Asterisk Backup Shell Script for the script itself.
pacman -S --noconfirm smbclient
perl
NOTE: To install the perl module requires more RAM that what is available on the 256MB model of the rPi. Make sure you have a swap file otherwise this section will fail.
pacman -S --noconfirm perl perl-yaml libyaml perl-libwww sox mpg123
Text to Speech
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Bundle::LWP" PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install CGI::Util"
wget https://github.com/zaf/asterisk-googletts/blob/master/googletts.agi mv googletts.agi /var/lib/asterisk/agi-bin/ chmod 755 /var/lib/asterisk/agi-bin/googletts.agi
fax2mail
cd /usr/src wget http://search.cpan.org/CPAN/authors/id/R/RO/ROSCH/mime-construct-1.11.tar.gz tar xzvf mime-construct-1.11.tar.gz rm -f mime-construct-1.11.tar.gz cd mime-construct-1.11 perl Makefile.PL make install cd ..
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Bundle::LWP" PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install Proc::WaitStat" PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "install MIME::Types"
wget http://www.klaverstyn.com.au/david/asterisk/files/fax2mail mv fax2mail /usr/sbin/ chmod 755 /usr/sbin/fax2mail mkdir /var/spool/asterisk/fax
Reference
http://wiki.archlinux.org/index.php/Systemd
http://wiki.archlinux.org/index.php/Configuring_Network
http://wiki.archlinux.org/index.php/Beginners%27_Guide
http://wiki.archlinux.org/index.php/LAMP#PHP
http://raw.github.com/Evilpaul/RPi-config/master/config.txt