Установка Freeswitch и FusionPBX в LXC
Freeswitch - это сервер для IP телефонии, аналог Asteisk. FusionPBX - это админка для управления freeswitch. Установка в LXC контейнер полезна, если вы хотите легко перенести настроенный freeswitch с одного сервера на другой, с сохранением всех настроек.
Установка контейнера
Скачайте LXC шаблон Debian 8 Jessie:
lxc-create -t download -n freeswitch -- -d debian -r jessie -a amd64
Если вы используете LibVirt, пропишите следующие настройки:
sed -i "s|lxc.network.link =.*|lxc.network.link = virbr0|g" /var/lib/lxc/freeswitch/config
virsh net-update default add-last ip-dhcp-host "<host name='freeswitch' ip='10.0.0.150' />" --live --config
Про настройку LibVirt можно прочитать здесь: Настройка сети Libvirt, Установка libvirt на Ubuntu 16.04 и Создание файла lxc
Создайте конфиг LibVirt из LXC config:
virsh -c lxc:/// domxml-from-native lxc-tools /var/lib/lxc/freeswitch/config > ~/freeswitch.xml
Отредактируйте xml файл, командой nano ~/freeswitch.xml
Содержимое файла xml:
<domain type='lxc'>
<name>freeswitch</name>
<uuid>35a17f7c-e38a-4051-b1e1-f9d3ab6b948d</uuid>
<memory unit='KiB'>65536</memory>
<currentMemory unit='KiB'>65536</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64'>exe</type>
<init>/sbin/init</init>
</os>
<idmap>
<uid start='0' target='100000' count='65536'/>
<gid start='0' target='100000' count='65536'/>
</idmap>
<features>
<capabilities policy='allow'>
</capabilities>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/lib/libvirt/libvirt_lxc</emulator>
<filesystem type='mount' accessmode='passthrough'>
<source dir='/var/lib/lxc/freeswitch/rootfs'/>
<target dir='/'/>
</filesystem>
<interface type='network'>
<mac address='00:16:3e:09:96:30'/>
<source network='default' bridge='virbr0'/>
<target dev='vnet0'/>
<guest dev='eth0'/>
<link state='up'/>
</interface>
<console type='pty' tty='/dev/pts/0'>
<source path='/dev/pts/0'/>
<target type='lxc' port='0'/>
<alias name='console0'/>
</console>
</devices>
</domain>
Обратите внимание на секции idmap, interface, console. Задайте в них корректные значения.
Импортируйте конфигурацию:
virsh -c lxc:/// define ~/freeswitch.xml
Запустите контейнер:
virsh -c lxc:/// start freeswitch
Пропишите root пароль для контейнера:
nano /var/lib/lxc/freeswitch/rootfs/etc/shadow
Замените строку root на следующую:
root:$6$jOJaaad3$213aac5XXw7XMVrtI8dPuwyJazAeMOoaq5QOvo.uf/7V70lA3PIsV7WAiM3d1SWPyDkPiVTvizRHta1P7ZyKs/:17541:0:99999:7:::
Это хэш пароля qwerty!2. Сохраните изменения и выйдите из редактора nano.
Подключитесь к гостевой консоли, используя команду:
virsh -c lxc:/// console freeswitch
Введите логин root и пароль qwerty!2. Чтобы отключиться от терминала нужно нажать клавиши Ctrl+5
Настройка контейнера
Установите базовые программы:
apt update && apt-get upgrade -y && apt install -y mc nano htop wget net-tools sudo less aptitude apt-utils
Пропишите следующие содержимое файла nano /etc/apt/sources.list
deb http://deb.debian.org/debian jessie main contrib non-free
deb http://deb.debian.org/debian jessie-updates main contrib non-free
deb http://security.debian.org jessie/updates main contrib non-free
Обновите кэш:
apt update
Установите ssh сервер:
apt install openssh-server
Создайте нового пользователя для подключения через SSH:
useradd -m -s /bin/bash username
usermod -a -G sudo username
Задайте пароль для этого пользователя:
passwd username
Выйдите из логина:
exit
Отключитесь от терминала нажав клавиши Ctrl+5.
Подключитесь к контейнеру через SSH:
ssh username@10.0.0.150
Перейдите под пользователя root:
sudo su
Установка Freeswitch и FusionPBX
apt install -y git
cd /usr/src
git clone https://github.com/fusionpbx/fusionpbx-install.sh.git
chmod 755 -R /usr/src/fusionpbx-install.sh
cd /usr/src/fusionpbx-install.sh/debian
./install.sh