Установить LANBilling на FreeBSD 13

  1. Системные требования
  2. Установить дополнительные пакеты
  3. Подготовить сетевые порты
  4. Установить и настроить MySQL-сервер
  5. Установить и настроить веб-сервер
  6. Скачать компоненты LANBilling
  7. Установить LBcore — ядро LANBilling
  8. Настроить ротацию лог-файлов
  9. Установить административный интерфейс 3.x
  10. Активировать лицензионный ключ
  11. Создать агенты и установить их модули
  12. Установить личный кабинет абонента 3.x

Системные требования

Определите, какие версии модулей LANBilling хотите установить, и по таблице совместимости подберите компоненты ОС.

Как правило, требуются следующие компоненты:

  • СУБД MySQL 5.7.x (ссылка на установку)
  • Веб-сервер Apache
  • PHP 8.x и его библиотеки: (ссылка на установку)
    • soap
    • gd
    • iconv
    • mbstring
    • sockets
    • bcmath
    • mysqli
    • curl
    • ghostscript — чтобы генерировать шаблоны в формате pdf
    • pdftk — чтобы «склеивать» pdf-документы в один файл
  • Python 3.x
  • OpenSSL

Установить дополнительные пакеты

Вам потребуются:

  • python3-simplejson и python3-requests — для некоторых скриптов платёжных систем. Для установки требуется Python 3.8. Чтобы узнать актуальное название библиотеки, воспользуйтесь командой:

    pkg search simplejson
    pkg search "py.*requests"
    
    
    
  • p5-IO-SessionData и p5-SOAP-Lite — для cgi-скриптов платёжных систем.

  • logrotate — утилита ротации логов. Она должна быть на каждом сервере, где будут установлены компоненты LANBilling.

  • dirmngr — служба для управления сетевыми сертификатами.

  • zstd — архиватор.

  • nano — текстовый редактор.

  • wget — программа для загрузки файлов.

Чтобы установить дополнительные пакеты, введите команду:

pkg install -y py39-simplejson py39-requests p5-IO-SessionData p5-SOAP-Lite logrotate dirmngr zstd nano wget

Подготовить сетевые порты

  1. Список портов, которые LANBilling использует по умолчанию.
  2. Настроить порты для исходящих соединений.

Список портов, которые LANBilling использует по умолчанию

Направление Сервер Протокол Номер порта Описание
На вход Сервер, на котором установлены lbweb-admin и lbweb-client HTTP\HTTPS 80 (443) Доступ к административному интерфейсу и личному кабинету
На вход Сервер LBcore JSON\JSON-SSL 1502 (1503) Связь LBcore с модулями агентов и административным интерфейсом
На вход Сервер LBcore SOAP 34012 Связь LBcore с личным кабинетом и доступ по API
На вход Сервер БД MySQL 3306 Используется, если MySQL находится на отдельном сервере. LBcore и модули агентов должны иметь доступ к этому порту. Обратите внимание: MySQL по умолчанию прослушивает только 127.0.0.1 (параметр bind)
На вход Сервер, на котором установлен модуль LBarcd RADIUS 1812\UDP и 1813\UDP 1812\UDP — для авторизации; 1813\UDP — для аккаунтинга
На вход Сервер, на котором установлен модуль LBucd NetFlow 7223\UDP Сбор статистики о трафике
На выход До сервера lic.lanbilling.ru Лицензирование 34100 во внешнюю сеть Активация лицензионного ключа
На выход До серверов сервиса DaData HTTP\HTTPS 80 (443) Заполнение данных пользователя по ИНН, подсказки для полей «БИК» и «Название банка»

Настроить порты для исходящих соединений

Ограничьте диапазон выдаваемых портов. Если этого не сделать, могут возникнуть сбои — например, LBcore попытается дважды подключиться к одному порту, и все процессы будут заблокированы.

  1. Выполните команды:

    sysctl net.inet.ip.portrange.first=35000
    sysctl net.inet.ip.portrange.last=60999
    sysctl net.inet.ip.portrange.randomized=0
    

    ``

  2. Чтобы настройки не сбились после перезагрузки, добавьте их в файл sysctl.conf. Откройте файл:

    nano /etc/sysctl.conf
    

    ``

    Добавьте в него строки с диапазонами портов:

    sysctl net.inet.ip.portrange.first=35000
    sysctl net.inet.ip.portrange.last=60999
    sysctl net.inet.ip.portrange.randomized=0
    

    ``

Установить и настроить MySQL-сервер

  1. Установить MySQL-сервер.
  2. Настроить MySQL-сервер.
  3. Запустить MySQL-сервер.

Установить MySQL-сервер

Выполните команду:

pkg install -y mysql80-server

Настроить MySQL-сервер

  1. Откройте файл my.cnf:

    nano /usr/local/etc/mysql/my.cnf
    

    ``

  2. Конфигурационный файл может быть не пустым. В этом случае обратите внимание на 4 параметра:

    • lower_case_table_names — установите значение «0». Этот параметр приводит имена таблиц к нижнему регистру. Если его не выключить, возникнут проблемы при обновлении таблиц.
    • key_buffer_size — рекомендуем «64M».
    • innodb_buffer_pool_size — рекомендуем «512M».
    • innodb_flush_method — убедитесь, что установлено значение «O_DIRECT».

    Пример конфигурации:

    [mysqld]
    lower_case_table_names = 0
    collation-server = utf8_general_ci
    character-set-server = utf8
    default-authentication-plugin = mysql_native_password
    character-sets-dir = /usr/share/mysql/charsets
    skip-character-set-client-handshake
    skip-name-resolve
    innodb_file_per_table = ON
    ssl = 0
    #For 8.x
    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    #For 5.7
    #sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
    innodb_stats_on_metadata = 0
    group_concat_max_len = 1000000000
    enforce_gtid_consistency = OFF
    gtid_mode = OFF
    performance_schema = OFF
    explicit_defaults_for_timestamp
    key_buffer_size = 64M
    max_heap_table_size = 128M
    tmp_table_size = 128M
    innodb_buffer_pool_size = 512M
    innodb_buffer_pool_instances = 1
    innodb_log_file_size = 64M #Не нужно изменять без существенной необходимости
    slow_query_log = 1
    innodb_flush_method=O_DIRECT
    innodb-flush-log-at-trx-commit = 2
    disable-log-bin
    

    ``

  3. В стандартной конфигурации бинарное логирование выключено — параметр disable-log-bin.

    Чтобы включить бинарное логирование, удалите эту строку и добавьте два параметра: log-bin и log_bin_trust_function_creators.

    #disable-log-bin
    log-bin = mysql-bin
    log_bin_trust_function_creators = 1
    

    Опции для настройки бинарного логирования

Запустить MySQL-сервер

  1. Добавьте MySQL в автозагрузку:

    sysrc mysql_enable=yes
    

    ``

  2. Для запуска используйте команду:

    service mysql-server start
    

    ``

  3. Все дальнейшие действия будут выполняться от имени пользователя root. Если хотите задать свой пароль, введите команду:

    mysqladmin -p password
    

    ``

    В строке Enter password нажмите Enter, так как при установке MySQL был установлен пустой пароль.

    В строке New password введите новый пароль или нажмите Enter, чтобы оставить пароль пустым.

    В строке Confirm new password ещё раз введите новый пароль или снова нажмите Enter, чтобы оставить его пустым.

Установить и настроить веб-сервер

  1. Установить Apache2 и PHP.
  2. Настроить Apache2.
  3. Настроить PHP.
  4. Перезапустить Apache2.

Установить Apache2 и PHP

  1. Установите SSL:

    pkg install -y openssl
    

    ``

  2. Установите Apache2:

    pkg install -y apache24
    

    ``

  3. Добавьте Apache2 в автозагрузку:

    sysrc apache24_enable=yes
    

    ``

  4. Установите PHP:

    pkg install -y php82 mod_php82 php82-extensions php82-soap php82-gd php82-iconv php82-mbstring php82-sockets php82-bcmath php82-mysqli php82-curl ghostscript10 pdftk
    

    ``

