Документация

SAMM документация

Полное руководство оператора — от первой установки до повседневной работы.

25 тем 8 разделов Установка одной командой
Быстрая установка

В сети за считанные минуты, из одной команды.

Выполните одну строку на чистом сервере Ubuntu или Debian — загрузчик получит последний релиз и установит для вас весь стек SAMM.

Прочитать полное руководство по установке
install.sh — bash
curl -fsSL https://samm.securytik.com/install.sh | sudo bash

Начало работы

Обзор & архитектура

SAMM — SecuryTik Active Mikrotik Manager — это полноценная платформа управления для интернет-провайдеров на сетях MikroTik PPPoE и Hotspot. Один установщик превращает чистый сервер Linux в полную систему AAA, биллинга и управления абонентами.

Для кого предназначен SAMM

SAMM создан для беспроводных интернет-провайдеров, операторов оптоволокна и провайдеров hotspot, работающих на MikroTik RouterOS. Если вы аутентифицируете абонентов через PPPoE или Hotspot и вам нужно применять тарифы скорости, лимиты трафика, сроки действия и биллинг — SAMM делает всё это с одного экрана.

Как это работает

SAMM держит горячий путь рядом с базой данных. FreeRADIUS обрабатывает каждый пакет аутентификации и учёта; при каждом Interim-Update учёта он вызывает функции PostgreSQL напрямую, чтобы накапливать потребление и вычислять лимиты — пока абоненты онлайн, нет обращений к Python.

Четыре исполнительных уровня взаимодействуют через единую базу данных:

  • FreeRADIUS (unlang + rlm_sql) — authenticates every packet; on each Interim-Update it accumulates bytes/uptime and evaluates limits inside Postgres.
  • samm-radius — runs time-driven sweeps (expiry, daily reset, speed windows) and is the only process that sends Change-of-Authorization packets.
  • samm-worker — pings routers and syncs MikroTik device metadata over the API.
  • samm-api — the admin & customer portals; admin actions are queued to the database and applied by samm-radius, never sent as CoAs directly.

Пять служб

СлужбаРоль
samm-apiПортал администратора + клиентский портал самообслуживания + REST API
samm-radiusОпустошает очередь CoA; выполняет обходы для истечения срока / ежедневного сброса / окон скорости
samm-workerПингует роутеры; синхронизирует метаданные устройств MikroTik через API
samm-notificationДоставляет уведомления по email и Telegram через одну очередь с ограничением скорости
samm-telegramЗапускает интерактивный бот самообслуживания в Telegram

Что делает SAMM

Ядро AAA

Аутентификация PPPoE и Hotspot, применение скорости для каждого пользователя, гибридный CoA.

Тарифы & ограничения

Тарифы скорости плюс четыре независимых лимита и запланированные окна скорости.

Абоненты

Пользователи PPPoE/Hotspot плюс предоплаченные ваучерные карты hotspot с печатными PDF.

Оплата

Тарификация по планам, автоматические счета, книга учёта поступлений/платежей/расходов с двойной записью.

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

Клиентский веб-портал и Telegram-бот для потребления, счетов и заявок.

Эксплуатация

Актуальная инвентаризация MikroTik, администраторы с ролями, резервное копирование и восстановление, массовые инструменты.

Система

Встроенный WireGuard VPN, Cloudflare Tunnel, шесть языков, интерфейс с настраиваемыми темами.

Уведомления

Оповещения о продлении, истечении срока, квоте и поступлениях по email и Telegram.

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

Начало работы

Установка

SAMM устанавливает всё необходимое — FreeRADIUS, PostgreSQL, nginx, WireGuard, cloudflared и пять служб SAMM — за один шаг. Установщик идемпотентен: повторный запуск обновляет существующую установку на месте и никогда не перезаписывает вашу конфигурацию и не пересоздаёт пароль базы данных.

SAMM работает где угодно — выберите способ установки, подходящий вашей сети:

  • Вариант A / B — чистый сервер Linux (рекомендуется для продакшена): установка одной командой или вручную на Ubuntu / Debian.
  • Вариант C — Docker Compose: тот же SAMM в контейнерах; мультиархитектурный (amd64 + arm64), поэтому работает на Ubuntu, Windows Docker Desktop, Mac на Apple-silicon — где угодно.
  • Вариант D — контейнер MikroTik RouterOS 7: вставьте compose YAML прямо в ваш роутер. Внешний сервер Linux не нужен.

Предварительные требования

  • Чистый сервер: Ubuntu 22.04 LTS, Ubuntu 24.04 LTS или Debian 12. Только серверные редакции Linux — настольные варианты не поддерживаются.
  • Доступ root / sudo и подключение к интернету.
  • systemd и хост, где PostgreSQL можно установить локально (он настраивается за вас).

Вариант A — установка одной командой

На сервере выполните:

curl -fsSL https://samm.securytik.com/install.sh | sudo bash

Этот загрузочный скрипт скачивает последний релизный пакет SAMM с GitHub, распаковывает его и автоматически запускает полный установщик. Готово за несколько минут.

Вариант B — установка вручную из релизного пакета

Скачайте последний samm-<version>.tar.gz со страницы GitHub Releases, затем на сервере:

tar -xzf samm-<version>.tar.gz
cd samm-<version>
sudo bash install.sh

Вы также можете развернуть из zip-архива, созданного на другой машине — установщик сам rsync-ит исходники в /opt/samm:

mkdir -p /opt/samm && unzip samm.zip -d /tmp/samm-bundle
sudo bash /tmp/samm-bundle/samm/install.sh

Или клонируйте репозиторий в /opt/samm и выполните sudo bash /opt/samm/install.sh.

В любом случае после завершения установщика откройте портал администратора и войдите с этими учётными данными:

URL входаhttp://<your-server>/admin · Имя пользователяadmin · Парольadmin

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

Вариант C — установка с помощью Docker Compose

Если вы предпочитаете запускать SAMM в контейнерах — тот же продукт, упакованный иначе — используйте дистрибутив Docker Compose по адресу github.com/mhdhaidarah/samm-docker. На любом хосте с доступным Docker:

curl -fsSL https://github.com/mhdhaidarah/samm-docker/releases/latest/download/install.sh | sudo bash

Это устанавливает Docker, если его нет, размещает docker-compose.yml + .env в /opt/samm-docker/ и запускает стек. Образ mhdhaidarah/samm собран из того же скомпилированного пакета, что и установка на чистой ОС — закрытый исходный код по своей сути.

Мультиархитектурность начиная с v2.2.6 — один и тот же тег поставляется для linux/amd64 и linux/arm64. docker pull прозрачно выбирает нужный вариант, поэтому способ установки идентичен на 64-битном сервере Intel/AMD, на Mac с Apple-silicon под Docker Desktop или на ARM-устройстве MikroTik (RB5009, hAP ax², CCR2004/2116/2216) с использованием функции контейнеров RouterOS 7.

На хостах, где передача curl в bash запрещена (заблокированные машины, строгие политики исходящего трафика), вы можете скачать готовый к запуску compose-файл напрямую:

git clone https://github.com/mhdhaidarah/samm-docker.git
cd samm-docker
cp .env.example .env
$EDITOR .env       # set POSTGRES_PASSWORD and SAMM_PUBLIC_HOST
docker compose up -d

Несколько функций пока отсутствуют в варианте Docker (поэтапная блокировка по лицензии, динамическая перезагрузка FreeRADIUS). Встроенные страницы администрирования WireGuard и Cloudflare Tunnel намеренно скрыты в варианте Docker — они управляют службами systemd на уровне хоста, недоступными изнутри контейнера. Выберите вариант A или B выше, если вам нужны эти функции встроенными, или запустите cloudflared / wg-quick на хосте Docker непосредственно рядом с SAMM. Полный список ограничений v1 и способ установки вручную см. в README варианта Docker.

На Windows (Docker Desktop) — только для ознакомления

Не рекомендуется для продакшена. Спящий режим / гибернация / закрытие крышки в Windows останавливают контейнеры; перезапуск при загрузке срабатывает только при старте WSL (не при загрузке Windows); ежедневный cron автообновления работает только пока жив WSL. Используйте для ознакомления / демо, затем разворачивайте продакшен на виртуальной машине Linux (Hyper-V, Proxmox, ESXi) или на небольшом физическом устройстве (например, NUC под Ubuntu Server).

Установите Docker Desktop для Windows (позвольте ему настроить бэкенд WSL2 при первом запуске). Затем из PowerShell — терминал WSL не нужен — скачайте compose-пакет и запустите стек:

mkdir C:\samm-docker
cd C:\samm-docker
curl.exe -fLO https://github.com/mhdhaidarah/samm-docker/releases/latest/download/docker-compose.yml
curl.exe -fLO https://github.com/mhdhaidarah/samm-docker/releases/latest/download/env.example
copy env.example .env
notepad .env       # set POSTGRES_PASSWORD and SAMM_PUBLIC_HOST (your Windows LAN IPv4)
docker compose pull
docker compose up -d

Наблюдайте за запуском стека в Docker Desktop → Containers — группа samm разворачивается в 7 служб. Когда все они станут зелёными, откройте портал администратора и войдите с этими учётными данными:

URL входаhttp://localhost:8000/admin · Имя пользователяadmin · Парольadmin

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

Если реальный NAS MikroTik будет обращаться к этому хосту Windows для RADIUS, разрешите UDP 1812 + 1813 через брандмауэр Windows:

New-NetFirewallRule -DisplayName "SAMM RADIUS" -Direction Inbound -Protocol UDP -LocalPort 1812,1813 -Action Allow

Демонтаж: docker compose down -v из каталога установки (-v стирает том postgres и ключ Fernet — сначала сделайте их резервную копию, если вы добавили данные).

