• При разбиении диска на разделы крайне рекомендуется отвести для раздела /var не менее 10 Гигабайт. Если планируется высокая нагрузка, это значение можно увеличить.

  • Рекомендованный дистрибутив FreeBSD 11.0-RELEASE (http://freebsd.org/)

  • Про установку FreeBSD можно почитать здесь FreeBSD Handbook

Скачать образы: Официальный FTP

Скачать FreeBSD 11.0 AMD64

Скачать FreeBSD 11.0 i386


Установка операционной системы


Пошаговая настройка

Обновляем систему и софт 

pkg update && pkg upgrade -y

ABillS

Скачиваем ABillS (сходите сюда и проверьте, нет ли более новой версии):

fetch https://sourceforge.net/projects/abills/files/abills/1.00/abills-1.00.05.tgz

При проблемах с сертификатами, можно: 

а) Обновить сертификаты и попробовать снова (рекомендуется) 

pkg install -y ca_root_nss && fetch https://sourceforge.net/projects/abills/files/abills/1.00/abills-1.00.05.tgz

б) Запустить без их проверки

fetch --no-verify-peer https://sourceforge.net/projects/abills/files/abills/1.00/abills-1.00.05.tgz


Разархивирование:

tar zxvf abills-1.00.05.tgz
cp -Rf abills /usr/

Создаем конфигурационный файл системы :

cp /usr/abills/libexec/config.pl.default /usr/abills/libexec/config.pl

в нем выставляем все под свои нужды

#DB configuration 
$conf{dbhost}='localhost';
$conf{dbname}='abills'; 
$conf{dblogin}='abills';
$conf{dbpasswd}='sqlpassword'; #измените на свой пароль
$conf{ADMIN_MAIL}='info@your.domain'; 

Значение $conf{secretkey} рекомендуется заменить с "test12345678901234567890" на случайную длинную строку. При изменении значения в $conf{secretkey} поменяйте его также в файле /usr/abills/db/abills.sql


Вносим в cron периодические процессы /etc/crontab. Данные программы занимаются контролем состояния сессий (billd), месячной и дневной абонплатой, тарифных планов по расписанию (periodic) 

*/5   *      *    *     *   root    /usr/abills/libexec/billd -all
1     0      *    *     *   root    /usr/abills/libexec/periodic daily
1     1      *    *     *   root    /usr/abills/libexec/periodic monthly

Установить права на чтение и запись веб-сервером для файлов веб-интерфейса

mkdir /usr/abills/backup
chown -Rf www /usr/abills/cgi-bin /usr/abills/Abills/templates /usr/abills/backup /usr/abills/language
mkdir -p /usr/abills/var/log
touch /usr/abills/var/log/sql_errors
chmod 666 /usr/abills/var/log/sql_errors
chown nobody /usr/abills/var/log/sql_errors


MySQL

Устанавливаем пакет:

pkg install -y mysql57-server mysql57-client

Автостарт после перезагрузки. /etc/rc.conf

echo mysql_enable=\"YES\" >> /etc/rc.conf

Запускаем MySQL

/usr/local/etc/rc.d/mysql-server start

Очищаем пароль для комфортной установки (только для 5.7)

mysqladmin -u root --password=`tail -1 /root/.mysql_secret` -h localhost password ""

Создаём пользователя и базу. 

mysql --default-character-set=utf8 -u root

В консоли mysql делаем (Если меняли пароль в /usr/abills/libexec/config.pl, меняем и в запросе): 

  CREATE USER `abills`@localhost  IDENTIFIED BY "sqlpassword" ; -- вместо sqlpassword подставляем своё значение из $conf{dbpasswd}
  GRANT ALL ON abills.* TO `abills`@localhost ; 
  CREATE DATABASE abills DEFAULT CHARACTER SET utf8 COLLATE  utf8_general_ci;
  quit;

Загружаем таблицы в базу.

mysql --default-character-set=utf8 -D abills < /usr/abills/db/abills.sql