Настроить Apache2

  1. Откройте файл httpd.conf:

    nano /usr/local/etc/apache24/httpd.conf
    

    ``

  2. Найдите разделы, перечисленные ниже. Убедитесь, что в них есть указанные строки. Если нет, добавьте или измените их.

    <IfModule mime_module>
    AddType application/x-httpd-php .php
    
    <IfModule dir_module>
    DirectoryIndex index.html index.php
    
    <Directory "/usr/local/www/apache24/data">
    AllowOverride All
    

    ``

Настроить PHP

  1. Скопируйте файл с настройками:

    cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
    

    ``

  2. Откройте файл php.ini:

    nano /usr/local/etc/php.ini
    

    ``

  3. В файле уже заданы параметры. Раскомментируйте их и приведите к этим значениям:

    date.timezone = Europe/Moscow
    max_execution_time = 3600
    default_socket_timeout = 3600
    max_input_vars = 10000
    memory_limit = 1024M
    

    ``

    В параметре date.timezone укажите свою временную зону. Полный список зон можно посмотреть здесь.

Перезапустить Apache2

После всех изменений перезапустите веб-сервер — введите команду:

service apache24 restart

Скачать компоненты LANBilling

Дистрибутив LANBilling для FreeBSD 13 распространяется в виде бинарных pkg-пакетов.

Вам потребуются:

  • пакет LBcore сборки 2.0.46 — чтобы установить ядро LANBilling;

  • пакеты lbweb-common и lbweb-admin — чтобы установить административный интерфейс;

  • пакеты lbweb-common и lbweb-client — чтобы установить личный кабинет для абонентов;

  • установочные пакеты для модулей агентов — например, LBucd для Netflow и LBarcd для RADIUS. Конкретный список модулей зависит от того, какие платформы вы будете использовать.

    Платформа Агент Модуль
    Платформа «интернет», DialUp, авторизация абонентов RADIUS LBarcd
    Платформа «интернет», широкополосный доступ, без авторизации Netflow LBucd
    Телефония LBphone LBphone
    IP-телефония VoIP LBircd

В названии пакета содержатся основные сведения о нём. Рассмотрим на примере lbcore-2.0.46.0_7.git34a767b5.freebsd13.amd64.pkg:

  • lbcore — название модуля
  • 2.0.46 — версия и номер релиза
  • 0 — порядковый номер прохождения полного тестирования (начиная с 0)
  • 7 — количество изменений с момента релиза (начиная с 1)
  • git34a767b5 — номер ревизии модуля
  • freebsd13.amd64 — ОС, для которой собран пакет

Скачайте пакеты из личного кабинета в Satisfy CRM.

  1. В личном кабинете перейдите на вкладку «Загрузки».

  2. Нажмите image в строке с названием пакета.

  3. Перенесите пакет на сервер, где будете устанавливать модуль.

Установить и запустить LBcore

  1. Установите LBcore.
  2. Создайте базу данных.
  3. Настройте LBcore.
  4. Запустите LBcore.

Установить LBcore

LBcore — модуль ядра LANBilling. В этой инструкции предполагается, что вы устанавливаете MySQL и LBcore на один сервер.

  1. Убедитесь, что уже установили:

  2. Установите пакет ядра. Пример:

    pkg add lbcore-2.0.46.0_7.git34a767b5.freebsd13.amd64.pkg
    

    ``

  3. После установки пакета создаётся образец файла конфигурации. Создайте из него рабочий файл конфигурации:

    cp /etc/billing.conf.sample /etc/billing.conf
    

    ``

Создать БД LBcore

  1. Зайдите в MySQL под пользователем root — команда mysql. Если вы задавали пароль — mysql -p%пароль%.

  2. Создайте пустую базу данных и предоставьте пользователю права администратора:

    CREATE DATABASE billing DEFAULT CHARSET utf8;
    CREATE USER IF NOT EXISTS 'billing'@'localhost' IDENTIFIED WITH mysql_native_password BY 'billing';
    CREATE USER IF NOT EXISTS 'billing'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'billing';
    GRANT ALL ON `billing`.* TO 'billing'@'localhost';
    GRANT ALL ON `billing`.* TO 'billing'@'127.0.0.1';
    exit
    

    ``

    Разрешённые символы для логинов, паролей и названия БД:

    • латинские буквы
    • цифры
    • пробел
    • ! " $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _` { | } ~
    • # (на любой позиции, кроме первой)

  3. Создайте структуру БД с помощью скрипта create.sql:

    mysql billing < /usr/local/billing/mysql/create.sql
    

    ``

Настроить LBcore

  1. Откройте файл billing.conf:

    nano /etc/billing.conf
    

    ``

    Убедитесь, что указаны параметры доступа, которые вы задавали при создании БД. Если нет, исправьте их. Данные должны быть в формате mysql://dbuser:dbpass@dbhost:dbport/dbname.

    • dbuser и dbpass — логин и пароль администратора.
    • dbhost — IP-адрес сервера, где установлена БД.
    • dbport — номер порта.
    • db_name — имя БД.

    Если не указать dbport, будет использоваться порт 3306. Пример для случая, когда LBcore и MySQL установлены на одном сервере и используется порт по умолчанию:

    # DB access parameters
    database = mysql://billing:billing@127.0.0.1/billing
    

    ``

  2. Загрузите каталог телефонных кодов, если будете использовать платформу «телефония»:

    mysql -u root -p -A billing < /usr/local/billing/mysql/catalog.sql
    

    ``

  3. Загрузите справочник адресов — КЛАДР:

    mysql -u root -p -A billing < /usr/local/billing/mysql/claddr.sql
    

    ``

Запустить LBcore

  1. Добавьте ядро в автозагрузку:

    sysrc lbcore_enable=yes
    

    ``

  2. Запустите модуль ядра:

    service lbcore start
    

    ``

Настроить ротацию лог-файлов

  1. Убедитесь, что на сервере установлены logrotate и zstd:

    pkg info logrotate
    pkg info zstd
    

    ``

    Если этих утилит нет, установите их:

    pkg install logrotate zstd
    

    ``

  2. Лог-файлы по умолчанию находятся в директории /var/log/billing/. Настройте их ротацию одним из двух способов.

    • Способ 1: воспользуйтсь утилитой logrotate. Этот способ подойдёт, если объём логов небольшой. По умолчанию logrotate прописывается в cron.daily и запускается каждый день в 03:01.

      Пример настройки ротации логов находится в файле lbrotate.conf. Скопируйте его в директорию /logrotate/:

      cp /etc/lanbilling/lbrotate.conf /usr/local/etc/logrotate.d/lbrotate.conf
      
      
      
    • Способ 2: вручную добавьте задание в планировщик cron. Этот способ удобен, если за сутки накапливается большой объём логов. Вы сможете выбрать произвольный интервал для ротации — например, каждый час.

      Откройте планировщик с помощью команды crontab -e и добавьте задание:

      0 * * * * root /usr/local/sbin/logrotate /etc/lanbilling/lbrotate.conf
      
      
      

Установить административный интерфейс 3.x

Административный интерфейс — веб-приложение, в котором работает оператор связи. Например, системные администраторы задают в нём настройки сети, а менеджеры оператора создают профили абонентов и следят за списаниями.

Обратите внимание: для первого старта интерфейс нужно установить на том же сервере, что и ядро. По умолчанию LBcore принимает запросы только с localhost или 127.0.0.1. В дальнейшем вы можете развернуть административный интерфейс на другом хосте.

  1. Убедитесь, что уже установили и настроили:

  2. Убедитесь, что скачали пакеты lbweb-common и lbweb-admin. Процесс установки описан исходя из того, что они сохранены на сервере в директории /root/.

  3. Установите пакеты lbweb-common и lbweb-admin. Пример:

    pkg add /root/lbweb-common-2.21.1_1.202204140013git532675b86729.txz
    pkg add /root/lbweb-admin-3.45.0_1.202302060901git90726f1f16e6.txz
    

    ``

  4. При установке пакета создаётся пример файла конфигурации. Создайте из него файл конфигурации:

    cp /usr/local/etc/lanbilling/phpclient/admin/admin.ini.sample /usr/local/etc/lanbilling/phpclient/admin/admin.ini
    

    ``

  5. Сериализуйте файл конфигурации:

    /usr/local/sbin/lbwebcfg -y admin /usr/local/etc/lanbilling/phpclient/admin/
    

    ``

  6. Скопируйте файлы конфигурации веб-сервера:

    cp /usr/local/etc/lanbilling/phpclient/apache2/lbweb-admin.apache2.sample /usr/local/etc/apache24/Includes/lbweb-admin.conf
    

    ``

  7. Перезапустите веб-сервер, чтобы применить настройки:

    service apache24 restart
    

    ``