Вариант D — установка на роутер MikroTik (RouterOS 7)

Тот же SAMM, сервер Linux не нужен. Если ваше устройство MikroTik поддерживает пакет container и к нему подключён USB-накопитель или microSD, вы можете запустить весь стек прямо на роутере. Образ поставляется мультиархитектурным (linux/amd64 + linux/arm64), поэтому устройства вроде RB5009, hAP ax², CCR2004/2116/2216 прозрачно скачивают нужный вариант.

Поддерживаются: arm64 MikroTik — RB5009, hAP ax², CCR2004-1G-12S+2XS, CCR2116, CCR2216. Модели amd64 — CCR2004-1G-2XS-PCIe (amd64), x86 RouterOS, CHR на гипервизорах amd64.
Не поддерживаются: устройства armv7 / mipsbe / smips / tile / ppc (hEX, RB750, старые модели RB) — нет поддержки контейнеров или слишком мало RAM/CPU для стека SAMM.

1. Подготовьте роутер

Установите пакет container (из extra_packages.zip на mikrotik.com/download — загрузите подходящий container-*.npk через Files, затем перезагрузите). Затем включите режим контейнеров (однократно, требует перезагрузки):

/system device-mode update container=yes
# router reboots

2. Отформатируйте и смонтируйте диск (ext4)

Вставьте USB-накопитель или microSD (рекомендуется ≥ 8 ГБ — Postgres + слои образа занимают место). На роутере:

/disk print
# note the disk slot, e.g. "usb1-part1" or "disk1"
/disk format-drive usb1-part1 file-system=ext4 label=samm

После форматирования убедитесь, что диск монтируется и доступен для записи:

/disk print detail
# look for "type=ext4" and a mount point like "/usb1-part1"

3. Вставьте compose YAML в приложение контейнеров

В WebFig или WinBox откройте ContainerApps+ NewYAML. Вставьте приведённый ниже compose-файл в поле YAML, укажите отформатированный на шаге 2 диск в качестве места хранения и отправьте. RouterOS скачает каждый образ и соединит службы за вас.

docker-compose.yaml — скопируйте и вставьте
name: samm

services:
  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
    volumes:
      - pgdata:/var/lib/postgresql/data

  samm-api:
    image: mhdhaidarah/samm:latest
    restart: unless-stopped
    command: ["api"]
    environment:
      # SAMM_ROLE picks the daemon. Docker reads `command:` above; MikroTik's
      # container feature drops that field on YAML import, so we also pass
      # the role as an env var — every parser preserves environment blocks.
      SAMM_ROLE: api
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
      SAMM_API_HOST: 0.0.0.0
      SAMM_API_PORT: 8000
      SAMM_API_WORKERS: 2
    ports:
      - "8000:8000"
    volumes:
      - etcsamm:/etc/samm
      - sammvar:/opt/samm/var
      - sammlogs:/var/log/samm
      - sammlocales:/opt/samm/app/locales

  samm-radius:
    image: mhdhaidarah/samm:latest
    restart: unless-stopped
    command: ["radius"]
    environment:
      SAMM_ROLE: radius
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
    volumes:
      - etcsamm:/etc/samm
      - sammvar:/opt/samm/var
      - sammlogs:/var/log/samm

  samm-worker:
    image: mhdhaidarah/samm:latest
    restart: unless-stopped
    command: ["worker"]
    environment:
      SAMM_ROLE: worker
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
    volumes:
      - etcsamm:/etc/samm
      - sammvar:/opt/samm/var
      - sammlogs:/var/log/samm

  samm-notification:
    image: mhdhaidarah/samm:latest
    restart: unless-stopped
    command: ["notification"]
    environment:
      SAMM_ROLE: notification
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
    volumes:
      - etcsamm:/etc/samm
      - sammvar:/opt/samm/var
      - sammlogs:/var/log/samm

  samm-telegram:
    image: mhdhaidarah/samm:latest
    restart: unless-stopped
    command: ["telegram"]
    environment:
      SAMM_ROLE: telegram
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
    volumes:
      - etcsamm:/etc/samm
      - sammvar:/opt/samm/var
      - sammlogs:/var/log/samm

  freeradius:
    image: mhdhaidarah/samm:freeradius-latest
    restart: unless-stopped
    environment:
      POSTGRES_HOST: postgres
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
    ports:
      - "1812:1812/udp"
      - "1813:1813/udp"

volumes:
  pgdata: {}
  etcsamm: {}
  sammvar: {}
  sammlogs: {}
  sammlocales: {}

Перед вставкой замените каждый change-me-strong-random-string на ОДИН И ТОТ ЖЕ надёжный случайный пароль (≥ 24 случайных символов) — он попадает в Postgres при первом запуске, и каждая служба SAMM использует его для подключения. Сгенерируйте его с помощью менеджера паролей или выполните pwgen 32 1 на любой машине Linux.

4. Проверьте и подключите MikroTik к SAMM

Когда все 7 контейнеров запущены, откройте портал администратора в браузере и войдите с этими учётными данными:

URL входаhttp://<router-ip>:8000/admin · Имя пользователяadmin · Парольadmin

Немедленно смените пароль администратора. Аутентификация и учёт RADIUS доступны на UDP 1812 + 1813 на самом роутере, поэтому RADIUS-клиент MikroTik может указывать на 127.0.0.1 с общим секретом, заданным в System → RADIUS.

Экспериментально в v1. Функция контейнеров RouterOS проще, чем Docker Compose — DNS по имени службы, порядок зависимостей (depends_on) и оперативные перезапуски работают иначе. Если стек ведёт себя некорректно на вашем оборудовании, вернитесь к запуску Docker на небольшой машине Linux (NUC, Pi 4, виртуальная машина Linux) рядом с MikroTik. Тот же compose-файл работает там с полной семантикой Compose.

Неинтерактивные параметры

На все запросы можно ответить заранее с помощью переменных окружения, чтобы установщик мог работать без участия оператора:

ПеременнаяЭффект
DB_PASSИспользовать этот пароль базы данных вместо автоматически сгенерированного (только при первой установке)
CF_TOKENУстановить коннектор Cloudflare Tunnel с этим токеном Zero Trust
SAMM_HTTP_PORTПринудительно задать порт прослушивания nginx (пропускает запрос об определении порта 80)
SAMM_VERBOSE1 выводит необработанный вывод команд вместо индикатора прогресса
NO_COLOR1 отключает цветной вывод
DB_PASS='strong_pw'   sudo bash /opt/samm/install.sh
CF_TOKEN='eyJ...'     sudo bash /opt/samm/install.sh
SAMM_HTTP_PORT=8080   sudo bash /opt/samm/install.sh

Что настраивает установщик

Установщик работает как живой цветной индикатор прогресса — процентная шкала и контрольный список по фазам. Необработанный вывод каждой фазы записывается в /var/log/samm-install.log; при сбое печатаются последние 30 строк.

КомпонентПодробности
FreeRADIUS 3Настроен с бэкендом PostgreSQL и динамическими NAS-клиентами; проверен командой freeradius -CX
PostgreSQLБаза данных, схема и все SQL-миграции применены — каждый файл миграции идемпотентен
Python venvВсе зависимости собраны из requirements.txt; каталоги переводов скомпилированы
nginxОбратный прокси добавляется дополнительно — существующие сайты никогда не удаляются. Использует порт 80, если он свободен; иначе запрашивает альтернативный порт
5 servicessamm-api, samm-radius, samm-worker, samm-notification, samm-telegram — все включены как юниты systemd
WireGuardПакеты установлены; настраиваются позже в System → VPN
cloudflaredБинарный файл всегда устанавливается; токен туннеля указывается при установке по желанию или добавляется позже в System → Cloudflare Tunnel

Все учётные данные — пароль базы данных и ключи подписи сессий — генерируются автоматически при первой установке.

Интерактивные запросы

Все запросы происходят заранее, до начала установки:

  • Токен Cloudflare — вставьте токен коннектора Zero Trust, чтобы опубликовать SAMM в сети без открытых портов, или нажмите Enter, чтобы пропустить и настроить позже.
  • Порт HTTP — если порт 80 уже занят, установщик оставляет эти сайты нетронутыми и запрашивает альтернативный порт (по умолчанию 8080).

Сводка установки

После завершения установщик печатает сводку с URL администратора, логином по умолчанию, выбранным портом HTTP, учётными данными базы данных и путями к файлам конфигурации:

============================================================
  SAMM is installed and running.
  Admin portal  : http://localhost/admin/login
  Default login : admin / admin   <- CHANGE AFTER FIRST LOGIN
  Config files  : /etc/samm/samm.yaml  /etc/samm/api.env
============================================================

Обновление

Чтобы обновить, скачайте новые исходники и запустите установщик заново:

git -C /opt/samm pull        # or unpack a newer release bundle
sudo bash /opt/samm/install.sh

Повторный запуск повторно синхронизирует исходники, обновляет venv, повторно применяет все миграции, перезагружает конфигурации FreeRADIUS и nginx и перезапускает каждую службу. Ваши файлы конфигурации и порт HTTP, выбранный при первой установке, сохраняются.

Совет SAMM также может обновляться сам — см. Лицензирование и обновления. Включите автоматические обновления или применяйте их по требованию в System → License.
Изолированная сеть и удалённая БД SAMM поставляет только SAMM — FreeRADIUS, PostgreSQL, nginx и остальное скачиваются во время установки из вышестоящих apt-репозиториев, поэтому при установке в изолированной сети эти пакеты нужно подготовить заранее. Для удалённого PostgreSQL задайте DSN в /etc/samm/samm.yaml после установки.

Начало работы

Первые шаги

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

1 · Первый вход

  1. Откройте http://<your-server>/admin/ (используйте порт HTTP из сводки установки, если это не 80) или URL вашего туннеля Cloudflare.
  2. Войдите с admin / admin.
  3. Немедленно смените пароль в System → Admins или в меню профиля на верхней панели.

2 · Добавьте свой первый роутер

  1. Перейдите в MikroTik → NAS и нажмите Add Router.
  2. Введите IP роутера, короткое имя и общий секрет RADIUS. Для устройств MikroTik при желании добавьте учётные данные API для оперативной синхронизации устройства.
  3. На MikroTik добавьте сервер RADIUS, указывающий на хост SAMM (порты 1812/1813) с тем же общим секретом, и включите RADIUS для PPP / Hotspot.

Перезапуск FreeRADIUS не нужен — SAMM определяет NAS-клиентов динамически из базы данных. Полную процедуру см. в разделе Роутеры (NAS), или позвольте мастеру настройки настроить MikroTik за вас.

3 · Создайте план

План определяет скорость, лимиты и цену, которую вы продаёте. Перейдите в Users → Plans → New plan. Полный справочник по полям: Планы и лимиты.

4 · Добавьте абонента

Перейдите в Users → New customer, заполните учётные данные для входа и выберите план. Абонент может подключиться сразу. Для предоплаченного доступа hotspot вместо этого сгенерируйте ваучерные карты.

5 · Активируйте лицензию

Свежая установка работает незарегистрированной на минимальном тарифе. Откройте System → License и активируйте, чтобы снять ограничения — см. Лицензирование и тарифы.

Повседневный ритм Добавляйте роутеры → создавайте планы → добавляйте абонентов или карты → следите за Панелью → фиксируйте платежи в разделе Бухгалтерия.

Абоненты & тарифы

Тарифы & ограничения

План — это описание услуги, назначаемое абонентам — оно задаёт скорость, лимиты и цену. Создавайте планы до добавления пользователей.

Создать план

  1. Перейдите в Users → Plans.
  2. Нажмите New plan.
  3. Заполните форму и нажмите Save plan.

Каждый лимит — это переключатель — включайте только нужные вам. То же окно редактирует существующий план (откройте меню ⋮ строки → Edit).

Поля плана

ПолеЗначение
ИмяУникальное имя плана, например Home-50M
ЦенаВзимается за расчётный период при использовании выставления счетов
Скорость загрузки / отдачинапример 50M, 512K, 1G — применяется как ограничение скорости MikroTik
Лимит: Истечение срокаПодписка заканчивается через фиксированный период после активации (дни/месяцы/часы/минуты)
Лимит: КвотаОбщий лимит трафика (совокупный, только загрузка или только отдача) на всю подписку
Лимит: Время в сетиОграничение на суммарное время подключения — сумма длительностей всех сессий
Лимит: Дневное потреблениеЛимит трафика, который сбрасывается каждый день в заданное время ежедневного сброса
Безлимитное окноБыстрое добавление одного окна скорости — полный редактор находится на странице Speed Windows плана
Пул IPНеобязательное имя RADIUS Framed-Pool для назначения адресов
АвтопродлениеНачать новый период по истечении срока вместо смены плана или отключения

Четыре лимита

Каждый лимит независим и необязателен. Когда заданы несколько, SAMM проверяет их в фиксированном порядке — истечение срока → квота → время в сети → дневной — и первый исчерпанный определяет действие.

ЛимитОтслеживаетПри исчерпании
Истечение срокаКалендарное время с момента активацииПереключить на другой план или отключить
КвотаВсего использовано байтовПереключить на другой план или отключить
Время в сетиСуммарные секунды сессийПереключить на другой план или отключить
ДневнойБайты с момента последнего ежедневного сбросаОграничить скорость (переключить на более медленный план) до следующего ежедневного сброса

Для каждого лимита вы выбираете, что происходит при исчерпании: выберите следующий план, на который переключить абонента, или оставьте как — disconnect —. Для дневного лимита следующий план действует как ограничение скорости — абонент автоматически возвращается к исходному плану при следующем ежедневном сбросе.

Окна скорости

Окно скорости переопределяет базовую скорость плана на заданные часы — например, окно с безлимитной скоростью после полуночи. Нажмите на строку плана, чтобы открыть его редактор Speed Windows, который добавляет управление по дням недели и поддерживает окна, пересекающие полночь. Когда совпадают несколько окон, побеждает самое скоростное.

Примечание Абоненты с ограниченной скоростью или исчерпанным лимитом исключаются из окон скорости — SAMM никогда не повышает скорость, пока действует лимит.

Два понятия потребления

SAMM хранит потребление в двух местах и никогда их не смешивает:

  • Сбрасываемые счётчики — состояние по каждому лимиту. Обнуляются сбросом администратора и ежедневным сбросом.
  • Биллинговые счётчики — несбрасываемые итоги за всё время. Никогда не обнуляются, поэтому отчёты и счета остаются точными.

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

Список планов показывает скорость каждого плана, число абонентов, активные лимиты и окна скорости. Из меню ⋮ строки вы можете редактировать, открыть его окна скорости, включить/отключить его, перейти к его абонентам или удалить его (только когда у него нет абонентов). Редактирование автопродления предлагает распространить изменение на всех текущих абонентов.

Абоненты & тарифы

Абоненты

Абонент (клиент / пользователь) — это учётная запись PPPoE или Hotspot, которая аутентифицируется в SAMM. Каждому абоненту назначается ровно один план.

Создать абонента

  1. Перейдите в Users и нажмите New customer.
  2. Заполните форму и сохраните — абонент может подключиться сразу.
ПолеЗначение
Имя пользователя *Имя для входа PPPoE / Hotspot — должно быть уникальным
Пароль *Пароль для входа (хранится для аутентификации RADIUS PAP/CHAP)
Имя / ФамилияИмя абонента
Мобильный / Email / АдресКонтактные данные — используются для уведомлений и счетов
Тариф *Назначаемый тарифный план
Переопределение срока действияНеобязательная ручная дата истечения вместо вычисленной планом
АвтопродлениеАвтоматически продлевать период плана по истечении срока

Список абонентов

Страница Users перечисляет каждого абонента с наглядной точкой статуса, назначенным планом и тем, сколько осталось от каждого лимита — дневное потребление с индикатором прогресса, остаток квоты, остаток времени в сети и оставшиеся дни. Фильтруйте по статусу (All / Active / Suspended / Expired / Online) или ищите по имени пользователя, имени или мобильному.

Значок смены плана Один значок — это план абонента. Два значка, соединённые стрелкой, означают, что абонент достиг своего дневного лимита и временно переведён на план с ограничением скорости — он вернётся к исходному при следующем ежедневном сбросе.

Управление абонентом

Щёлкните правой кнопкой по строке — или используйте меню ⋮ — для любого действия над абонентом:

ДействиеЧто делает
Просмотр / РедактированиеОткрыть страницу с подробностями или отредактировать контактные данные, пароль и срок действия
Включить / ОтключитьПриостановить учётную запись — онлайн-абоненты отключаются
Продлить срок действияДобавить длительность плана поверх оставшегося времени; создаёт счёт, если у плана есть цена
Сбросить время в сети / квоту / дневнойОбнулить выбранный счётчик лимита
ПотреблениеОткрыть графики потребления и историю сессий
УдалитьУдалить абонента и всю его историю — активные сессии сначала отключаются
Как действия вступают в силу Сбросы, смены планов и продления ставятся в очередь в журнал аудита и применяются тиком samm-radius — обычно в течение нескольких секунд. Если абонент онлайн, SAMM также отправляет оперативное обновление. См. CoA и оперативные изменения.

Представление Usage

Действие Usage открывает подробную страницу трафика для одного абонента с переключателем периода 7d / 14d / 30d / 90d. Оно сообщает три ключевых показателя — трафик за сегодня (с разбивкой на отдачу/загрузку и минутами онлайн), трафик за этот месяц и суммарное время онлайн за месяц. Под ними — график дневного трафика отдачи против загрузки и полная таблица истории сессий: время начала и окончания, длительность, байты на загрузку и отдачу, NAS и причина завершения каждой сессии.

Массовые операции

Чтобы изменить владельца, срок действия, статус или автопродление для многих абонентов сразу — или удалить многих — используйте инструменты Bulk Changes и Bulk Delete. Чтобы создать абонентов массово из таблицы, используйте Export / Import.

Абоненты & тарифы

Карты Hotspot

Для предоплаченного доступа Hotspot генерируйте пакет ваучерных карт вместо отдельных абонентов. Каждая карта — это пара имя пользователя/пароль со своей скоростью и лимитами, генерируемая тысячами и печатаемая для раздачи.

Создать группу карт

  1. Перейдите в Users → Hotspot Cards и нажмите New group.
  2. Заполните форму ниже и нажмите Create group — SAMM генерирует учётные данные каждой карты автоматически.
РазделПоля
ИдентификацияУникальное имя группы, описание, необязательный префикс имени пользователя, сколько карт сгенерировать (до 10 000)
Учётные данныеФормат имени пользователя и пароля (цифры / буквы / буквенно-цифровой) и длина
Ограничение скоростиСкорость загрузки и отдачи — 256k, 6M, 1G; 0 = безлимит
Лимит трафикаБезлимитный, совокупный лимит или раздельные лимиты загрузки/отдачи (МБ / ГБ / ТБ)
Лимиты времениЛимит времени в сети, истечение срока после первого входа и групповая дата «действительно до»

Истечение срока отсчитывается от первого входа каждой карты, тогда как действительно до — это жёсткая дата — карты нельзя использовать после неё, независимо от того, были ли они когда-либо активированы.

Статусы карт

