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

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

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

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

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

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

Прочитать полное руководство по установке
install.sh — bash
curl -fsSL https://samm.securytik.com/install.sh | sudo bash
Плейлист Видеокурс SAMM от установки до ежедневной работы — полный видеокурс Бесплатный пошаговый плейлист на YouTube, который проведёт вас через установку SAMM и повседневную работу с ним — то же, что и в этом руководстве, но на видео. Смотреть на YouTube

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

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

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

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

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

Абоненты IPoE/DHCP идентифицируются по идентификатору канала DHCP Option 82 (физический номер порт доступа — профессиональный способ интернет-провайдера) или MAC устройства, а радиус-пароль DHCP-сервера — просто собственный общий секрет RADIUS маршрутизатора, поэтому не нужно ничего дополнительно предоставлять.

Двойной стек IPv6 — это опция по согласию: каждый подписчик может получить IPv6. наряду с IPv4. Включите его в мастере маршрутизатора и выберите делегированный префикс (DHCPv6-PD). длина — /56 по умолчанию или от /48 до /64 — и блоки IPv6 для раздачи. На каждом Команда Access-Accept SAMM возвращает пул IPv6 глобальной сети плюс префикс маршрутизации, делегированный абоненту. LAN, поэтому собственный маршрутизатор клиента (в режиме маршрутизации) разделяет его на /64 и запускает SLAAC для их устройства — стандартная модель делегирования префиксов интернет-провайдера. Он работает с PPPoE, Hotspot и IPoE, а для бизнес-клиентов за каждым подписчиком можно закрепить статический префикс IPv6.

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

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 и IPoE/DHCP, а также предоплаченные ваучер-карты Hotspot с печатными PDF.

Оплата

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

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

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

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

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

Система

Встроенный VPN WireGuard , туннель Cloudflare , восемь языков, пользовательский интерфейс с возможностью оформления тем.

Уведомления

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

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

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

Установка

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

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

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

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

Установка

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

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

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

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

Если github.com заблокирован в вашей стране, используйте зеркало на Cloudflare — тот же установщик, ничего не скачивается с GitHub. (Стандартная команда выше сама определяет блокировку GitHub и переключается на это зеркало.)

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

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

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

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

Установка

Вариант 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 в /opt/samm-docker/ с уже заполненным сильным случайным паролем базы данных и запустит стек. Образ mhdhaidarah/samm собирается из того же скомпилированного бандла, что и bare-OS-установка — закрытый исходный код by design.

Мультиарх — один и тот же тег публикуется для linux/amd64 и linux/arm64, и нужный вариант выбирается автоматически из тега: docker pull на любом Docker-хосте (Intel/AMD, ARM-сервер, Mac с Apple Silicon) и MikroTik RouterOS 7.23+ на самом роутере. Один файл, все платформы.

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

git clone https://github.com/mhdhaidarah/samm-docker.git
cd samm-docker
# optional: edit docker-compose.yml and replace change-me-strong-random-string
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
# optional: notepad docker-compose.yml — replace change-me-strong-random-string with your own password
docker compose pull
docker compose up -d

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

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.23+)

Тот же SAMM, без Linux-машины. Если ваше устройство MikroTik поддерживает пакет container и к нему подключён USB-накопитель или microSD, весь стек можно запустить прямо на роутере — тем же docker-compose.yml, что и везде. RouterOS 7.23+ автоматически подтягивает нужную архитектуру ЦП из мультиарх-тегов, так что ничего специфичного для роутера скачивать не нужно.

Поддерживается: каждый маршрутизатор MikroTik с поддержкой контейнеров — RB5009, hAP ​​ax², CCR2004-1G-12S+2XS, CCR2116, CCR2216, L009 и аналогичные (arm64), а также x86 RouterOS и CHR (amd64). Не поддерживается: устройства armv7/mipsbe/smps/tile/ppc (hEX, RB750, старые модели RB) — нет поддержки контейнеров или слишком мало ОЗУ/ЦП для стека SAMM . RouterOS 7.23 или более поздней версии (более старые версии не могут выбрать архитектуру из тега с несколькими арками).

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

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

/system device-mode update container=yes
# HARD reboot the router (unplug the power) — a soft /system reboot
# will NOT activate the container feature

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-файл

Один файл для всех платформ. Замените change-me-strong-random-string (пароль Postgres — одно и то же надёжное значение везде) и change-me-random-token. Затем в WebFig/WinBox: Container → Apps → + New → YAML, вставьте, укажите диск ext4 из шага 2 как хранилище и отправьте. RouterOS 7.23+ автоматически подтягивает нужную архитектуру ЦП из тегов образов.

Застряло на "waiting for reverse proxy"? В RouterOS 7.23+ снимите флажок Use HTTPS в диалоге Apps и разверните заново — эта опция управляет прокси веб-интерфейса приложения, а не загрузкой образов.
docker-compose.yml
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
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U samm -d samm"]
      interval: 10s
      timeout: 5s
      retries: 12

  samm-api:
    image: mhdhaidarah/samm:latest
    restart: unless-stopped
    command: ["api"]
    environment:
      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
      WA_BRIDGE_URL: http://wa-bridge:8787
      WA_BRIDGE_TOKEN: change-me-random-token
    depends_on:
      postgres:
        condition: service_healthy
    healthcheck:
      test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:8000/health >/dev/null || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 30
      start_period: 30s
    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  # see samm-api notes — parser-agnostic role hint
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
    depends_on:
      postgres:
        condition: service_healthy
      samm-api:
        condition: service_healthy
    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  # see samm-api notes — parser-agnostic role hint
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
    depends_on:
      postgres:
        condition: service_healthy
      samm-api:
        condition: service_healthy
    cap_add:
      - NET_RAW
    sysctls:
      - net.ipv4.ping_group_range=0 2147483647
    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  # see samm-api notes — parser-agnostic role hint
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
      WA_BRIDGE_URL: http://wa-bridge:8787
      WA_BRIDGE_TOKEN: change-me-random-token
    depends_on:
      postgres:
        condition: service_healthy
      samm-api:
        condition: service_healthy
    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  # see samm-api notes — parser-agnostic role hint
      POSTGRES_HOST: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: samm
      POSTGRES_USER: samm
      POSTGRES_PASSWORD: change-me-strong-random-string
      TZ: UTC
    depends_on:
      postgres:
        condition: service_healthy
      samm-api:
        condition: service_healthy
    volumes:
      - etcsamm:/etc/samm
      - sammvar:/opt/samm/var
      - sammlogs:/var/log/samm

  wa-bridge:
    image: mhdhaidarah/samm:wa-bridge-latest
    restart: unless-stopped
    environment:
      WA_BRIDGE_TOKEN: change-me-random-token
      TZ: UTC
    depends_on:
      - samm-api
    volumes:
      - wabridge_auth:/data/auth      # multi-device session — persists the QR link

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

volumes:
  pgdata: {}
  etcsamm: {}
  sammvar: {}
  sammlogs: {}
  sammlocales: {}
  wabridge_auth: {}      # WhatsApp bridge multi-device session

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

После запуска контейнеров SAMM откройте портал администрирования в браузере и войдите в систему, используя следующие учетные данные:

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

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

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

5. Обновление — резервное копирование и восстановление вручную.

При обновлении приложения-контейнера MikroTik ваша база данных будет удалена. RouterOS не может изменить версию установленного приложения. Единственный способ — удалить app и добавьте его снова, а при его удалении будет удалено все, что хранилось в приложении, включая SAMM база данных. Создайте резервную копию и загрузите ее на свой компьютер ПРЕЖДЕ ЧЕМ удалять приложение. Резервная копия, оставшаяся на маршрутизаторе, удаляется вместе со всем остальным.

Чтобы переместить установку контейнера MikroTik в новую версию:

  1. В SAMM перейдите в раздел Инструменты → Резервное копирование , создайте резервную копию и загрузите файл на свой компьютер .
  2. На роутере удалите приложение и добавьте его снова с новым версия.
  3. Откройте новый файл SAMM , выберите Инструменты → Резервное копирование и восстановите файл, который вы скачали.

Это относится только к контейнеру MikroTik . В Docker ( Linux , Windows или виртуальная машина Linux ) обновление — docker compose pull , тогда docker compose up -d , и ваши данные не будут затронуты — тома находятся за пределами контейнеры и выжить.

Установка

Вариант E — SAMM Server ISO (установка-appliance)

SAMM Server ISO превращает любую пустую машину или ВМ в готовый сервер SAMM: загрузитесь, выберите DHCP или статический IP на единственном экране, подтвердите — и всё. Образ устанавливает Ubuntu Server 24.04 LTS (минимальный), задаёт имя хоста samm-server, а при первой загрузке автоматически скачивает и устанавливает последний выпуск SAMM — ISO никогда не устаревает. Консоль показывает заставку SAMM и баннер входа с IP сервера, адресом панели администратора и учётными данными по умолчанию, а команда samm-tools даёт прямой доступ к инструментам обслуживания (проверка состояния, резервное копирование и восстановление базы, сброс пароля администратора).

ISO стирает первый диск машины. Загружайте его только на оборудовании или ВМ, выделенных под SAMM. Если во время установки нет интернета, настройка сама завершится, как только он появится.

Запишите образ на USB-накопитель (Rufus, balenaEtcher или dd) или подключите к ВМ, загрузитесь и ответьте на вопрос о сети. Учётные данные по умолчанию после установки — панель: admin / admin, ОС: samm / samm или root / sammсмените их все.

Скачать SAMM Server ISO 2.2 GB

SHA-2568b6d57e286a4c0524d96b5b4970b57079113e000fc8229f94360410c12f5102e

Установка

Справочник установщика

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

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

ПеременнаяЭффект
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; каталоги переводов компилируются. Если Python дистрибутива не совпадает со скомпилированным пакетом, установщик автоматически скачивает подходящий автономный интерпретатор в /opt/samm/runtime
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 и активируйте, чтобы снять ограничения — см. Лицензирование и тарифы.

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

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

Миграция с другой системы

Уже используете другую систему биллинга RADIUS? SAMM читает её данные и заново создаёт ваши планы и абонентов, так что ничего не придётся вводить вручную. Абоненты сохраняют свой сервисный пароль и дату окончания, а значит продолжают входить точно так же, как раньше.

Откройте Инструменты → Экспорт / Импорт и выберите свою прежнюю систему в разделе Миграция с другой системы. Как и остальные Инструменты, функция доступна только суперадминистраторам.

Что загружать

Прежняя системаФайлОткуда он берётся
SAS4 / Radius Manager .sql или .sql.gz Резервная копия MySQL старой базы данных
Super Speed Radius .sql или .sql.gz Резервная копия MySQL старой базы данных
Pro Radius .xlsx или .csv Её экспортированный список абонентов — эта система не умеет выгружать резервную копию

Резервные копии баз данных часто занимают несколько гигабайт; это нормально, загружайте файл как есть. Сжатые копии не нужно предварительно распаковывать.

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

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

Что переносится

  • Планы — название, скорости, цена, срок и квота трафика, если прежняя система их хранит.
  • Абоненты — логин, сервисный пароль, имя, контактные данные, дата окончания, план, статический IP и MAC.
  • Абоненты, отключённые в прежней системе, остаются отключёнными.

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

Значения, не соответствующие своему столбцу

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

Pro Radius подробности

Pro Radius экспортирует абонентов, но не планы, поэтому SAMM выводит планы из уровня услуги каждого абонента, беря скорость из его названия (услуга «4MBPS» становится планом на 4 Мбит/с). Трёх вещей в этом файле попросту нет, и они задаются разумными значениями по умолчанию, которые следует потом проверить:

  • Срок — установлен в 1 месяц. Настоящая дата окончания каждого абонента импортируется без изменений, так что это влияет только на будущие продления.
  • Скорость отдачи — приравнена к скорости приёма.
  • Цена — установлена в 0.
Проверьте планы перед выставлением счетов После импорта из Pro Radius откройте Планы и задайте для каждого реальную цену и период. Пока вы этого не сделаете, такие планы будут выставляться по нулю.

Полезно знать

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

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

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

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

Свежая установка уже содержит 9 готовых тарифов — восемь месячных ступеней скорости плюс тариф-ограничитель «Expired» — продавайте сразу или создавайте свои. Посев выполняется только при первой установке и никогда не трогает добавленные вами тарифы.

Создать план

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

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

Поля плана

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Абоненты

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

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

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

Создайте много подписчиков одновременно

Новые пакетные пользователи создают пронумерованную серию аккаунтов за один проход – обычный способ передать блок логинов деревенскому офису, отелю или реселлеру. Выберите, сколько, с какого числа начинать и сколько цифр дополнять (3 дает 001 , 002 , …); все остальное — план, срок действия, автоматическое продление — заполняется один раз и применяется ко всем из них. У них общий пароль.

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

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

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

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

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

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

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

Страница деталей также показывает пароль абонента за кнопкой-глазом (с копированием в один клик) — удобно, когда клиент спрашивает свои данные.

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

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

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

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

Ограничить подписчика определенными маршрутизаторами

Абонента (или целую группу карт) можно прикрепить к определенному NAS. маршрутизаторы из формы редактирования. Если маршрутизаторы не выбраны, учетная запись работает на любом НАН; если выбран один или несколько, аутентификация принимается только от тех маршрутизаторы — принудительное закрытие при сбое внутри самого RADIUS. Изменение набора отключает любые немедленно запустить живую сессию на теперь запрещенном маршрутизаторе. В сочетании с администратором By-NAS масштабирование: именно так многофилиальные и франчайзинговые установки удерживают абонентов каждого филиала. на маршрутизаторах этого филиала.

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

Карты Hotspot

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

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

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

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

Управление группой

Через меню ⋮ группы можно включить или отключить все карты разом, продлить дату «действительно до», добавить карты в партию или изменить её данные. Отдельную карту можно сбросить (квота, время или срок) или отключить со страницы карты.

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

Статусы карт

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

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

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

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

Самообслуживание — гости авторизуются самостоятельно.

Противоположность ваучера: никто ничего и никто не печатает стоит за столом. Посетитель подключается к вашей точке доступа и нажимает Зарегистрироваться . на странице входа вводит свое имя и номер мобильного телефона, и SAMM отправляет ему пароль по SMS, WhatsApp или по электронной почте. Они вводят его на той же странице, и они онлайн — и вы сохраняете именные экспортируемые записи всех, кто использовал гостя сеть.

Типичные места проведения: рестораны и кафе, отели и гостевые дома, выставки и ярмарки, конференции, торговые центры, клиники и залы ожидания, спортивные залы, коворкинги, салоны, залы ожидания в аэропортах, стадионы, кампусы, библиотеки, автосалоны, места проведения свадеб, курорты и кемпинги.

Включение его

  1. Сначала настройте канал доставки. Центр уведомлений → включите SMS или WhatsApp и отправьте себе тестовое сообщение. Ничто другое не работает, пока не работает один канал.
  2. Самообслуживание → Настройки : отметьте галочкой. Разрешить гостям регистрироваться , выбрать каналы для предложить и установить, как долго будет действовать пароль и как долго гость должен ждать прежде чем просить другого.
  3. Оставьте паролей от в системе самообслуживания. группа карт, если у вас нет причины ее менять — эта группа определяет скорость и сколько устройств могут использовать один пароль.
  4. Включите вкладку "Регистрация" для каждого используемого вами варианта входа в систему — см. ниже. Это шаг, который люди упускают.

Страница входа — шаг, который люди пропускают

Вкладка «Регистрация» отображается в соответствии с дизайном входа и отключена. по умолчанию. Откройте Диспетчер MikroTik → маршрутизатор → Страница входа , отредактируйте используемый вами дизайн и установите флажок Разрешить самообслуживание . Вы можете перефразировать каждое предложение, которое гость видит на одном и том же экране — метка вкладки «Регистрация», вступление строку, две метки полей, кнопку и пять ответов («ваш пароль указан свой вариант», «один у вас уже есть», «пожалуйста, повторите попытку позже», «не удалось его отправить», «Регистрация недоступна»).

Затем нажмите «Нажать» — и нажимайте ее еще раз после каждого обновления SAMM . Страницы входа в Hotspot хранятся на собственной флэш-памяти маршрутизатора , не на SAMM . Обновление SAMM не приводит к их повторной отправке, поэтому маршрутизатор продолжает обслуживать свои старые страница — без вкладки «Регистрация» — пока вы не нажмете еще раз. SAMM предупреждает вас при входе в систему Вкладка «Страницы», когда маршрутизатор обслуживает страницы старше установленной версии, и На странице самообслуживания указаны все маршрутизаторы, на которых не отображается вкладка, и предлагается их исправить. все сразу.

Правила, которые останавливают злоупотребления

  • Один действующий код доступа на номер. Повторный запрос, пока код все еще действителен, говорит гостю проверять свои сообщения вместо отправки другой.
  • Затем установленный вами период ожидания перед этим числом. можно запросить новый.
  • Срок действия отсчитывается с момента отправки пароля , не с первого входа в систему — поэтому код, который не использовался неделю, все еще не работает работа.
  • Дневной лимит, установленный вашей лицензией (см. ниже). Однажды он израсходован, гостей просят повторить попытку позже, а пароли уже выданы. продолжайте работать.
  • Каждая попытка записывается по MAC-адресу устройства как маршрутизатор сообщил об этом — гость не может подделать это из своего браузера.

Лицензия

Самообслуживание имеет лицензию отдельно от вашего плана , на количество паролей в день при установке\n может выйти, и он продлевается в свой собственный день — так что вы можете пользоваться бесплатной версией с платным дополнением,\n или на Pro Max без него. За каждую установку вы получаете 10 в день бесплатно ;\n Лайт повышает его до 50, Тяжелый до 200, а Макс снимает лимит. См. цены .

На странице самообслуживания показаны использованные/разрешенные на сегодня и говорит прямо, когда пособие закончилось. Купите или продлите срок действия с помощью панели управления на securytik.com или спросите в Система → Лицензия и Администратор SecuryTik одобряет это. Код доступа, который не удалось доставить, не используется. ваше пособие.

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

Роутеры (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 (по протоколу обнаружения соседей MikroTik) и добавить их как записи NAS, не вводя адреса вручную. Найденный маршрутизатор можно добавить по IP или автодобавить — бутстрап в один клик: создаёт на маршрутизаторе пользователя управления SAMM, задаёт IP управления и убирает заводской мост.

Автодобавление — для чистых маршрутизаторов Бутстрап в один клик предназначен для заводски чистых (или сброшенных) устройств — на уже настроенном маршрутизаторе он может перезаписать или сломать конфигурацию.

Отправить конфигурацию 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 учёта примерно в 5 минут (значение мастера SAMM) — с этой частотой 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, память, сессии во времени)
ИнтерфейсыКаждый интерфейс с его текущим состоянием, плюс история трафика по каждому интерфейсу
Сайты и приложенияТри подвида: Monitor (сайты и приложения, замеченные на маршрутизаторе, с историей трафика), QoS (приоритеты по приложениям, ниже) и App Filter (DNS-блокировка контента из каталога)

Менеджер

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

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

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

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

ВкладкаЧто вы настраиваете
PPPoEСерверы PPPoE, профили PPP, пулы IP и интервал interim-update учёта RADIUS
HotspotСерверы Hotspot, профили hotspot и профили пользователей, пулы DHCP/IP и страница входа captive-портала
ИнтернетВосходящие каналы WAN — управляемые SAMM WAN и маршруты по умолчанию, при этом любые существующие WAN не от SAMM показываются только для чтения
FirewallПравила фильтра, анализ защищённости маршрутизатора, связность и цели, модули безопасности и резервные копии брандмауэра — Auto-Security делает снимок перед применением и может взвести автооткат по таймеру: набор правил, который вас запер, восстановится автоматически
ОбновлениеОбновления 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, оставляя ваши счётчики нетронутыми.

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

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

  1. Приветствие и определение — SAMM опрашивает маршрутизатор и показывает, что уже настроено, чтобы вы могли пропустить эти пункты при отправке.
  2. Интерфейс bridge — задайте имя LAN bridge.
  3. Порты bridge — выберите, какие физические интерфейсы войдут в bridge.
  4. DNS — задайте вышестоящие резолверы (пресеты в один клик для Google, Cloudflare, Quad9 и других), размер кэша и, при желании, DNS-фильтр контента.
  5. NTP — источник времени маршрутизатора (клиент NTP, опционально раздача времени в LAN).
  6. Интернет — добавьте одно или несколько WAN-подключений (Static / DHCP / PPPoE).
  7. RADIUS в SAMM — направьте маршрутизатор на ваш хост SAMM для аутентификации, учёта и CoA.
  8. Службы — выберите, будет ли мастер создавать сервер PPPoE, Сервер точки доступа или служба IPoE/DHCP и при необходимости включите Двойной стек IPv6 (включено, по умолчанию отключено): выберите делегированный (DHCPv6-PD) длину префикса и блоки IPv6, а мастер создает пулы и присоединяет их к Профиль ГЧП.
  9. Детали PPPoE / Hotspot и брандмауэр — пулы, профили, время аренды, правила брандмауэра и NAT, плюс опциональный пул Expired и блокировка интернета, перенаправляющий истёкших абонентов на страницу SAMM «подписка истекла» вместо мёртвого соединения.
  10. Проверка и отправка — просмотрите точный список команд, которые будут отправлены, затем отправьте их все на маршрутизатор.
Скорость для каждого пользователя приходит из 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 часа. Исправная система держит эту очередь почти пустой.

Жнец устаревшей сессии

Если маршрутизатор выйдет из строя или потеряет соединение, его пакеты Accounting-Stop могут быть потеряны. и во многих системах эти абоненты остаются «онлайн» навсегда. SAMM опросов по сеансам которые прекратили отправку промежуточных обновлений и автоматически закрывают их (завершить причина Reaped-Stale ), поэтому учитываются список живых сеансов, одновременное использование и данные об использовании остаются правдивыми. Тайм-аут – stale_session_timeout_seconds . настройка (по умолчанию 900 с = 15 минут; установите 0, чтобы отключить), и она вступит в силу в реальном времени — нет необходим перезапуск.

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

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

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

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

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

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

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

ПлиткаПоказываетОткрывает
Сейчас в сетиАбоненты с активной сессией RADIUS прямо сейчасПользователи, отфильтрованные по В сети
Активные абонентыАктивные учётные записи, под которыми — общее число абонентовПользователи, отфильтрованные по Активные
ИстёкАбоненты, чья подписка истекла без установленного следующего планаПользователи, отфильтрованные по Истёкшие
Открытые тикетыНерешённые тикеты поддержки (без выполненных и закрытых)Пользователи → Тикеты поддержки
МаршрутизаторыВсего записей 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 месяцев.

Счета

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

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

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

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

ВыборСколько это стоит
Полный счетТолько целые плановые периоды — частичный период округляется до целого.
Сегментированный счетТочное время, пропорционально последнему периоду. Общая сумма округляется до ближайшего целого значения, а разница учитывается как корректировка округления, чтобы книги оставались сбалансированными.
Нет счета-фактурыПоменяйте услугу и ничего не взимайте — продление гудвилла, миграция, исправление.

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

«Нет счета»; это право, а не флажок Ничего не взимать — это финансовое решение, поэтому оно ограничено разрешением для каждой роли в Настройки → Администраторы . Это важнее всего с агенты : агент, чьи подписчики выставляют счета на свой собственный предоплаченный баланс. в противном случае можно было бы продлить, изменить планы и продлить срок действия на весь день, даже не заплатив за их. Для новых ролей право отключается .

Даннинг & предоплаченный кошелек

Помимо разовых счетов, SAMM автоматизирует весь цикл сбора платежей. А график напоминаний устанавливает день выставления счета, день оплаты и день автоматической блокировки – с дополнительными штрафами за просрочку платежа — таким образом подписчикам, просрочившим оплату, напоминают, а затем отключают их без вашего участия смотрю электронную таблицу. Режим предоплаченного кошелька позволяет подписчикам хранить баланс, который автоматически оплачивает счета при продлении; они пополняют его сами из клиентский портал с помощью карты или криптовалюты, и все пополнения и списания заносятся в бухгалтерскую книгу.

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

Расходы

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

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

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

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

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

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

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

Агенты — оптовый биллинг

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

Два долга, чётко разделённые Агент должен вам оптовую цену (в ваших книгах это ваша выручка); клиент должен агенту розничную цену (вне ваших книг — это собственная дебиторка агента). Ваша комиссия — это разница между ними, проводимая как торговая скидка, а не как расход.

Создайте агента в Настройки → Администраторы, назначив новому администратору встроенную роль Агент. Агент — это администратор с ограниченной областью видимости, у которого есть:

ПараметрЗначение
Комиссия %Доля агента от розничной цены (например, 40% — вы оставляете себе 60% как оптовую выручку). Настраивается для каждого агента в любой момент.
Кредитный лимитНасколько предоплаченный баланс агента может уйти в минус, прежде чем продления будут отклонены. Установите 0 для строгой предоплаты.
Предоплаченный балансПополняйте его, когда агент платит вам; каждое продление списывает с него оптовую цену.

Когда один из абонентов агента продлевается, SAMM списывает с баланса агента оптовую цену, проводит вашу выручку и выставляет реальный розничный счёт конечному клиенту, оплачиваемый агенту и остающийся вне вашей книги. Взыскание на стороне агента — со своим переключателем в Настройки → Биллинг, включённым по умолчанию, с настраиваемым льготным периодом — автоматически приостанавливает неплатящего клиента (отправляя разрыв CoA); когда агент фиксирует оплату клиента, абонент реактивируется мгновенно.

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

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

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

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

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

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

Экспорт в бухгалтерскую программу

В разделе Бухгалтерия → Отчёты → Экспорт скачайте книги в CSV для QuickBooks, Xero или любой таблицы: Общий журнал, План счетов, Счета, Оборотная ведомость, Прибыли и убытки и Баланс. Общий журнал, Счета и P&L используют диапазон дат; остальное — на сегодняшний день. Те же данные доступны через API по адресу GET /api/v1/accounting/export/{kind} (format=json|csv, право accounting:read) для BI-конвейеров и Zapier. Экспорт исключает аннулированные записи, поэтому выгрузка всегда сходится с отчётами на экране.

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

Отменить & одобрения

Большинство ошибок в панели провайдера связаны с денежными ошибками: продлен не тот абонент, платеж зарегистрирован дважды, план изменен не на тот счет. SAMM дает вам пятиминутное окно отмены для этих действий и – когда действие приносит деньги. назад — ворота одобрения суперадминистратора , прежде чем оно вообще вступит в силу.

Окно отмены

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

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

Отмена отменяется (с указанием причины на экране), когда реверсирование уничтожает то, что оно не создавало:

ОтказЧто она означает
Этой записи больше не существуетПосле вашего действия абонент, счет или платеж были удалены — вернуть уже нечего.
Эта запись снова существуетЧто-то было воссоздано на своем месте; отмена приведет к перезаписи новой записи.
Эта запись изменилась после вашего действияТем временем кто-то другой отредактировал его — отмена автоматически отменит его редактирование.
Этого шага больше нет в вашей историиПятиминутное окно закрылось.

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

Ворота утверждения агента

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

Таким образом, SAMM разделяет действия агента по направлениям движения денег:

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

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

Работа с очередью

Запросы попадают в Бухгалтерский учет → Утверждение агентов с агент, действие, к чему оно относится и сколько денег оно возвращает — номер, который принимает решение. Фильтруйте по агенту или статусу, ищите, отмечайте несколько и утвердить или отклонить их вместе; отказ может привести к короткому причина, которую видит агент.

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

Что видит агент

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

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

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

Онлайн платежи

SAMM может позволить вашим подписчикам самостоятельно оплачивать свои счета онлайн — с помощью банковской карты. ( Stripe или PayPal ) или с криптографией / USDT ( Binance ). Когда подписчик платит, SAMM отмечает оплаченный счет, записывает его в ваши книги и — если они были отключены за неоплата — переподключает их автоматически. С вас никогда не взимается плата: каждый шлюз использует ваш собственный аккаунт , поэтому деньги поступают прямо вам.

Включите его (любой шлюз)

  1. Откройте Финансовые → Онлайн-платежи (только суперадминистратор).
  2. Нажмите шлюз, чтобы развернуть его — Stripe , PayPal или Binance / USDT .
  3. Заполните поля, установите флажок Включить этот шлюз и нажмите Сохранить . SAMM не позволит вам сохранить данные, пока не будут заполнены обязательные поля.
  4. Нажмите Выполнить тест , чтобы убедиться, что ваши учетные данные работают.
  5. Готово: ваши подписчики теперь видят кнопку Оплатить в своих неоплаченных счетах на портале (и на странице «Срок действия подписки истек»).

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

Stripe – банковские карты по всему миру.

  1. Создайте бесплатную учетную запись на сайте stripe.com . Оставьте Тестовый режим включенным, пока вы пробуете его.
  2. Перейдите в раздел Разработчики → Ключи API и скопируйте Секретный ключ (он начинается с sk_ ).
  3. В SAMM разверните Stripe , вставьте секретный ключ, выберите валюту и денежный счет, на который она будет поступать, затем Сохранить и Запустить тест .
  4. Рекомендуется: добавьте вебхук для надежного подтверждения платежей. В Stripe перейдите в раздел Разработчики → Веб-перехватчики → Добавить конечную точку , задайте URL-адрес https://YOUR-SAMM/pay/webhook/stripe , выберите событие checkout.session.completed , затем скопируйте его секрет подписи ( whsec_… ) в поле SAMM Секрет подписи веб-перехватчика .
Выход в эфир Тестовый режим работает где угодно. Для получения реальных денег через Stripe требуется Stripe -поддерживаемый страна и связанный банковский счет.

PayPal – карты и усилители; PayPal баланс

  1. Создайте учетную запись PayPal Business , затем на сайте Developer.paypal.com создайте приложение REST и скопируйте его идентификатор клиента и секрет .
  2. В SAMM разверните PayPal , вставьте Идентификатор клиента и Секрет клиента , выберите Песочница (тестирование) или Live , затем Сохранить и Запустить тест .
  3. Рекомендуется: добавьте веб-перехватчик на сайте Developer.paypal.com → ваше приложение → Веб-перехватчики , URL-адрес https://YOUR-SAMM/pay/webhook/paypal , подпишитесь на CHECKOUT.ORDER.APPROVED и PAYMENT.CAPTURE.COMPLETED , затем вставьте идентификатор веб-перехватчика в SAMM , чтобы входящие уведомления были криптографически проверены.

Binance / USDT — криптовалюта, работает везде, банк не нужен

Это лучший вариант, когда карты и PayPal недоступны. Ваши подписчики отправляют USDT ; SAMM отслеживает вашу учетную запись Binance и автоматически отмечает счет-фактуру оплаченным. Вам нужны три вещи: Ключ API , Секрет API и место для получить — адрес кошелька и/или Binance Pay ID .

Шаг 1. Создайте ключ API только для чтения.

