Установка 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