СтатусЗначение
НеиспользованнаяСгенерирована, но вход ни разу не выполнялся
АктивенИспользуется, в пределах своих лимитов
ИсчерпанаДостигнут лимит (квота, время в сети или истечение срока)
ОтключенаОтключена вручную

Печать и отслеживание

Откройте группу, чтобы увидеть её карты, распечатать их в PDF для раздачи (макет печати использует логотип вашего провайдера из Settings) и просмотреть потребление по каждой карте. Трафик карт также отображается в Отчётах на вкладке Cards, и у каждой группы есть собственное представление бухгалтерии.

Сеть & роутеры

Роутеры (NAS)

NAS (Network Access Server) — это роутер, который аутентифицирует абонентов в SAMM через RADIUS. Каждому роутеру, который несёт абонентский трафик, нужна запись NAS.

Добавить роутер

  1. Перейдите в MikroTik → NAS и нажмите Add Router.
  2. Заполните поля ниже и сохраните.
ПолеЗначение
IP / имя хоста NASАдрес роутера, каким его видит хост SAMM
Короткое имяПонятная метка, отображаемая по всему интерфейсу
Типmikrotik открывает оперативную синхронизацию устройства и отправку конфигурации; другие типы — только RADIUS
СекретОбщий секрет RADIUS — должен точно совпадать с роутером, иначе аутентификация не удастся
Порт CoAUDP-порт, на который SAMM отправляет пакеты Change-of-Authorization (по умолчанию MikroTik 3799)
Порт / пользователь / пароль APIУчётные данные API MikroTik, которые SAMM использует для чтения информации об устройстве и отправки конфигурации
Перезапуск не нужен SAMM определяет NAS-клиентов динамически из базы данных — добавление или удаление роутера никогда не требует перезапуска FreeRADIUS.

Список NAS

Каждый роутер отображается в одной таблице — ID, IP / имя хоста NAS, короткое имя, тип, скрытый секрет (щёлкните по ячейке, чтобы раскрыть его), порты CoA и API, а также оперативный результат ping с временем отклика. Поле поиска фильтрует по IP, короткому имени или описанию.

Меню ⋮ каждой строки содержит действия для роутера — View Device и Refresh Info (только MikroTik), Edit, Push RADIUS config (только MikroTik) и Delete. Открытие строки типа mikrotik сразу переходит на её страницу устройства.

Обнаружить соседей

Нажмите Discover neighbors, чтобы просканировать сеть на устройства MikroTik и добавить их как записи NAS без ручного ввода каждого адреса.

Отправить конфигурацию RADIUS на роутер

Для записей NAS MikroTik меню ⋮ строки предлагает Push RADIUS config — SAMM настраивает роутер за вас через API вместо ручного ввода. Вы подтверждаете IP сервера SAMM (он должен быть доступен с роутера) и порты аутентификации, учёта и CoA; затем SAMM создаёт или заменяет запись RADIUS на роутере:

ПараметрЗначение
КомментарийSAMM — тег, который SAMM использует, чтобы найти и обновить эту запись позже
Службаhotspot, ppp
Адрес / секретХост SAMM с общим секретом из этой записи NAS
Тайм-аут3000 ms
Входящий CoAПринимается на подтверждённом вами порту CoA

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

Настройте сторону MikroTik

Если вместо этого вы настраиваете роутер вручную:

  • Добавьте сервер RADIUS, указывающий на хост SAMM, с тем же общим секретом, включённый для PPP / Hotspot.
  • Используйте порт аутентификации 1812, порт учёта 1813.
  • Принимайте входящий CoA на порту 3799.
  • Установите интервал Interim-Update учёта около 60 секунд — с такой периодичностью SAMM накапливает потребление и вычисляет лимиты.

Устройства только для мониторинга

Роутер, добавленный как monitor, появляется в инвентаризации MikroTik, пингуется и синхронизируется, но не имеет роли RADIUS — он не может аутентифицировать абонентов. Используйте его для наблюдения за роутерами, которые не являются абонентскими NAS.

Сеть & роутеры

Менеджер MikroTik

Когда у роутера есть учётные данные API, SAMM управляет им напрямую через API MikroTik — без WinBox, без SSH. Раздел MikroTik — это актуальная инвентаризация каждого роутера, и каждое устройство открывает страницу с подробностями с пятнадцатью вкладками, которые настраивают почти каждую часть RouterOS из вашего браузера.

MikroTik Monitor

MikroTik → Monitor показывает по одной карточке на роутер, расположенных сеткой. Каждая карточка сообщает — обновляется samm-worker и опрашивается оперативно каждые 30 секунд — точку доступности, версию RouterOS, загрузку CPU и число ядер, использование памяти, число активных сессий, время в сети и время последнего замера.

Карточка помечается либо NAS (роутер, который также аутентифицирует абонентов через RADIUS), либо monitor (устройство, добавленное только для мониторинга). Add MikroTik регистрирует новое устройство; Refresh now принудительно выполняет немедленный опрос. Карточки только для мониторинга имеют меню по правому щелчку — Open, Edit, Refresh Info, Delete.

Страница устройства — шестнадцать вкладок

Откройте любое устройство для его полной страницы управления. Вкладки делятся на четыре группы.

Мониторинг

ВкладкаЧто показывает
ОбзорИнформация об устройстве, системная информация и графики истории производительности (CPU, память, сессии во времени)
ИнтерфейсыКаждый интерфейс с его текущим состоянием, плюс история трафика по каждому интерфейсу
Веб-сайтыВеб-сайты и приложения, замеченные на роутере, и представление истории производительности этого трафика

Менеджер

Вкладка Manager → General — это служебная страница устройства: Identity (имя роутера), Time (часы, часовой пояс и NTP) и Tools (перезагрузка, ping и другие действия роутера в один клик).

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

ВкладкаЧто вы настраиваете
МостСоздавайте мосты LAN и выбирайте, какие физические интерфейсы (порты) относятся к каждому
VLANДобавляйте интерфейсы VLAN и управляйте ими
IPТри подвкладки — Static (статические и динамические адреса), DHCP client (получить адрес от вышестоящего), DHCP server (раздавать адреса, с актуальной таблицей аренды)
DNSСерверы DNS и кэш, плюс фильтр Websites & App — блокировка контента на основе DNS
WiFi / CAPsMANИнтерфейсы Wi-Fi с их конфигурациями и профилями безопасности; и контроллер CAPsMAN — конфигурации, правила провижининга и удалённые CAP
QoSПриоритет загрузки с учётом приложений — перетаскивайте приложения и сайты, замеченные фильтром Websites & App, в восемь слотов приоритета, ограничивайте скорость любого приложения и отправляйте это на роутер как дерево очередей

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

ВкладкаЧто вы настраиваете
PPPoEСерверы PPPoE, профили PPP, пулы IP и интервал interim-update учёта RADIUS
HotspotСерверы Hotspot, профили hotspot и профили пользователей, пулы DHCP/IP и страница входа captive-портала
ИнтернетВосходящие каналы WAN — управляемые SAMM WAN и маршруты по умолчанию, при этом любые существующие WAN не от SAMM показываются только для чтения
FirewallПравила фильтрации, анализ безопасности роутера, связность и цели, модули безопасности и резервные копии firewall
ОбновлениеОбновления RouterOS — выберите канал обновлений, проверьте и примените, а также просмотрите установленные пакеты
МастерПошаговая первичная настройка, ниже

Интервал interim-update PPPoE

На вкладке PPPoE параметр Interim update задаёт, как часто роутер отправляет пакеты Interim-Update учёта RADIUS в SAMM. SAMM использует эти пакеты, чтобы накапливать счётчики байтов и времени в сети и вычислять лимиты квоты, дневной и времени в сети — без них применение лимитов и счётчики активных сессий останавливаются. Рекомендуемое значение — 5m.

Страница входа Hotspot

На вкладке Hotspot вы управляете страницей входа captive-портала: сохраняете стандартные страницы MikroTik, применяете один из встроенных шаблонов или один из ваших сохранённых дизайнов. SAMM включает визуальный редактор дизайна и галерею шаблонов — настройте страницу входа и отправьте её прямо в hotspot маршрутизатора.

QoS с учётом приложений

Вкладка QoS превращает приложения и сайты, которые SAMM уже видит на маршрутизаторе, в план приоритетов загрузки. Перетащите каждое приложение из пула в один из восьми слотов приоритета — слот 1 обслуживается первым при конкуренции, слот 8 последним; приложения, оставшиеся в пуле, не ограничиваются. При желании ограничьте скорость загрузки любого приложения (например, 10M) и задайте общий потолок загрузки, за который конкурируют приоритеты. Автораспределение по категориям расставляет всё в один клик — обмен сообщениями и конференции первыми, массовые загрузки и тесты скорости последними.

При отправке SAMM компилирует слоты в дерево очередей MikroTik (с меткой SAMM:qos, parent=global) с соответствующими правилами firewall для пакетных меток, начиная с наивысшего приоритета. Оно построено на том же каталоге фильтра сайтов и приложений, который питает мониторинг, поэтому появляются только приложения, реально замеченные на маршрутизаторе, — а удаление SAMM QoS убирает с маршрутизатора все объекты SAMM:qos, оставляя ваши счётчики нетронутыми.

Мастер настройки

