Управление сервером СмИТ Биллинг
Раздел описывает обслуживание сервера СмИТ Биллинг: открытые порты и безопасность, обновление, резервные копии, перенос на другой сервер, диагностику контейнеров и удалённый доступ.
Содержание раздела
- Настройка сервера
- Сеть и адрес сервера
- Безопасность и открытые порты
- Автоперезапуск сервисов
- Оповещения о сбоях
- Время на сервере
- Настройки (в файле)
- Сервисное обслуживание
- Обновление биллинга
- Резервное копирование
- Перенос на другой сервер
- Выключение и перезагрузка
- Резервная база данных
- Наблюдение за работой
- Количество клиентов
- Расширение лицензии
- Повторная активация
- Управление модулями
- Диагностика
- Web (Django + Gunicorn)
- Celery (фоновые задачи)
- Удалённый доступ по SSH
Тот же механизм, но нарисованный: узлы можно подсвечивать, связи — разбирать по шагам. Открывается в новой вкладке.
Все схемы системыНастройка сервера
Биллинг работает в Docker-контейнерах на сервере под Linux. Сеть, межсетевой экран, время и учётные записи сервера настраиваются средствами операционной системы — у биллинга для этого своего интерфейса нет.
Сеть и адрес сервера
IP-адреса, шлюз и DNS сервера задаются средствами ОС. Биллингу нужен постоянный адрес: на него NAS шлют RADIUS-запросы, на него указывают DNS-записи веб-интерфейса и личного кабинета.
Безопасность и открытые порты
Межсетевой экран настраивается средствами ОС (ufw, nftables). Биллингу снаружи нужны:
| Порт | Протокол | Кому открыть |
|---|---|---|
| 80, 443 | TCP | Веб-интерфейс и личный кабинет — всем; при желании админку можно ограничить доверенными адресами |
| 1812, 1813 | UDP | RADIUS интернет-доступа — только адресам ваших NAS |
| 2812, 2813 | UDP | RADIUS телефонии — только адресам шлюзов |
| 6812, 6813 | UDP | RADIUS IPTV — только адресам IPTV-платформы |
| 22 | TCP | SSH — только администраторам, по ключам |
Исходящие соединения: 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
Рекомендуется выполнять обновления в период минимальной нагрузки (ночные часы).
Резервное копирование
Управление через веб-интерфейс
Раздел Настройки → Резервные копии (/admin/settings/backup/)
открыт только группе «Администратор» и суперпользователям. В нём настраиваются политики
копирования (что копировать, куда сохранять — на сервере и в облаке, шифрование паролем,
расписание), снимается копия вручную, загружается копия файлом с компьютера и открываются
шаги восстановления.
Подробное описание раздела — в справке «Настройки: связь и сервисы» → «Резервные копии»: шифрование, загрузка файлом, восстановление по шагам на сервере.
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 средствами самой СУБД (потоковая репликация), а переключение выполняется вручную.
Наблюдение за работой
Что уже есть в биллинге:
- Состояние NAS — доступность серверов доступа, простои, SLA;
- Мониторинг оборудования — коммутаторы по SNMP;
- заполнение IP-пулов и оповещения о сбоях в Telegram (см. выше);
- текущая загрузка процессора, памяти и диска — Настройки системы → Производительность;
- журналы приложения — Настройки системы → Логи.
Вкладка «Производительность» показывает снимок на момент открытия — без истории и без тревог. Для истории нагрузки и оповещений подключите сервер к своей системе мониторинга.
Количество клиентов
Сколько клиентов активно и заблокировано, показывает дашборд; подробные срезы — список клиентов с фильтрами.
Расширение лицензии
Чтобы подключить дополнительные модули, обратитесь в отдел продаж, оплатите счёт и активируйте ключ в разделе Лицензия и расширения → Лицензия. Подробнее — на странице Лицензирование.
Повторная активация
Лицензия привязана к домену установки, а не к оборудованию. При переносе на другой сервер с тем же доменом повторно активировать ничего не нужно. Если меняется домен — обратитесь в техническую поддержку, указав ключ лицензии и новый домен.
Управление модулями
Содержание раздела
Система состоит из Docker-контейнеров, управляемых через Docker Compose:
| Сервис | Контейнер | Назначение |
|---|---|---|
| db | PostgreSQL 17 (production; репозиторный compose по умолчанию — 16 Alpine) | Основная база данных |
| redis | Redis 7 Alpine | Кэш, сессии, брокер Celery |
| web | Python 3.11 + Gunicorn | Веб-интерфейс (Django 4.2) |
| celery | Python 3.11 | Фоновые задачи (тарификация, блокировки, рассылки) |
| celery-beat | Python 3.11 | Планировщик задач |
| freeradius | FreeRADIUS 3.2.3 | Авторизация клиентов (rlm_python3) |
| nginx | Nginx 1.25 Alpine | Reverse 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. Рекомендации по безопасности удалённого доступа:
- Используйте вход по ключам и отключите вход по паролю.
- Отключите вход под root напрямую, используйте отдельную учётную запись и sudo.
- Ограничьте доступ по SSH межсетевым экраном — только доверенные адреса.
- Установите fail2ban для защиты от перебора паролей.
- По желанию смените стандартный порт SSH.