Схемы Что нового

Управление сервером СмИТ Биллинг

Раздел описывает обслуживание сервера СмИТ Биллинг: открытые порты и безопасность, обновление, резервные копии, перенос на другой сервер, диагностику контейнеров и удалённый доступ.

Сервер — стабильность и контроль
Содержание раздела

Настройка сервера

Содержание раздела

Биллинг работает в Docker-контейнерах на сервере под Linux. Сеть, межсетевой экран, время и учётные записи сервера настраиваются средствами операционной системы — у биллинга для этого своего интерфейса нет.

Сеть и адрес сервера

IP-адреса, шлюз и DNS сервера задаются средствами ОС. Биллингу нужен постоянный адрес: на него NAS шлют RADIUS-запросы, на него указывают DNS-записи веб-интерфейса и личного кабинета.

При смене IP-адреса сервера обновите адрес RADIUS-сервера на всех NAS, DNS-записи, а также списки разрешённых адресов у внешних сервисов, которые пускают биллинг по IP (например, API IPTV-платформы).

Безопасность и открытые порты

Межсетевой экран настраивается средствами ОС (ufw, nftables). Биллингу снаружи нужны:

ПортПротоколКому открыть
80, 443TCPВеб-интерфейс и личный кабинет — всем; при желании админку можно ограничить доверенными адресами
1812, 1813UDPRADIUS интернет-доступа — только адресам ваших NAS
2812, 2813UDPRADIUS телефонии — только адресам шлюзов
6812, 6813UDPRADIUS IPTV — только адресам IPTV-платформы
22TCPSSH — только администраторам, по ключам

Исходящие соединения: CoA-команды на NAS (обычно UDP 3799), почта, платёжные системы, сервер лицензий. Сертификат HTTPS ставится на веб-сервер перед контейнером nginx.

Автоперезапуск сервисов

Отдельного модуля-«сторожа» нет: перезапуск выполняет Docker. У всех контейнеров биллинга задана политика restart: unless-stopped — упавший контейнер поднимается сам, а после перезагрузки сервера контейнеры стартуют без участия администратора. База данных и Redis дополнительно проверяются встроенными проверками здоровья Docker.

Оповещения о сбоях

Тревоги биллинг отправляет в рабочий Telegram-чат: падение и восстановление NAS, исчерпание IP-пулов, сбой или пропуск резервной копии, зависание очередей фоновых задач. Чат и бот задаются в Настройки → Интеграции → Telegram. Тревог по нагрузке на сам сервер (процессор, память, место на диске) биллинг не шлёт — их даёт ваша система мониторинга серверов.

Время на сервере

Тарификация, блокировки, журналы и выгрузки СОРМ зависят от точного времени. Включите на сервере синхронизацию времени по NTP (например, chrony или systemd-timesyncd) и задайте часовой пояс ОС. Часовой пояс выгрузок СОРМ задаётся отдельно — в настройке СОРМ.

Настройки (в файле)

Расширенные настройки конфигурируются через переменные окружения (.env) и файл config/settings.py. После редактирования перезапустите контейнеры:

docker compose restart web celery celery-beat

Сервисное обслуживание

Содержание раздела

Регулярные операции обслуживания для обеспечения стабильной работы биллинговой системы.

Обновление биллинга

Обновление выполняется через Docker-образы и Django-миграции:

# Бэкап → обновление → миграция → перезапуск
docker compose exec -T db sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' > backup.sql
docker compose pull
docker compose exec web python manage.py migrate
docker compose exec web python manage.py collectstatic --noinput
docker compose up -d

Рекомендуется выполнять обновления в период минимальной нагрузки (ночные часы).

Перед обновлением убедитесь, что создана актуальная резервная копия и у вас есть доступ к серверу по SSH на случай необходимости восстановления.

Резервное копирование

Управление через веб-интерфейс

Раздел «Резервные копии»: объём копий, сводка, политики и журнал копий
Раздел «Резервные копии» — сводка, политики и журнал копий

Раздел Настройки → Резервные копии (/admin/settings/backup/) открыт только группе «Администратор» и суперпользователям. В нём настраиваются политики копирования (что копировать, куда сохранять — на сервере и в облаке, шифрование паролем, расписание), снимается копия вручную, загружается копия файлом с компьютера и открываются шаги восстановления.

Подробное описание раздела — в справке «Настройки: связь и сервисы» → «Резервные копии»: шифрование, загрузка файлом, восстановление по шагам на сервере.