Вкладка Wizard собирает всё за девять коротких шагов и отправляет полную конфигурацию на маршрутизатор одним пакетом в конце. Ничего не отправляется, пока вы не подтвердите на финальном шаге проверки.

  1. Приветствие и определение — SAMM опрашивает маршрутизатор и показывает, что уже настроено, чтобы вы могли пропустить эти пункты при отправке.
  2. Интерфейс bridge — задайте имя LAN bridge.
  3. Порты bridge — выберите, какие физические интерфейсы войдут в bridge.
  4. DNS — задайте вышестоящие резолверы (пресеты в один клик для Google, Cloudflare, Quad9 и других), размер кэша и, при желании, DNS-фильтр контента.
  5. Интернет — добавьте одно или несколько WAN-подключений (Static / DHCP / PPPoE).
  6. RADIUS в SAMM — направьте маршрутизатор на ваш хост SAMM для аутентификации, учёта и CoA.
  7. Службы — выберите, создаёт ли мастер сервер PPPoE, сервер Hotspot или оба.
  8. Настройки PPPoE / Hotspot и Firewall — пулы, профили, время аренды, а также правила firewall и NAT.
  9. Проверка и отправка — просмотрите точный список команд, которые будут отправлены, затем отправьте их все на маршрутизатор.
Скорость для каждого пользователя приходит из RADIUS Мастер создаёт один профиль PPPoE / hotspot — он не отправляет профили для каждого тарифа. Скорость каждого абонента доставляется SAMM в ответе RADIUS при входе, поэтому смена плана никогда не требует правки маршрутизатора.

Сеть & роутеры

CoA & изменения на лету

CoA (Change-of-Authorization) — это то, как SAMM меняет сессию абонента, пока он в сети — чтобы повысить или понизить его скорость либо отключить его — не дожидаясь его переподключения.

Как изменение доходит до активного абонента

SAMM никогда не отправляет изменение на маршрутизатор прямо по нажатию кнопки. Каждое действие администратора идёт по одному безопасному пути:

Действие администратора Журнал аудита тик samm-radius Исходящая очередь CoA Маршрутизатор
  1. Действие записывается в журнал аудита как команда в очереди.
  2. Служба samm-radius опустошает очередь на своём следующем тике, применяет изменение и — если абонент в сети — ставит в очередь CoA.
  3. Исходящая очередь CoA опустошается, и пакет отправляется на маршрутизатор.

События по времени — истечение срока, границы окон скорости, ежедневные сбросы — питают ту же очередь. Верхняя граница задержки — один тик samm-radius (30 с по умолчанию; уменьшите его в Настройках для более строгого применения).

Гибридный CoA

SAMM сначала отправляет CoA-Update, чтобы изменить сессию на месте. Если маршрутизатор отклоняет его после настроенного числа попыток, SAMM автоматически переходит к Disconnect-Request — абонент переподключается и получает новые настройки. Эта гибридная стратегия работает во всех версиях прошивки MikroTik.

Страница исходящей очереди CoA

Пользователи → Исходящая очередь CoA — это живое отображение этой очереди. samm-radius — единственный отправитель: панель администратора никогда не отправляет CoA напрямую — и она опустошает очередь на каждом тике. Страница автоматически обновляется каждые 30 секунд.

Шесть счётчиков возглавляют страницу — В ожидании, Отправлено, NACK (повтор), Готово, Ошибка и Всего. Фильтруйте таблицу по статусу, по действию (update или disconnect) или ищите по имени пользователя, IP NAS или причине.

СтатусЗначение
в ожиданииВ очереди, ожидает следующего тика samm-radius
отправленоОтправлено на маршрутизатор, ожидает его ответа
nackМаршрутизатор отклонил CoA-Update — SAMM повторяет попытки, затем переходит к отключению
готовоУспешно применено
ошибкаОтказ после исчерпания лимита попыток — наведите на значок, чтобы увидеть последнюю ошибку

Каждая строка показывает пользователя, маршрутизатор, действие, число попыток, причину, а также время создания и отправки. Действия по строке позволяют Повторить ошибочный или nack-пакет, Отменить ещё выполняющийся или открыть Атрибуты, чтобы изучить точные атрибуты RADIUS, которые несёт пакет. Значок в боковой панели считает строки в ожидании; Панель управления отслеживает ошибки за 24 часа. Исправная система держит эту очередь почти пустой.

Повседневные операции

Панель управления и активные сессии

Два экрана в разделе Обзор — это то, с чего вы начинаете каждую смену: Панель управления для состояния всей системы, Активные сессии — для того, кто именно подключён прямо сейчас.

Панель управления

Обзор → Панель управления — это главный экран оператора. Селектор периода вверху — Сегодня, 7д, 14д, 30д, 90д — задаёт окно для графика трендов и показателей, ограниченных датами.

Шесть плиток KPI

Каждая плитка — это живой счётчик и ярлык: щёлкните по ней, чтобы сразу перейти к отфильтрованному списку за этим числом.

ПлиткаПоказываетОткрывает
Сейчас в сетиАбоненты с активной сессией RADIUS прямо сейчасПользователи, отфильтрованные по В сети
Активные абонентыАктивные учётные записи, под которыми — общее число абонентовПользователи, отфильтрованные по Активные
ИстёкАбоненты, чья подписка истекла без установленного следующего планаПользователи, отфильтрованные по Истёкшие
Очередь CoAОжидающие пакеты Change-of-Authorization, а также число сбоев за последние 24 чИсходящая очередь CoA
МаршрутизаторыВсего записей NAS, а также число сейчас недоступныхМонитор MikroTik
Неоплаченные счетаСчета, по которым ещё нужно проследить оплатуСчета, отфильтрованные по Неоплаченные

График пользователей и активных сессий

Линейный график на основе ежедневных снимков отображает три ряда за выбранный период — активные пользователи, сессии в сети и истёкшие пользователи — так что рост и отток видны с первого взгляда.

Состояние конвейера

Эта панель — пульс движка применения. В исправной системе очереди держатся на нуле или около него — число, остающееся высоким, указывает на зависшую службу или маршрутизатор, отклоняющий изменения.

МетрикаЧто она означает
samm-radius очередьОжидающие CoA в ожидании следующего тика — должны очиститься за секунды
Сбои CoA (24ч)Ноль в исправной системе; ненулевое число означает, что маршрутизатор отклоняет CoA
Журнал аудита в ожиданииДействия администратора в очереди, ещё не применённые samm-radius
Сессии с ограничением скоростиАбоненты, сейчас удерживаемые на пониженной скорости лимитом — ожидаемо, не ошибка
Снимок сессийЧисло активных сессий — должно совпадать с Сейчас в сети
Активные планыРазмер вашего каталога планов
Путь применения Действия администратора ставятся в очередь в samm.audit_log; тик samm-radius опустошает их и выпускает CoA в samm.coa_outbox. Полный путь описан в CoA и изменения в реальном времени.

Таблицы недавней активности

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

  • Недавняя исходящая очередь CoA — действие, пользователь, статус (готово / в ожидании / nack / ошибка), число попыток, причина и время.
  • Недавние действия администратора — действие, цель, инициатор, применено ли уже, и время.
  • Недавние абоненты — новейшие учётные записи с их статусом и временем последней аутентификации.
  • Маршрутизаторы — каждый NAS с индикатором состояния доступен / недоступен / нет данных.

Активные сессии

Обзор → Активные сессии перечисляет каждого абонента, которого маршрутизаторы сейчас сообщают как находящегося в сети по учёту RADIUS. Страница автоматически обновляется каждые 30 секунд; кнопка ручного Обновления находится в заголовке.

Фильтрация списка

  • Поиск — совпадает с именем пользователя, framed IP или IP NAS, отправляя по мере ввода.
  • Маршрутизатор — сужает список до сессий на одном NAS.
  • Только ограниченные — показать только абонентов, которых лимит удерживает на пониженной скорости.
  • На странице — 20, 50, 100 или 200 строк.

Что показывает каждая строка

СтолбецЗначение
ПользовательИмя пользователя — ссылка на страницу с деталями абонента
Framed IPАдрес, назначенный маршрутизатором этой сессии
МаршрутизаторКороткое имя NAS и его IP-адрес
ТарифТекущий план абонента
Действующая скоростьСкорость, применённая на маршрутизаторе прямо сейчас — скорость плана, скорректированная любым активным окном скорости. Значок с ограничением означает, что лимит удерживает абонента на пониженной скорости.
Приём / ПередачаЖивые счётчики байтов для сессии
В сетиКак долго длится сессия
НачатаКогда началась сессия

Отключение сессии

Кнопка Отключить в строке ставит в очередь CoA-Disconnect именно для этой сессии (причина admin_manual) после запроса подтверждения. Абонент отключается немедленно; если его учётная запись всё ещё активна, он может свободно переподключиться. Отслеживайте пакет в Исходящей очереди CoA.

Повседневные операции

Отчёты и аналитика

Обзор → Отчёты — это аналитическое представление: тренды абонентов, трафик во времени и самые нагруженные пользователи и карты в вашей сети.

Выбор диапазона

Каждый показатель на странице привязан к диапазону дат. Выберите пресет — 7д, 14д, 30д, 90д — или введите явные даты начала и конца и нажмите Применить. Наложение загрузки закрывает страницу, пока выполняется длинный запрос, например 90д.

Тренды абонентов и сессий

Линейный график с тремя рядами за выбранный диапазон: Активные абоненты, сессии В сети и Истёкшие абоненты. Используйте его, чтобы замечать рост, отток и часы пиковой нагрузки вашей сети.

Ежедневный трафик

Столбчатая диаграмма с накоплением байтов передачи и приёма за день. При наведении на день показываются показатели передачи и приёма, а также объединённый итог в нижней части подсказки.

Списки Топ-10

Четыре таблицы выводят учётные записи с наибольшим трафиком, каждая ранжирована по объёму в ГБ:

СписокРанжирует
Топ-10 приёма за сегодняНаибольший приём с момента последнего ежедневного сброса
Топ-10 передачи за сегодняНаибольшая передача с момента последнего ежедневного сброса
Топ-10 приёма за месяцНаибольший приём за этот календарный месяц
Топ-10 передачи за месяцНаибольшая передача за этот календарный месяц