Административный интерфейс установлен. Он доступен по адресу http://%IP-адрес-сервера%/lbweb-admin. По умолчанию для входа используется логин admin, без пароля.

Если вы будете работать с административным интерфейсом на том же сервере, где установлено ядро, просто активируйте лицензионный ключ.

Если вы будете использовать другой сервер, сначала установите на нём веб-сервер и административный интерфейс. Затем активируйте лицензионный ключ.

Активировать лицензионный ключ

После покупки LANBilling оператор получает ключ активации — он доступен в личном кабинете Satisfy CRM.

Порядок действий:

  1. Убедитесь, что на сервере LBcore открыт доступ к серверу lic.lanbilling.ru и порт 34100.

  2. Авторизуйтесь в административном интерфейсе. Для самой первой авторизации пароль не нужен — введите логин admin и нажмите «Войти».

  3. В административном интерфейсе укажите название оператора.

    Указать название оператора
  4. Активируйте лицензионный ключ. Обратите внимание: если вы сначала активируете ключ, а потом переименуете оператора — понадобится новый ключ.

    Активировать лицензионный ключ

Создать агенты и установить их модули

С помощью агентов LANBilling обменивается данными с операторским оборудованием — это позволяет собирать информацию о трафике и тарифицировать услуги.

Прежде чем устанавливать модули для агентов, убедитесь, что выполнили обязательные шаги.

  1. Заранее скачали пакеты модулей и перенесли на те серверы, где будете их устанавливать.
  2. Установили MySQL-сервер.
  3. Установили веб-сервер.
  4. Установили модуль ядра — LBcore.
  5. Установили административный интерфейс.
  6. Активировали лицензионный ключ.

Дальнейшие действия зависят от того, какой агент вам нужен.

Агент Описание Модуль
RADIUS Для платформы «интернет». Он служит для авторизации абонента и оборудования на сервере, а также для обработки абонентского соединения LBarcd
Netflow Для платформы «интернет». Отвечает за подсчёт трафика, не проводит авторизацию абонентов LBucd
LBphone Для телефонии. С его помощью LANBilling получает от АТС статистическую информацию о звонках в виде CDR-файлов LBphone
VoIP Для IP-телефонии. Обработка звонков происходит по протоколу RADIUS LBircd

Если вы устанавливаете модуль агента на отдельный сервер (не туда же, где установлен LBcore), настройте на этом сервере ротацию лог-файлов.

Установить личный кабинет абонента 3.x

Личный кабинет — веб-интерфейс для абонентов. Например, в личном кабинете абоненты могут подключать новые услуги или переходить с одного тарифа на другой.

  1. Убедитесь, что уже установили и настроили:

  2. Если вы устанавливаете личный кабинет на том же сервере, что и административный интерфейс, вам потребуется только пакет lbweb-client. Если хотите использовать другой сервер, скачайте и установите lbweb-common и lbweb-client. Пример:

    pkg add /root/lbweb-common-2.21.1_1.202204140013git532675b86729.txz
    pkg add /root/lbweb-client-3.45.0_1.202302060908git5a8825efcf88.txz
    

    ``

  3. Добавьте конфигурацию личного кабинета в настройки веб-сервера:

    cp /usr/local/etc/lanbilling/phpclient/apache2/lbweb-client.apache2.sample /usr/local/etc/apache24/Includes/lbweb-client.conf
    

    ``

  4. Перезапустите веб-сервер:

    service apache24 restart
    

    ``

Личный кабинет установлен. Он доступен по адресу http://%IP-адрес-сервера%/lbweb-client/. Настройка личного кабинета описана здесь.