Безопасность прежде всего Создайте ключ с доступом только для чтения . Никогда не включайте вывод средств или торговлю — SAMM необходимо только читать ваши входящие платежи, но не переводить средства.
  1. Войдите в Binance → откройте учетную запись → Управление API (или выполните поиск «Управление API»).
  2. Нажмите Создать API → выберите Создано системой → назовите его, например. " SAMM " → завершить проверку безопасности.
  3. Binance показывает Ключ API и Секретный ключ — скопируйте оба сейчас (Секрет отображается только один раз).
  4. Нажмите Изменить ограничения и оставьте флажок только у параметра "Включить чтение" . Оставьте спотовую торговлю и вывод средств ВЫКЛ. (Необязательно: ограничьте ключ IP-адресом вашего сервера.)
  5. Вставьте Ключ API и Секрет API в карточку Binance пользователя SAMM (сначала Ключ, затем Секрет — в том же порядке, в котором они показаны Binance ).

Шаг 2 — получите адрес получающего кошелька

  1. В Binance перейдите в раздел Кошелек → Спот → Депозит (Крипто-депозит).
  2. Выберите монету USDT .
  3. Выберите сеть TRC20 – самая дешевая и распространенная; BEP20 и ERC20 также работают. Используйте тот же, который вы выбрали в SAMM .
  4. Скопируйте адрес депозита и вставьте его в поле SAMM Адрес кошелька для получения средств в цепочке . Убедитесь, что раскрывающийся список Сеть пользователя SAMM соответствует выбранной вами сети.

Шаг 3 — (необязательно) Binance Идентификатор платежа

Для подписчиков, которые предпочитают Binance Платить (мгновенно, без комиссии за сеть): в Откройте приложение Binance Pay и запишите свой Pay ID (ваша электронная почта или телефон также работают). Вставьте это в поле Binance Pay ID пользователя SAMM . После этого подписчики смогут платить с помощью Pay ID, а также по цепочке.

Наконец, установите флажок Включить , нажмите Сохранить , затем Запустить тест . (он проверяет, что ключ может читать вашу учетную запись). Вы живы.

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

Что видит абонент

  1. Они входят на портал для клиентов → Мои счета .
  2. В неоплаченном счете они нажимают кнопку Оплатить (или «Оплатить · Stripe » / «Оплатить · Binance », если несколько из них включены).
  3. Карточка: они переходят на защищенную страницу шлюза. USDT : они видят точную сумму, ваш адрес с QR-кодом и/или ваш идентификатор Pay ID.
  4. После оплаты счет становится Оплаченным , он публикуется в ваших книгах, а если срок их действия истек, они автоматически повторно подключаются — подписчики с истекшим сроком действия даже получают кнопку «Оплатить и переподключиться» на странице с истекшим сроком действия.
Ваши книги остаются точными При каждом онлайн-платеже проводится одна сбалансированная двойная запись (Dr Cash / Cr Дебиторская задолженность) и записывает метод ( Stripe / Binance ) в счете, в истории платежей и в PDF-файле, чтобы вы всегда знать, как поступил каждый платеж.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обзор

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

Каналы

Настройте способ отправки сообщений SAMM . Электронная почта использует собственное уведомление.\n учетную запись, хранящуюся отдельно от SMTP для восстановления пароля в Настройки . Telegram использует токен бота, SMS проходит через общий HTTP-шлюз или Twilio, и WhatsApp использует официальный Meta WhatsApp Cloud API (созданный в Meta для\n Разработчики) с дополнительным неофициальным QR-мостом на свой страх и риск — мост\n устанавливается в один клик на сервер с чистой ОС и поставляется в виде готового к использованию контейнера на Docker .\n Все секреты канала сохраняются\n Зашифровано Fernet. Каждый подписчик на клиентском портале выбирает, какие каналы он хочет\n хотите и можете полностью отказаться.

Сообщения

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

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

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

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

События, которые 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 interval5 sПериодичность ping маршрутизатора + синхронизации MikroTik API
Промежуточный интервал учёта60 sИнтервал учёта, отправляемый на маршрутизаторы
Время ежедневного сброса00:00Когда обнуляются счётчики ежедневного использования
Часовой пояс сервераUTCЧасовой пояс для окон скорости и ежедневного сброса
Порт CoA по умолчанию3799UDP-порт по умолчанию для пакетов CoA
Максимум повторов CoA3Число повторов перед переходом к Disconnect-Request

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

Данные провайдера, логотип, валюта и биллинг (вкладка ISP)

Всё, о чём операторы спрашивают «где это поменять?», находится в System → Settings → ISP. Измените поле и нажмите Сохранить — изменение действует сразу (без перезапуска) и попадает в счета, квитанции, PDF и клиентский портал.

Что вы меняетеГде отображается
Название провайдераСчета, квитанции, карты hotspot, шапка портала
Телефон и e-mail поддержкиСчета и печатные карты hotspot
Налоговый / регистрационный номерПечатается на счетах
Логотип провайдера (загрузить PNG/JPEG)Автоматически масштабируется; появляется в PDF счетов/квитанций и на печатных картах hotspot. Чтобы удалить, нажмите ✕ на превью.
Код валюты (напр. USD)Валюта ISO на счетах и в книге учёта
Символ валюты (напр. $)Каждая сумма в админ-интерфейсе, клиентском портале и PDF
Налог вкл/выкл, метка и ставкаДобавляет строку VAT/GST в счета (напр. метка VAT, ставка 11 = 11%)
Изменить символ валюты Чтобы сменить валюту, отображаемую везде (напр. с $ на £ или местный символ), задайте Символ валюты на вкладке ISP и сохраните — обновятся админ-панель, клиентский портал и все PDF сразу. Рядом задайте Код валюты (USD, EUR, …) для кода ISO на счетах.

Конфиденциальность — анонимная статистика установок

Когда SAMM проверяет наличие обновлений, он может отправить SecuryTik случайный идентификатор установки, версию SAMM , уровень вашего плана и приблизительную страну (с вашего IP-адреса через Cloudflare ) — никаких данных о подписчиках или клиентах . Это только помогает нам подсчитывать активные установки и определять приоритетность поддержки и языков. Выключите его в любой момент в разделе Система → Настройки → Конфиденциальность ; см. политику конфиденциальности .

Вкладка Email

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

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

Система

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

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

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