Трафик по объектам

Таблица трафика по учётным записям с постраничной разбивкой и поиском. Две вкладки переключают то, что она перечисляет:

  • Пользователи — каждый абонент с его именем, планом, сегодняшними передачей/приёмом в МБ и передачей/приёмом за этот месяц в ГБ.
  • Карты — каждая карта hotspot с её группой, статусом и той же разбивкой трафика за сегодня / месяц.

Поле поиска фильтрует таблицу по мере ввода; селектор на странице принимает от 20 до 200 строк. Каждая строка ведёт на страницу с деталями этого абонента или карты.

Экспорт Отчёты — это экранное аналитическое представление. Для получения сырых строк для обработки в электронной таблице используйте Инструменты → Экспорт / Импорт, чтобы скачать пользователей, планы или NAS в формате CSV / XLSX.

Повседневные операции

Учёт & выставление счетов

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

Вы никогда не касаетесь дебетов и кредитов Каждое действие — запись платежа, добавление расхода, продажа группы карт — автоматически проводит сбалансированную запись в журнал в главную книгу. Вы работаете простыми понятиями (счета, расходы, поступления); SAMM ведёт двойную бухгалтерию за кулисами и доказывает её сбалансированность в Оборотно-сальдовой ведомости.

Страница Бухгалтерия организована в десять вкладок.

Обзор

Финансовый снимок. Четыре ключевых показателя расположены вверху:

ПоказательЗначение
Наличные в кассеОбщий баланс по всем кассовым и банковским счетам
Деньги, которые вам должныДебиторская задолженность — неоплаченные счета клиентов и реселлеров
Деньги, которые должны выКредиторская задолженность — неоплаченные расходы
Прибыль за этот месяцДоходы за вычетом расходов за текущий месяц

Ниже: таблица каждого кассового и банковского счёта с его балансом и график доходов и расходов за последние 1, 2, 3, 6 или 12 месяцев.

Счета

Счёт — это документ на оплату, который вы выставляете. Нажмите Новый счёт и заполните:

ПолеЗначение
КлиентПоиск с автодополнением для учётной записи, которой выставляется счёт
Категория доходаНа какой счёт доходов проводится продажа
Дата выставления / срока оплатыПустая дата выставления = сегодня; пустой срок оплаты = дата выставления
Ставка налога %По умолчанию — ставка из Настройки → Биллинг
ПозицииОдна или несколько строк описание / количество / цена за единицу — промежуточный итог, налог и итог вычисляются на лету

Счета также генерируются автоматически, когда план абонента продлевается (по действию Продлить срок пользователя или автопродлением), при условии, что у плана есть цена. Список фильтруется по статусу — неоплачен, частично, к оплате, оплачен — и ищется по номеру счёта или клиенту. Откройте любой счёт для его страницы с деталями и печатного PDF; абоненты могут скачать свои копии из клиентского портала и Telegram-бота.

Расходы

Расход — это деньги, потраченные на работу ISP. Новый расход записывает категорию (счёт расходов), оплаченного поставщика, сумму, дату возникновения и необязательный срок оплаты. Каждый расход имеет тот же жизненный цикл неоплачен / частично / к оплате / оплачен, что и счёт, страницу с деталями и печатный PDF ваучера.

Поступления и платежи

Эти две вкладки записывают фактическое движение денег — в отличие от счёта или расхода, который его вызвал.

  • Поступления — деньги на входе: наличные, полученные от клиента, реселлера или иного дохода, поступающие на один из ваших кассовых счетов. Счёт — это документ на оплату; поступление — это деньги, поступившие по нему.
  • Платежи — деньги на выходе: наличные, уплаченные по расходу или реселлеру.

Запись поступления или платежа продвигает связанный счёт или расход к статусу оплачен и проводит соответствующую запись в главную книгу.

Клиенты и продажи карт

Вкладка Клиенты перечисляет текущий баланс каждого клиента — то, что он вам должен. Продажи карт охватывают предоплаченную выручку hotspot: она отслеживает проданные группы карт и реселлеров. Реселлер покупает у вас целые группы карт по счёту, затем перепродаёт отдельные карты конечным пользователям; их задолженность — это то, что они ещё должны вам заплатить.

Активы и кассовые счета

  • Активы — регистрируйте основные средства (маршрутизаторы, транспорт, оборудование). SAMM отслеживает их стоимость и амортизацию во времени.
  • Касса — управляйте вашими кассовыми и банковскими счетами и вашими счетами капитала: собственный капитал, где взнос — это деньги, которые владелец вкладывает в бизнес, а изъятие — это деньги, взятые из него. Капитал не является выручкой и никогда не появляется в Отчёте о прибылях и убытках.

Отчёты — финансовая отчётность

Вкладка Отчёты — это представление бухгалтера. Пять отчётов, каждый с диапазоном дат и экспортом в PDF:

ОтчётОтвечает на вопрос
Прибыли и убыткиДоходы против расходов и чистая прибыль за диапазон дат. По методу начисления — доход учитывается при выставлении счёта, расходы при возникновении, а не при движении денег.
Бухгалтерский балансНа дату: то, чем вы владеете (активы), против того, что вы должны (обязательства) плюс капитал. Значок сбалансировано подтверждает, что обе стороны совпадают.
Движение денежных средствПо каждому кассовому счёту — начальный баланс, деньги на входе, деньги на выходе, конечный баланс за диапазон.
Анализ по срокамНепогашенная дебиторская и кредиторская задолженность, распределённая по возрастным группам, чтобы вы могли требовать оплату просроченных счетов и опережать платежи.
РасширенноеСырые книги: Главная книга (каждая строка по одному счёту с текущим сальдо), Оборотно-сальдовая ведомость (проверка сбалансированности книг), Журнал и журнал активности.
Проверка сбалансированности В Оборотно-сальдовой ведомости столбцы дебета и кредита каждого счёта должны в сумме быть равны — это доказательство того, что книги в порядке. Если она когда-либо не сбалансирована, это указывает на ошибку проводки, которую стоит расследовать.

Повседневные операции

Заявки в поддержку

В SAMM встроена служба поддержки. Абоненты создают заявки из клиентского портала или Telegram-бота, администратор может открыть заявку от имени абонента, а ваша команда работает со всеми ими из Пользователи → Заявки в поддержку.

Очередь заявок

Очередь перечисляет каждую заявку — номер, клиент, тема, приоритет, статус, даты открытия и последнего обновления и число сообщений. Фильтруйте её с помощью:

  • Чипы статуса — по одному на статус заявки, каждый несёт живой счётчик, так что нагрузка видна с первого взгляда.
  • Приоритет — Обычный, Умеренный или Критический.
  • Активные / Отозванные — клиент может отозвать заявку, которая ему больше не нужна; отозванные заявки затемнены и скрыты по умолчанию.
  • Поиск — по номеру заявки, теме или клиенту.

Значок в боковой панели считает открытые заявки, чтобы ничего не было упущено.

Открытие заявки

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

Работа с заявкой

Откройте заявку, чтобы прочитать всю цепочку переписки. Оттуда вы можете:

  • Ответить клиенту — публичное сообщение, которое абонент видит на своём портале и через Telegram-бота.
  • Добавить внутреннюю заметку — сообщение только для персонала, скрытое от клиента, для передаточных заметок внутри вашей команды.
  • Изменить статус и приоритет заявки.

Щёлкните правой кнопкой по любой строке — или используйте её кнопку ⋮ — для тех же действий со статусом, приоритетом, ответом и внутренней заметкой, не покидая очередь.

Повседневные операции

Центр уведомлений

SAMM автоматически информирует абонентов — по email и Telegram — и позволяет рассылать сообщения. Служба samm-notification доставляет всё через одну очередь с ограничением скорости. Страница Система → Центр уведомлений имеет шесть вкладок.

Обзор

Начальная вкладка — живые счётчики (в очереди, отправляется, отправлено сегодня, ошибка, пропущено, отписались), состояние каждого канала доставки и лента самых недавних уведомлений.

Каналы

Настройте, как сообщения покидают SAMM. Email использует собственную учётную запись уведомлений, отдельную от SMTP восстановления пароля в Настройках. Telegram использует токен бота. Каждый абонент из клиентского портала выбирает, какие каналы он хочет, и может полностью отписаться.

Сообщения

Шаблоны сообщений, по одному набору на событие. Отредактируйте текст любого уведомления — напоминания о продлении, поступления и остальное — чтобы каждое сообщение уходило вашим собственным голосом и на вашем языке.

Правила и таймеры

Эта вкладка управляет тем, когда и как срабатывают автоматические уведомления. Для каждого события вы управляете:

  • Включено ли правило (вкл).
  • Игнорировать отписку — когда установлено, сообщение доходит до каждого абонента, даже если он отписался. Оставьте это для важных транзакционных сообщений.
  • Тайминг — например, за сколько дней до истечения срока отправляется напоминание о продлении.
  • Доставка и ограничение скорости — воркер опустошает очередь по одному пакету за тик; размер пакета и интервал тика вместе задают темп отправки сообщений, так что большая рассылка никогда не перегружает ваш почтовый сервер.

События, которые SAMM может выпускать самостоятельно, включают напоминание о продлении (перед истечением подписки), уведомление об истечении (когда она истекает), предупреждение о квоте (когда лимит трафика подходит к концу), квитанцию об оплате (когда записан платёж) и план продлён.

Рассылка

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

Исходящие

Каждое сообщение, которое SAMM поставил в очередь или отправил, со статусом доставки по каждому сообщению, чтобы вы могли подтвердить, что уведомление дошло до абонента, или увидеть, почему оно не дошло.