Копии по расписанию запускает Celery Beat, а снимает воркер celery. Убедитесь, что оба контейнера запущены: если копия не снимается дольше двух периодов расписания, в чат тревог придёт оповещение.

Бекап через командную строку

Для ручного создания бекапов через SSH. Пользователь и имя базы берутся из переменных контейнера db, поэтому команды подходят для любой установки:

# Бэкап БД
docker compose exec -T db sh -c 'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' > backup_$(date +%Y%m%d).sql

# Бэкап конфигурации и данных
docker compose exec web tar czf /tmp/config_backup.tar.gz .env config/ docker/

# Восстановление
docker compose exec -T db sh -c 'psql -U "$POSTGRES_USER" "$POSTGRES_DB"' < backup.sql

Перенос на другой сервер

Порядок переноса: снять полную резервную копию, подготовить новый сервер с Docker, развернуть ту же версию биллинга, восстановить базу и файлы, переключить DNS и адрес RADIUS на NAS, проверить вход и авторизацию тестового клиента. Повторная активация лицензии нужна только при смене домена (см. «Повторная активация»).

Выключение и перезагрузка

Сервер выключается и перезагружается средствами ОС (shutdown, reboot), отдельной кнопки в биллинге нет. Контейнеры поднимутся сами после загрузки. На время перезагрузки RADIUS недоступен: новые подключения клиентов не проходят, поэтому плановые работы лучше проводить ночью и предупреждать дежурных.

Резервная база данных

Встроенного автоматического переключения на резервную базу в биллинге нет. Основная защита данных — резервные копии по расписанию с хранением в облаке. Если нужна «горячая» резервная база, её настраивает администратор PostgreSQL средствами самой СУБД (потоковая репликация), а переключение выполняется вручную.

Наблюдение за работой

Что уже есть в биллинге:

Вкладка «Производительность» показывает снимок на момент открытия — без истории и без тревог. Для истории нагрузки и оповещений подключите сервер к своей системе мониторинга.

Количество клиентов

Сколько клиентов активно и заблокировано, показывает дашборд; подробные срезы — список клиентов с фильтрами.

Расширение лицензии

Чтобы подключить дополнительные модули, обратитесь в отдел продаж, оплатите счёт и активируйте ключ в разделе Лицензия и расширения → Лицензия. Подробнее — на странице Лицензирование.

Повторная активация

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

Управление модулями

Содержание раздела

Система состоит из Docker-контейнеров, управляемых через Docker Compose:

СервисКонтейнерНазначение
dbPostgreSQL 17 (production; репозиторный compose по умолчанию — 16 Alpine)Основная база данных
redisRedis 7 AlpineКэш, сессии, брокер Celery
webPython 3.11 + GunicornВеб-интерфейс (Django 4.2)
celeryPython 3.11Фоновые задачи (тарификация, блокировки, рассылки)
celery-beatPython 3.11Планировщик задач
freeradiusFreeRADIUS 3.2.3Авторизация клиентов (rlm_python3)
nginxNginx 1.25 AlpineReverse proxy, статика, SSL

Управление сервисами:

# Статус всех контейнеров
docker compose ps

# Перезапуск биллинга
docker compose restart web celery celery-beat

# Просмотр логов
docker compose logs -f web
docker compose logs celery --tail=100

Диагностика

Инструменты диагностики Docker-контейнеров:

# Статус контейнеров и health checks
docker compose ps

# Логи конкретного сервиса
docker compose logs web --tail=200
docker compose logs celery --tail=200

# Потребление ресурсов
docker stats

# Подключение к контейнеру
docker compose exec web bash
docker compose exec db sh -c 'psql -U "$POSTGRES_USER" "$POSTGRES_DB"'

Web (Django + Gunicorn)

Основной модуль биллинга. Содержит: веб-интерфейс (AdminLTE 3 + Bootstrap 5.3), REST API v2, SOAP API. Конфигурация через .env и config/settings.py. Перезапуск: docker compose restart web.

Celery (фоновые задачи)

Десятки периодических задач: тарификация, блокировки, RADIUS-синхронизация и авто-назначение NAS, мониторинг NAS и IP-пулов, приём и обработка банковских выписок, push-уведомления, видео и др. (полный список — в config/settings.py::CELERY_BEAT_SCHEDULE). Перезапуск: docker compose restart celery celery-beat.

Удалённый доступ по SSH

Сервер обслуживается по SSH. Рекомендации по безопасности удалённого доступа: