Thank you for reading this post, don't forget to subscribe!
Freeswitch — это сервер для IP телефонии, аналог Asteisk. FusionPBX — это админка для управления freeswitch. Установка в LXC контейнер полезна, если вы хотите легко перенести настроенный freeswitch с одного сервера на другой, с сохранением всех настроек.
Установка контейнера
Скачайте LXC шаблон Debian 8 Jessie:
1 |
lxc-create -t download -n freeswitch -- -d debian -r jessie -a amd64 |
Если вы используете LibVirt, пропишите следующие настройки:
1 2 |
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:
1 |
virsh -c lxc:/// domxml-from-native lxc-tools /var/lib/lxc/freeswitch/config > ~/freeswitch.xml |
Отредактируйте xml файл, командой nano ~/freeswitch.xml
Содержимое файла xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<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. Задайте в них корректные значения.
Импортируйте конфигурацию:
1 |
virsh -c lxc:/// define ~/freeswitch.xml |
Запустите контейнер:
1 |
virsh -c lxc:/// start freeswitch |
Пропишите root пароль для контейнера:
1 |
nano /var/lib/lxc/freeswitch/rootfs/etc/shadow |
Замените строку root на следующую:
1 |
root:$6$jOJaaad3$213aac5XXw7XMVrtI8dPuwyJazAeMOoaq5QOvo.uf/7V70lA3PIsV7WAiM3d1SWPyDkPiVTvizRHta1P7ZyKs/:17541:0:99999:7::: |
Это хэш пароля qwerty!2. Сохраните изменения и выйдите из редактора nano.
Подключитесь к гостевой консоли, используя команду:
1 |
virsh -c lxc:/// console freeswitch |
Введите логин root и пароль qwerty!2. Чтобы отключиться от терминала нужно нажать клавиши Ctrl+5
Настройка контейнера
Установите базовые программы:
1 |
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
1 2 3 |
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 |
Обновите кэш:
1 |
apt update |
Установите ssh сервер:
1 |
apt install openssh-server |
Создайте нового пользователя для подключения через SSH:
1 2 |
useradd -m -s /bin/bash username usermod -a -G sudo username |
Задайте пароль для этого пользователя:
1 |
passwd username |
Выйдите из логина:
1 |
exit |
Отключитесь от терминала нажав клавиши Ctrl+5.
Подключитесь к контейнеру через SSH:
1 |
ssh username@10.0.0.150 |
Перейдите под пользователя root:
1 |
sudo su |
Установка Freeswitch и FusionPBX
1 2 3 4 5 6 |
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 |