FreePBX запускаем за 10 минут.

Есть много вариантов запуска FreePBX — системы настройки сервера телефонии Asterisk. Мы будем разворачивать нашу систему в Docker

Устанавливаем Docker если он у Вас ещё не установлен. Я не буду тут писать инструкции так как их в интернете куча, например тут. Предполагаю, что Docker Вы уже установили.

Установка FreePBX

Есть небольшая разница в различной установке FreePBX и заключается она в том, куда Вы устанавливаете. На выделенный сервер в сети или на локальную машину. Так же есть ли другие сервисы на машине куда Вы устанавливаете FreePBX которые используют порт 80 (nginx, apache2 и т.п.). В случае если порт 80 уже занят, то в конфигурационном файле FreePBX нельзя указать другой порт web интерфейса FreePBX поскольку он не может корректно работать на другом порту. FreePBX будем делать на основе этого образа: tiredofit/freepbx

Вариант 1. Порт 80 не занят.

Это самое простое, создайте папку freepbx и создайте файл со следующим содержимым:

mkdir freepbx
cd freepbx
nano docker-compose.yaml
version: '2'
services:
  freepbx-app:
    container_name: freepbx
    image: tiredofit/freepbx
    ports:
      - 80:80
      - 5060:5060/udp
      - 5160:5160/udp
      - 18000-18100:18000-18100/udp
      - 4445:4445
    volumes:
      - ./certs:/certs
      - ./data:/data
      - ./logs:/var/log
      - ./data/www:/var/www/html
      - ./db:/var/lib/mysql
    environment:
      - VIRTUAL_HOST=hostname.example.com
      - VIRTUAL_NETWORK=nginx-proxy
      - VIRTUAL_PORT=80
      - ZABBIX_HOSTNAME=freepbx-app
      - RTP_START=18000
      - RTP_FINISH=18100
      - DB_EMBEDDED=TRUE
    restart: always
    networks:
      - proxy-tier
    cap_add:
      - NET_ADMIN
networks:
  proxy-tier:
    external:
      name: netasterisk

сохраняем файл, если у Вас есть уже в Docker созданная Вами сеть, то можно подключиться к ней заменив в конфиге вконце name: netasterisk на Ваше имя сети, если сетей нет то создадим сеть с именем netasterisk

docker network create netasterisk

и запускаем наш контейнер

docker compose up -d

 

Для подключения IP телефонов необходимо чтобы FreePBX и IP-телефон (софтфон) находился в одной сети с FreePBX, если со стороны FreePBX можно сделать настройки NAT для доступа то если телефон находится за NAT то связи не будет, по этому если Вам необходимо иметь доступ к Вашей АТС из интернета то необходимо это делать через VPN сеть. У меня на телефоне стоит OpenVPN клиент и VoIP клиент, на сервере соответственно OPenVPN сервер и VoIP сервер FreePBX
Если FreePBX Вы устанавливаете на VPS сервер или на сервер на котором есть прямой доступ в интернет и доступ к телефонии Вы сделали через VPN то чтобы запретить доступ из интернет (для предотвращения регистрации злоумышленниками и использования Вашей IP-АТС посторонними) то достаточно в конфигурацию docker-compose добавить айпи адрес Вашего VPN

    ports:
      - 192.168.55.1:80:80
      - 192.168.55.1:5060:5060/udp
      - 192.168.55.1:5160:5160/udp
      - 192.168.55.1:18000-18100:18000-18100/udp
      - 192.168.55.1:4445:4445

 

Где 192.168.200.1 — айпи адрес Вашего VPN соединения на стороне FreePBX, у меня FreePBX стоит там же где и VPN сервер. И тогда сервер будет доступен только из VPN сети.

Вариант 2. Порт 80 занят.

в вышеприведенном конфиге надо закоментировать строку

      - 80:80

и сделать перенаправление на хост с FreePBX, например вот так в nginx:

server { server_name freepbx.localhost;
    location / {
      proxy_pass http://freepbx:80/;
      proxy_redirect off;
      proxy_set_header   Host $host;
      proxy_set_header   X-Real-IP $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-NginX-Proxy true;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }

тут в строке proxy_pass http://freepbx:80/; перенаправление по имени контейнера, у меня nginx находится в docker контейнере в той же сети что и FreePBX, если по имени контейнер не доступен то пропишите ip адрес контейнера. Если FreePBX Вы устаноавливаете на удаленном сервере, то справедливо все вышенаписанное, только доступ в вэб панели через параметры ip адреса сервера или зарегистрированного DNS

После запуска контейнера надо подождать от 1 до 20 минут и потом в браузере зайти по адресу: http://localhost/admin если вариант установки 1 и http://freepbx.localhost/admin если перенаправление сделано через nginx по примеру выше

Вводим имя пользователя и два раза пароль, а так же свой e-mail и нажимаем кнопку 

Теперь можно войти в настройки нажав FreePBX Administration

введите ранее заданные имя и пароль

смените языковые настройки в соответствии с Вашими представлениями и нажмите кнопку  и подождите загрузки интерфейса.

 

Теперь нам надо сделать несколько настроек. Интерфейс можно переключить на русский язык. Для этого нажмите на кнопку в верхнем правом углу интерфейса

Добавим внутренние номера, для этого нажмите меню ПриложенияВнутренние номера

нажмите добавить как указано на скриншоте выше и заполните Внутренний номер пользователя (нельзя в будущем изменить) и Отображаемое имя (можно изменить).  И нажмите кнопку Сохранить

Добавьте несколько номеров. Для видеозвонков надо разрешить видеозвонки в меню: Настройки Установки Asterisk для SIP в первой вкладке Общие настройки SIP внизу включите Поддержка видео и выберите используемые кодеки. После чего возможно совершать видеозвонки.

Если необходимо включить текстовые сообщения то зайдите в папку где лежит файл docker-compose.yaml и отредактируйте файлы:

nano ./data/etc/asterisk./sip_general_custom.conf

и вставьте туда следующий код:

accept_outofcall_message = yes
outofcall_message_context = messages
auth_message_requests = no

и файл

nano ./data/etc/asterisk./extensions_custom.conf

вставьте следующий код

[messages]
exten => _XXX,1,MessageSend(sip:${EXTEN},"${CALLERID(name)}"${MESSAGE(from)})

после чего надо перезапустить asterisk

docker exec freepbx asterisk reload

После чего можно подключится к нашему серверу Asterisk, Порт для подключения 5160.

FreePBX запускаем за 10 минут.

Навигация по записям