Создайте администратора с именем, паролем, необязательной почтой и ролью. Через меню ⋮ можно изменить роль или пароль, отключить учётную запись или удалить её. Управлять администраторами может только суперадмин — и три раздела (Админы, Инструменты и API) доступны только суперадмину: их нельзя выдать пользовательской роли, в матрице они показаны запертыми.

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

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

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

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

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

Два права находятся рядом с уровнями территорий, потому что каждое из них является денежным решением, а не экраном:

ВерноЧто это позволяет
Разрешить «Нет счета»; Измените услугу абонента — продлите, измените план, продлите — и ничего за это не взимайте. По умолчанию отключено для каждой новой роли.
Разрешить одобрение агентов Просмотрите и примите решение подавать агентам запросы на отмену платежа. Создание агентов и управление ими остается только для суперадминистратора. См. Отменить и усилить; одобрения .
Приборную панель никогда не убирают В какой бы роли ни было отказано, каждый администратор сохраняет свою собственную панель управления и профиль. вход в систему, который приводит к ошибке разрешения, является сломанным, а не безопасным.

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

У каждой роли также есть область действия. Просмотреть всех клиентов и карты означают\n роль видит каждую запись. Если этот флажок снят, роль ограничена NAS : a\n суперадминистратор назначает каждому администратору определенные маршрутизаторы («Доступ к NAS» в меню администратора ⋮),\n и этот админ видит только абонентов и группы карт, привязанных к этим роутерам —\n идеально подходит для филиалов, франшиз или торговых посредников. Подписчики, которых создает администратор By-NAS:\n автоматически прикрепляются к их маршрутизаторам.

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

Система

Инструменты

Раздел Tools объединяет массовые и сервисные инструменты. Он действует на весь массив данных, поэтому доступен только суперадминам.

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

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

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

Высокая доступность

Для развертывания без единой точки отказа запустите SAMM на двух узлах: Потоковая репликация PostgreSQL (основная репликация с горячей задержкой в несколько секунд). резервный) плюс резервный узел AAA и повышение + перенаправление в случае сбоя. Полный оператор runbook — настройка репликации, плановый и внеплановый переход на другой ресурс, восстановление после сбоя, необязательно. режим синхронной репликации и контрольный список проверки после отказа — поставляется как docs/HA.md с исходником. Обратите внимание, что репликация не является резервной копией (неправильное удаление). реплицируется мгновенно), поэтому продолжайте выполнять запланированное резервное копирование, указанное выше.

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

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

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

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

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

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

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

Добавление целых периодов плана. – это вариант массового продления: каждый подписчик получает столько же периодов своего собственного плана , поэтому 7-дневный план получает 7 дней за каждый период, а ежемесячный план получает календарный месяц — одновременно, без разделения список по плану в первую очередь. Абоненты, чей план не имеет срока действия, пропускаются, а не угадал. Добавить дни. остается доступным, если вам нужно фиксированное количество дней. и нет сброса счетчика.

Увеличение скорости

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

КонтрольЧто делает
ПроцентПоложительное умножение, отрицательное деление: +100% → двойная скорость, −100% → половина скорости, −500% → шестая часть. Скорость никогда не достигает нуля.
Планы по повышениюОтметьте любое количество планов; В каждой строке показаны плановая скорость, прирост силы и эффективная скорость на данный момент.
Автоматический возврат послеНесколько часов до того, как усиление закончится само по себе. 0 сохраняет его до тех пор, пока вы не сбросите его вручную.
Повышение превосходит окно скорости Повышение измеряется на основе тарифного плана и заменяет любые окно скорости , пока оно активно — план на 20-месячное ночное окно не действует станет 40M, он станет тем, что увеличит его плановую ставку. Windows возобновляет момент повышение прекращается.

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

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

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

Система

Языки и темы

Языки

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

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

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

Темы

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

Система

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

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

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

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

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

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

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

УровеньПользователи AAAКарты HotspotNAS / маршрутизаторы
Незарегистрировано252001
Free1005002
Plus5002,0003
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.

Страница для истёкших абонентов

Когда подписка истекает, маршрутизатор (настроенный мастером через «пул Expired и блокировку интернета») перенаправляет браузер абонента на дружелюбную страницу «подписка истекла», которую SAMM отдаёт на порту 81 — с логотипом вашего провайдера и кнопкой входа в портал — вместо молчаливо мёртвого соединения.

Система

REST API

System → API управляет публичным интерфейсом /api/v1. API неактивен, пока не создан первый токен, — установка, которая им не пользуется, ничего не открывает. Всё нижеописанное доступно и как интерактивная документация OpenAPI — с консолью проб и полными схемами — на вашей установке по адресу /api/v1/docs.

Интерактивная документация (Swagger UI)

Каждая установка предоставляет живую консоль API по адресу /api/v1/docs — она доступна прямо из раздела API в панели администратора. Нажмите Authorize, вставьте токен, и любой эндпоинт можно выполнить на ваших собственных данных через Try it out; каждый вызов показывает реальный ответ и готовую к копированию команду curl.

Каждый эндпоинт объявляет полную типизированную схему — как для тел запросов, так и для ответов — поэтому имена полей, типы и примеры видны без единого вызова. Та же схема отдаётся в машиночитаемом формате OpenAPI по адресу /api/v1/openapi.json и позволяет сгенерировать полностью типизированный клиент на выбранном вами языке:

openapi-generator-cli generate \
  -i https://YOUR-SAMM/api/v1/openapi.json \
  -g python -o ./samm-client

Быстрый старт

  1. Откройте System → API (только суперадмин), задайте имя, срок действия и нужные интеграции области, затем нажмите Создать токен.
  2. Скопируйте секрет сразу — он показывается ровно один раз, на сервере хранится только его хеш.
  3. Проверьте, что он работает, и посмотрите, что умеет токен:
curl -H "Authorization: Bearer samm_YOUR_TOKEN" https://YOUR-SAMM/api/v1/me

Выведите активных абонентов, затем создайте одного:

curl -H "Authorization: Bearer samm_YOUR_TOKEN" \
  "https://YOUR-SAMM/api/v1/customers?status=active&limit=20"

curl -X POST -H "Authorization: Bearer samm_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username":"john","password":"secret1","firstname":"John",
       "lastname":"Doe","plan_id":3}' \
  https://YOUR-SAMM/api/v1/customers