Система

WireGuard VPN

SAMM может запускать сервер WireGuard VPN на хосте SAMM — обычно для удалённого административного доступа к машине SAMM и управляющего доступа к MikroTik за ней. Он управляется полностью из Система → VPN; shell не нужен.

Вкладка сервера

  1. Нажмите Сгенерировать ключи, чтобы создать пару ключей сервера. Открытый ключ сервера появляется после генерации — он нужен клиентам.
  2. Задайте Порт прослушивания (UDP, по умолчанию 51820), Адрес туннеля сервера (CIDR на интерфейсе wg0, по умолчанию 10.254.254.1/24) и Диапазон IP клиентов — начальный и конечный адреса, которые SAMM автоматически выдаёт новым пирам.
  3. Включите Включить WireGuard VPN и нажмите Сохранить — SAMM поднимает интерфейс wg0. Переключатель заблокирован, пока не появятся ключи сервера.

Вкладка клиентов

Нажмите Добавить клиента, дайте пиру имя, и SAMM назначит ему следующий адрес из диапазона клиентов. Для каждого пира вы можете скачать его файл конфигурации, отсканировать QR-код с помощью мобильного приложения WireGuard или скопировать готовые команды MikroTik RouterOS, чтобы вывести маршрутизатор на VPN. Пиры можно включать/выключать или удалять; цвета статуса показывают, подключён ли каждый, устарел или никогда не был виден.

Перегенерация ключей разрушительна Перегенерация ключей меняет пару ключей сервера. Каждая уже развёрнутая конфигурация клиента содержит старый открытый ключ сервера и перестанет подключаться, пока вы не раздадите заново обновлённую конфигурацию. Интерфейс защищает это диалогом с вводом для подтверждения.

Система

Cloudflare Tunnel

Туннель Cloudflare Zero Trust публикует SAMM в публичный интернет без открытия каких-либо портов firewall — полезно, когда хост SAMM находится за NAT. Он управляется из Система → Cloudflare Tunnel.

Статус службы

Страница открывается на карточке статуса, которая сообщает состояние коннектора:

СостояниеЗначение
РаботаетТуннель активен и передаёт трафик
ОстановленНастроен, но сейчас не работает
Не настроенБинарный файл присутствует — вставьте токен для настройки
Не установленПерезапустите install.sh, чтобы установить бинарный файл cloudflared

Она также показывает версию cloudflared и настроен ли коннектор на автозапуск при загрузке.

Настройте туннель

  1. В панели Cloudflare Zero Trust (one.dash.cloudflare.com) откройте Networks → Tunnels и Create a tunnel.
  2. Выберите коннектор Cloudflared, назовите туннель и сохраните. На шаге установки скопируйте только токен — длинную строку после --token.
  3. Вставьте его в SAMM и нажмите Настроить туннель. SAMM передаёт токен cloudflared и запускает коннектор.
  4. Вернувшись в Cloudflare, добавьте Public hostname: выбранный вами адрес, тип HTTP, URL localhost:80 (проксируется nginx — рекомендуется) или localhost:8000 (напрямую к API).

В течение нескольких секунд значок статуса становится зелёным, и SAMM доступен по публичному имени хоста. После настройки действия в один клик позволяют Запустить, Остановить или Перезапустить коннектор, Заменить токен, чтобы ротировать его, или Удалить туннель (действие с вводом REMOVE для подтверждения).

Никаких открытых портов, токен никогда не хранится в базе данных Туннель устанавливает исходящее соединение с edge-узлом Cloudflare — на сервере никогда не открывается ни один порт firewall. Токен передаётся cloudflared и хранится в /etc/cloudflared/; SAMM никогда не сохраняет его в базе данных. TLS завершается на edge-узле Cloudflare, поэтому сам SAMM работает по обычному HTTP на loopback.

Система

Настройки

Система → Настройки содержит живые, перезагружаемые на лету параметры. Демоны перечитывают их на своём следующем тике — перезапуск службы не нужен. Настройки организованы в вкладки.

Общие параметры

ПараметрПо умолчаниюУправляет
samm-radius interval30 sКак часто оцениваются события по времени и отправляются CoA
samm-worker interval60 sПериодичность ping маршрутизатора + синхронизации MikroTik API
Промежуточный интервал учёта60 sИнтервал учёта, отправляемый на маршрутизаторы
Время ежедневного сброса00:00Когда обнуляются счётчики ежедневного использования
Часовой пояс сервераUTCЧасовой пояс для окон скорости и ежедневного сброса
Порт CoA по умолчанию3799UDP-порт по умолчанию для пакетов CoA
Максимум повторов CoA3Число повторов перед переходом к Disconnect-Request

Уменьшите интервал samm-radius для более строгого применения; увеличьте его, чтобы снизить нагрузку.

Вкладка ISP

Задайте идентичность вашего ISP и загрузите логотип ISP. Логотип автоматически масштабируется и появляется на печатных картах hotspot и PDF-счетах.

Вкладка Email

Настройте SMTP-сервер, используемый для кодов восстановления пароля, отправляемых администраторам и клиентам (хост, порт, SSL/STARTTLS, имя пользователя, адрес отправителя, пароль). Нажмите Проверить соединение, чтобы проверить учётные данные без отправки почты.

Две учётные записи email Вкладка Email здесь предназначена только для OTP / восстановления пароля. Учётная запись, используемая для уведомлений клиентам, настраивается отдельно в Центре уведомлений.

Система

Администраторы и роли

Система → Администраторы управляет тем, кто может входить в административный портал и что каждый может делать. Она имеет две вкладки: Администраторы и Роли.

Учётные записи администраторов

Создайте администратора с именем пользователя, паролем, необязательным email и ролью. Из меню ⋮ строки вы можете изменить роль или пароль, отключить учётную запись или удалить её. Только суперадминистратор может управлять другими администраторами.

Роли и разрешения

Роль предоставляет доступ по областям. Встроенная роль суперадминистратора всегда имеет полный доступ и не может быть изменена. Создавайте пользовательские роли для ограниченного доступа — новая роль начинается без доступа, пока вы не зададите её разрешения.

Для каждой области SAMM (абоненты, планы, NAS, бухгалтерия, инструменты, настройки и так далее) роль устанавливается на один из трёх уровней:

УровеньЗначение
Не разрешеноОбласть полностью скрыта из боковой панели
ПросмотрДоступ только для чтения
РедактированиеПолный доступ — создание, изменение, удаление

Область видимости данных

Каждая роль также имеет область видимости. Видеть всех клиентов и карты означает, что роль видит каждую запись; если это снято, её администраторы видят только абонентов и карты, которые они создали сами — идеально для реселлеров или сотрудников филиалов.

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

Система

Инструменты

Раздел Инструменты объединяет массовые и обслуживающие утилиты.

Резервное копирование и восстановление

Создайте полный снимок базы данных перед любым крупным изменением. Резервная копия — это сжатый gzip архив pg_dump, хранящийся на сервере, каждый с заголовком SAMM.

  • Создать резервную копию — при желании добавьте примечание; отметьте Пропустить использование и историю для меньшего, более быстрого дампа, который опускает объёмные таблицы журналов.
  • Скачайте резервную копию на ваш ПК или загрузите предыдущую резервную копию SAMM обратно на сервер.
  • Восстановление перезаписывает текущую базу данных — защищено диалогом с вводом RESTORE для подтверждения.

Очистка истории

Навсегда удаляйте старые строки журналов и истории, чтобы освободить место в базе данных. Выберите пресет хранения и подтвердите. Очистка урезает закрытые сессии RADIUS, записи post-auth, сводки ежедневного использования, историю маршрутизаторов/интерфейсов, журналы ограничений, применённые записи аудита и завершённые строки CoA. Она никогда не касается активных сессий, команд в очереди, ожидающих CoA или несбрасываемых итогов использования за всё время.

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

Экспорт / Импорт

Массовый экспорт и импорт для Пользователей, Планов и NAS в формате .csv или .xlsx. Скачайте шаблон (правильные столбцы плюс образец строки) или снимок текущих данных, заполните его и загрузите обратно. Каждая строка проверяется и показывается на экране предпросмотра — дубликаты и недопустимые строки выявляются, и вы выбираете, пропускать ли дубликаты или обновлять их на месте — прежде чем что-либо записывается.

Массовые изменения

Примените одно изменение — владелец, дата истечения, статус или автопродление — к каждому абоненту, соответствующему фильтру, за один прогон. Выберите изменение, постройте фильтр (статус / план / владелец / поиск), просмотрите соответствующий список и подтвердите.

Массовое удаление

Навсегда удалите множество абонентов или карт hotspot сразу, выбранных по фильтру. Удаление абонента также удаляет его историю использования, сессии, учёт RADIUS и счета, и отключает любую активную сессию. Защищено диалогом с вводом DELETE для подтверждения.

Система

Языки и темы

Языки

Административный и клиентский порталы полностью переводимы. Шесть языков поставляются встроенными: английский, арабский (справа налево), турецкий, французский, испанский и немецкий. Каждый пользователь выбирает свой язык из верхней панели или своего профиля; выбор запоминается для каждой учётной записи.

Редактор переводов

Суперадминистратор может редактировать переводы вживую из Система → Переводы — без перезапуска, без правки файлов. Редактор также создаёт совершенно новые языки и импортирует/экспортирует книги переводов в формате .xlsx, так что вы можете локализовать SAMM на любой язык, который вы обслуживаете.

Темы

SAMM поставляется с 11 визуальными темами, светлыми и тёмными. Каждый пользователь выбирает тему из верхней панели; предпросмотр обновляется мгновенно и сохраняется для каждой учётной записи. IT- терминология никогда не переводится, поэтому технические экраны остаются точными на любом языке.