Если возникает Invalid default value for 'registration' Выполняем

sed -i -e "1 s/^/SET SQL_MODE='NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO';/;" /usr/abills/db/abills.sql
mysql --default-character-set=utf8 -D abills < /usr/abills/db/abills.sql


Perl modules

Для работы системы нужны Perl модули.

cd /usr/abills/misc/
perl perldeps.pl pkg

Создаём симлинк для исполнительного файла perl

ln -s /usr/local/bin/perl /usr/bin/perl


Web Server (Apache)

Устанавливаем Apache

pkg install -y apache24

Копируем конфиг apache

cp /usr/abills/misc/apache/abills_httpd.conf /usr/local/etc/apache24/Includes/

Раскомментируем модули /usr/local/etc/apache24/httpd.conf

LoadModule rewrite_module libexec/apache24/mod_rewrite.so
LoadModule cgi_module libexec/apache24/mod_cgi.so
LoadModule ssl_module libexec/apache24/mod_ssl.so
LoadModule include_module libexec/apache24/mod_include.so

По умолчанию работаем на HTTPS, поэтому нужны сертификаты.

/usr/abills/misc/certs_create.sh apache 

Для автоматического запуска apache внести изменения в rc.conf

echo apache24_enable=\"YES\" >> /etc/rc.conf   

Создаем каталог для логов веб-сервера Abills

mkdir /var/log/httpd/

Запускаем apache

/usr/local/etc/rc.d/apache24 start


Freeradius

cd /usr/ports/net/freeradius3 && make && make install clean

Ручная конфигурация

копируем конфигурацию

cd /usr/abills/
rm /usr/local/etc/raddb/sites-enabled/*
cp misc/freeradius/v3/mods-enabled/perl /usr/local/etc/raddb/mods-enabled/perl
cp misc/freeradius/v3/mods-enabled/sql /usr/local/etc/raddb/mods-enabled/sql
cp misc/freeradius/v3/sites-enabled/abills_default /usr/local/etc/raddb/sites-enabled/abills_default
cp misc/freeradius/v3/sites-enabled/control-socket /usr/local/etc/raddb/sites-enabled/control-socket
cp misc/freeradius/v3/users /usr/local/etc/raddb/users

В файле /usr/local/etc/raddb/mods-enabled/sql пропишите данные доступа к базе

sql {
        database = "mysql"
        driver = "rlm_sql_${database}"
        server = "localhost"
        port = 3306
        login = "abills"
        password = "sqlpassword" #вместо sqlpassword подставляем своё значение из $conf{dbpasswd}
        radius_db = "abills"
        
В самом конце файла
        '%secretkey%' меняем на ваше значение, которое записано в $conf{secretkey}

Очищаем список серверов доступа из /usr/local/etc/raddb/clients.conf (чтоб не было дубликатов из-за записей в базе):

echo '' > /usr/local/etc/raddb/clients.conf

Автоконфигурация

cd /usr/abills/misc/
./autoconf PROGRAMS=freeradius FREERADIUS=3

нажимаем всюду yes

Запуск

Для автоматического запуска радиуса внести изменения в /etc/rc.conf

echo radiusd_enable=\"YES\" >> /etc/rc.conf

запускаем радиус :

/usr/local/etc/rc.d/radiusd start

Удаление

cd /usr/ports/net/freeradius3 && make deinstall clean
 rm -r /usr/local/etc/raddb

При переустановке очистите конфиг

make clean config


Сборка ядра

Ядро нужно собирать, если планируете шейпить трафик (использовать как сервер доступа) на текущем сервере 
Сборка ядра для управления трафиком :

Перезагружаем сервер и приступаем к установке необходимого софта.

Первые шаги по работе с системой

Первые шаги работы с ABillS

Настройка серверов доступа

Настройка шейпера и маскарада

В системе реализированно несколько вариантов выбирать предпочтительный

Установка ABillS автоинсталятором