Аутентификация, токены и области

Каждый запрос отправляет Authorization: Bearer <token>. Токен несёт имя, лимит запросов в минуту, срок действия (30–360 дней или бессрочно) и набор областей — права чтения/записи по ресурсам; область write автоматически включает соответствующую read. Секрет показывается ровно один раз; сервер хранит только хеш. Токен можно отозвать (вызовы сразу перестают работать, обратимо) или удалить совсем.

Ответы следуют единым соглашениям: списочные эндпоинты принимают limit/offset и возвращают {"total", "items"}; ошибки используют стандартные коды — 401 отсутствующий/неверный/просроченный токен, 403 нет области, 404 не найдено, 409 дубликат, 422 ошибка валидации и 429 при превышении лимита (с Retry-After и X-RateLimit-*).

Справочник эндпоинтов

РазделЭндпоинтыОбласть
Интроспекция GET /me · GET /commands любой токен
Статистика панели GET /stats/overview stats:read
Абоненты GET/POST /customers · GET/PATCH/DELETE /customers/{id} · POST …/suspend · …/activate · …/renew · …/reset-limit · …/assign-plan · GET …/usage customers:read/write
Отключение POST /customers/{id}/disconnect · POST /sessions/disconnect · /sessions/reconnect coa:write
Тарифы GET/POST /plans · GET/PATCH /plans/{id} plans:read/write
Счета GET/POST /invoices · GET /invoices/{id} · GET /invoices/{id}/pdf · POST …/pay · …/unpay billing:read/write
Бухгалтерские книги GET /accounting/export · GET /accounting/export/{kind} accounting:read
Живые сессии GET /sessions · GET /coa-outbox sessions:read
Маршрутизаторы GET /routers routers:read
Карты Hotspot GET/POST /cards/groups · GET /cards/groups/{id} · GET …/cards · …/print.pdf · POST …/cards · …/enable · …/disable · …/extend · GET /cards/{id} · POST /cards/{id}/enable · …/disable · …/reset/{kind} cards:read/write
Webhooks GET/POST /webhooks · DELETE /webhooks/{id} · POST …/enable · …/disable · …/test webhooks:manage

Команды в очереди

Изменения, затрагивающие живое состояние учёта — сбросы лимитов, включение/отключение карт и групп, продления, — не применяются внутри запроса. Они ставятся в аудируемую очередь команд и применяются samm-radius в течение одного тика (несколько секунд), точно как те же клики в админ-портале. Такие эндпоинты отвечают {"queued": true}; опрашивайте GET /commands, чтобы увидеть, как ваши команды становятся applied.

Webhooks

Зарегистрируйте URL эндпоинта и выберите события (абонент создан/изменён/продлён/истёк, лимит исчерпан, счёт создан/оплачен, опциональные события сессий). Секрет подписи возвращается один раз при создании. Доставки повторяются с нарастающей задержкой; постоянно сбоящий эндпоинт отключается автоматически — включите снова через POST /webhooks/{id}/enable или отправьте себе образец через POST /webhooks/{id}/test.

Каждая доставка несёт X-SAMM-Event и X-SAMM-Signature: sha256=HMAC(body). Проверяйте, прежде чем доверять:

import hmac, hashlib

def verify(body: bytes, signature_header: str, secret: str) -> bool:
    calc = "sha256=" + hmac.new(secret.encode(), body,
                                hashlib.sha256).hexdigest()
    return hmac.compare_digest(calc, signature_header)
Те же правила, что и в портале Изменения через API проходят ту же аудируемую очередь команд и сервисный слой, что и админ-портал: сброс или смена тарифа через API ведёт себя ровно так же, как клик в интерфейсе, включая CoA.

Справочник

Эксплуатация 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

# Port 8000 stuck after a crash (admin portal unreachable)
kill -9 $(lsof -ti:8000); systemctl restart samm-api

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
$CLI encrypt-pw                       # encrypt a router API password for the DB

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

ФайлСодержит
/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, а затем восстановите резервную копию.

Инструменты обслуживания (внешние)

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

Сброс пароля заблокированного администратора

Потеряли доступ к панели администратора? Задайте новый пароль для учётной записи superadmin прямо в базе данных — рабочий вход не нужен. Отключённая учётная запись будет снова включена; больше ничего не затрагивается.

curl -fsSL -o samm-reset-admin-password.sh \
  https://raw.githubusercontent.com/mhdhaidarah/samm/main/tools/samm-reset-admin-password.sh

sudo bash samm-reset-admin-password.sh --list   # list the superadmin accounts
sudo bash samm-reset-admin-password.sh          # reset (prompts for the new password, twice)

Запускайте от root на сервере SAMM. Если superadmin несколько, укажите --user <name>.

Сбросить бухгалтерские книги (стирать финансовые данные)

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

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

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

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

Загрузите его, прочитайте, затем запустите. Всегда сначала делайте пробный прогон:

curl -fsSL -o samm-wipe-financials.sh \
  https://raw.githubusercontent.com/mhdhaidarah/samm/main/tools/samm-wipe-financials.sh

sudo bash samm-wipe-financials.sh --dry-run   # show what would be deleted, change nothing
sudo bash samm-wipe-financials.sh             # do it
Не направляйте его прямо в оболочку. Никогда не запускайте это как curl … | sudo bash . Для сценария, который уничтожает данные, вы хочу сначала прочитать его, а усеченная загрузка не должна быть в состоянии выполнить половину протирать. Загрузите, проверьте и запустите.

Скрипт отказывается запускаться от имени пользователя без полномочий root, печатает именно то, что собирается удалить, затем попросит вас ввести YES , чтобы подтвердить, что у вас есть проверенная резервная копия, и WIPE , чтобы продолжить. Он предлагает сначала сделать дамп собственной базы данных (в /var/backups/samm/ ) и прерывается в случае сбоя этого дампа. Очистка выполняется как одна транзакция по принципу «все или ничего», а RADIUS намеренно оставлен включенным, поэтому подписчики остаются онлайн, пока книги очищаются.

Справочник

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

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

Ubuntu 22.04/24.04/26.04 LTS и Debian 12/13. Только серверный уровень 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 бесплатен навсегда и включает все функции. Plus, Pro и Pro Max не открывают функции — они повышают лимиты на пользователей AAA, карты Hotspot и маршрутизаторы. См. Licensing & tiers.

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

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

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

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