Система

Журнал аудита

Система → Журнал аудита — это запись действий администратора — и очередь команд, которая их выполняет. Когда вы сбрасываете счётчик, меняете план или продлеваете абонента, SAMM записывает действие здесь, а не касается активного маршрутизатора напрямую.

Каждая запись показывает действие, его цель, администратора, который его инициировал, когда это произошло, и было ли оно уже применено. Служба samm-radius опустошает ожидающие записи на своём следующем тике и, где нужно, выпускает CoA для обновления активной сессии. Значок в боковой панели считает записи, всё ещё ожидающие; панель состояния конвейера на Панели управления отслеживает очередь.

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

Лицензирование

Лицензирование и тарифы

Каждая установка SAMM лицензируется на устройство — план привязан к этой установке, так что вы можете запускать несколько серверов SAMM, каждый на своём уровне. Уровень задаёт три числовых лимита.

УровеньПользователи AAAКарты HotspotNAS / маршрутизаторы
Незарегистрировано252001
Free1005002
Pro2,0005,0005
Pro Maxнеограниченнонеограниченнонеограниченно

Свежая установка работает незарегистрированной на минимальном пороге. Каждая функция доступна на каждом уровне — уровень задаёт только лимиты. Создание абонента, карты или NAS сверх лимита блокируется, пока вы не повысите уровень; данные никогда не теряются.

Активация и повышение уровня

  1. Откройте Система → Лицензия.
  2. Активируйте, войдя с вашей учётной записью SecuryTik — или используйте Привязать это устройство, которое показывает код, подтверждаемый вами на samm.securytik.com без ввода вашего пароля на сервере. Устройство активируется на уровне Free.
  3. Чтобы подняться выше, запросите Pro или Pro Max с той же страницы — администратор SecuryTik рассматривает и одобряет это.

Страница лицензии также перепроверяет лицензию по требованию и показывает ваше текущее использование относительно каждого лимита. Отвязать устройство возвращает установку на незарегистрированный уровень без удаления каких-либо данных.

Если платная лицензия истекает

SAMM никогда не удаляет данные. Истёкшая лицензия понижается плавно:

ЭтапЧто происходит
ПредупреждениеБаннер-напоминание; всё продолжает работать
Льготный периодКороткий период для повторной активации; абоненты остаются онлайн
Мягкая блокировкаФоновые службы останавливаются; RADIUS продолжает аутентификацию около 7 дней
Жёсткая блокировкаСлужбы останавливаются, кроме страницы повторной активации

Повторная активация на любом этапе автоматически перезапускает все службы — все данные и история абонентов сохраняются.

Автоматические обновления

Автообновление не зависит от лицензирования — обновляются все тарифы, и истёкшая лицензия никогда его не блокирует. SAMM ежедневно проверяет наличие нового подписанного выпуска. В разделе System → License вы можете переключаться между режимами notify (по умолчанию — баннер с кнопкой Apply now) и auto (применение без участия оператора). Каждое обновление проверяется, резервируется и применяется на месте. Вы также можете в любой момент повторно запустить установщик — обновление идемпотентно.

Для ваших абонентов

Клиентский портал и бот

SAMM предоставляет каждому абоненту два интерфейса самообслуживания — веб-портал и Telegram- бот — чтобы они могли проверять расход и оплачивать без обращения к вам.

Клиентский портал

Абоненты входят в корневой раздел сайта SAMM (/), используя своё имя пользователя SAMM и пароль. На портале есть:

СтраницаЧто видит абонент
ОбзорСтатус учётной записи, тариф, срок действия, расход за сегодня и за месяц, любые неоплаченные счета
Расход и сессииВсего скачано/загружено, бюджет времени в сети и полная история сессий
Мои тарифыТекущий тариф плюс каталог доступных тарифов
Мои счетаИстория биллинга со скачиванием PDF в один клик
Заявки в поддержкуСоздание и отслеживание обращений в поддержку
ПрофильРедактирование контактных данных, смена пароля, выбор языка и темы, управление уведомлениями

В разделе Profile абонент подключает свою учётную запись Telegram, задаёт приоритет предпочитаемых каналов уведомлений или полностью отказывается от уведомлений. Если он забыл пароль, ему отправляется OTP-код по электронной почте (для этого требуется настроенная вкладка Email).

Telegram-бот

Служба samm-telegram запускает интерактивного бота самообслуживания. Абонент отправляет /start, один раз подтверждает свою учётную запись именем пользователя и паролем SAMM (бот сразу удаляет сообщение с паролем), после чего может полностью из чата:

  • Проверять свой тариф, квоту, расход и срок действия
  • Просматривать и скачивать счета в PDF
  • Обновлять свой профиль и менять пароль
  • Создание и отслеживание обращений в поддержку

Бот также доставляет автоматические уведомления — напоминания о продлении, уведомления об окончании срока, предупреждения о квоте и чеки — абонентам, подключившим Telegram.

Справочник

Эксплуатация SAMM

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

Управление службами

# Restart all SAMM services
systemctl restart samm-api samm-radius samm-worker samm-notification samm-telegram

# Live logs for one service
journalctl -u samm-api    -f
journalctl -u samm-radius -f

# Validate the FreeRADIUS config after any change
freeradius -CX

Admin CLI

Для быстрых операций с абонентами из командной строки. Каждая команда ставится в очередь в журнале аудита и применяется при следующем такте samm-radius — точно так же, как действия в интерфейсе.

CLI="sudo -u samm /opt/samm/venv/bin/python -m samm_radius.cli"

$CLI reset-quota      alice          # reset a limit counter
$CLI reset-daily      alice
$CLI reset-uptime     alice
$CLI reset-expiration alice
$CLI change-plan      alice home-50M # switch a subscriber's plan

Файлы конфигурации

ФайлСодержит
/etc/samm/samm.yamlDSN базы данных, размеры пула соединений, уровень логирования
/etc/samm/api.envСекреты сессий портала и настройки SMTP для восстановления пароля
/etc/samm/secret.keyКлюч шифрования для сохранённых паролей API маршрутизаторов

Эти файлы сохраняются при обновлениях и никогда не перезаписываются при повторном запуске установщика. Настраиваемые во время работы параметры (интервалы циклов, время ежедневного сброса, CoA- порты) вместо этого находятся в Settings и применяются без перезапуска.

Обновление SAMM

Либо позвольте SAMM обновиться самому из System → License, либо повторно запустите установщик — см. Installation → Upgrading. Оба пути повторно применяют миграции и перезапускают службы; ваша конфигурация и данные остаются нетронутыми.

Резервное копирование и восстановление

Используйте Tools → Backup & Restore для полного снимка базы данных перед любым значимым изменением. Чтобы восстановить систему на новом хосте, установите SAMM, а затем восстановите резервную копию.

Справочник

FAQ и устранение неполадок

Какие операционные системы поддерживает SAMM?

Ubuntu 22.04 LTS, Ubuntu 24.04 LTS и Debian 12. Только серверный Linux — настольные варианты не поддерживаются. Установщик требует systemd, свежую установку PostgreSQL (она настраивается для вас) и доступ root.

Нужно ли интернет-соединение для работы SAMM?

Нет. SAMM работает полностью на вашем собственном сервере и аутентифицирует абонентов локально по RADIUS. Единственный исходящий трафик — это периодический сигнал лицензии на сервер лицензий SecuryTik, чтобы ваш тариф оставался подтверждённым.

Можно ли запускать SAMM в облаке или он должен быть локальным (on-prem)?

Подходит любой вариант. Большинство операторов работают локально рядом со своими магистральными маршрутизаторами; некоторые запускают на небольшой облачной ВМ с обратным туннелем Cloudflare Zero Trust. Единственное требование — чтобы маршрутизаторы MikroTik могли обращаться к серверу SAMM по портам RADIUS (1812/1813 UDP), а SAMM мог обращаться к маршрутизаторам через MikroTik API.

Нужно ли перезапускать FreeRADIUS при добавлении или удалении маршрутизатора?

Нет. SAMM определяет клиентов NAS динамически из базы данных, поэтому добавление, редактирование или удаление маршрутизатора в MikroTik → NAS вступает в силу без перезапуска.

Как быстро вступает в силу смена тарифа или сброс счётчика?

Действия администратора ставятся в очередь и применяются службой samm-radius при следующем такте — по умолчанию в течение 30 секунд. Если абонент онлайн, SAMM также отправляет живой CoA для обновления сессии. Уменьшите интервал samm-radius в System → Settings для более точного тайминга.

Что происходит с моими данными, если платная лицензия истекает?

Ничего никогда не удаляется. Истёкшая лицензия последовательно проходит через предупреждение, льготный период, мягкую блокировку (RADIUS продолжает аутентификацию около недели) и, наконец, жёсткую блокировку. Повторная активация на любом этапе перезапускает все службы с сохранением всех данных.

Бесплатен ли SAMM? Что добавляет Pro?

Тариф Free бесплатен навсегда и включает все функции. Pro и Pro Max не открывают функции — они повышают лимиты на пользователей AAA, карты Hotspot и маршрутизаторы. См. Licensing & tiers.

Абонент не может пройти аутентификацию — с чего начать?

Убедитесь, что общий секрет RADIUS маршрутизатора точно совпадает с записью NAS, что на маршрутизаторе включён RADIUS для PPP / Hotspot, а учётная запись абонента активна и не истекла. Следите за journalctl -u samm-api -f и логом FreeRADIUS и убедитесь, что маршрутизатор может обращаться к хосту SAMM по UDP 1812/1813.

Нужна дополнительная помощь?

Напишите на [email protected], чтобы сообщить об ошибке или запросить функцию.