مستندات

SAMM مستندات

راهنمای کامل اپراتور — از اولین نصب تا عملیات روزمره.

۲۵ موضوع ۸ بخش نصب با یک دستور
نصب سریع

ظرف چند دقیقه آنلاین، با یک دستور.

یک خط را روی یک سرور تازه Ubuntu یا Debian اجرا کنید — بوت‌استرپر آخرین نسخه را دریافت کرده و کل پشته SAMM را برای شما نصب می‌کند.

راهنمای کامل نصب را بخوانید
install.sh — bash
curl -fsSL https://samm.securytik.com/install.sh | sudo bash

شروع به کار

نمای کلی و معماری

SAMM — SecuryTik Active Mikrotik Manager — یک پلتفرم کامل مدیریت ISP برای شبکه‌های PPPoE و Hotspot در MikroTik است. یک نصب‌کننده، یک سرور خام Linux را به یک سیستم کامل AAA، صورت‌حساب و مدیریت مشترکان تبدیل می‌کند.

SAMM برای چه کسانی است

SAMM برای ISPهای بی‌سیم، اپراتورهای فیبر و ارائه‌دهندگان hotspot که RouterOS در MikroTik اجرا می‌کنند ساخته شده است. اگر مشترکان را از طریق PPPoE یا Hotspot احراز هویت می‌کنید و نیاز دارید سطوح سرعت، سقف داده، تاریخ‌های انقضا و صورت‌حساب را اعمال کنید — SAMM همه اینها را از یک صفحه انجام می‌دهد.

چگونه کار می‌کند

SAMM مسیر پرترافیک را نزدیک به پایگاه داده نگه می‌دارد. FreeRADIUS هر بسته احراز هویت و حسابداری را مدیریت می‌کند؛ در هر Interim-Update حسابداری، مستقیماً توابع PostgreSQL را فرا می‌خواند تا مصرف را جمع کند و محدودیت‌ها را ارزیابی کند — هیچ رفت‌وبرگشتی به Python در زمانی که مشترکان آنلاین هستند وجود ندارد.

چهار سطح اجرا از طریق یک پایگاه داده واحد با هم همکاری می‌کنند:

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

پنج سرویس

سرویسنقش
samm-apiپرتال مدیریت + پرتال سلف‌سرویس مشتری + REST API
samm-radiusصندوق خروجی CoA را تخلیه می‌کند؛ جاروب‌های انقضا / بازنشانی روزانه / پنجره سرعت را اجرا می‌کند
samm-workerروترها را ping می‌کند؛ فراداده دستگاه MikroTik را از طریق API همگام‌سازی می‌کند
samm-notificationاعلان‌های ایمیل و Telegram را از طریق یک صف تنظیم‌شده تحویل می‌دهد
samm-telegramربات سلف‌سرویس تعاملی Telegram را اجرا می‌کند

SAMM چه می‌کند

هسته AAA

احراز هویت PPPoE و Hotspot، اعمال سرعت به‌ازای هر کاربر، CoA ترکیبی.

طرح‌ها و محدودیت‌ها

سطوح سرعت به‌همراه چهار محدودیت مستقل و پنجره‌های سرعت زمان‌بندی‌شده.

مشترکان

کاربران PPPoE/Hotspot به‌همراه کارت‌های ووچر پیش‌پرداخت hotspot با PDFهای قابل چاپ.

صورتحساب

قیمت‌گذاری به‌ازای هر پلن، فاکتورهای خودکار، یک دفتر کل دوطرفه دریافت‌ها/پرداخت‌ها/هزینه‌ها.

سلف‌سرویس

یک پرتال وب مشتری و یک ربات Telegram برای مصرف، فاکتورها و تیکت‌ها.

عملیات

موجودی زنده MikroTik، مدیران مبتنی بر نقش، پشتیبان‌گیری و بازیابی، ابزارهای دسته‌ای.

سیستم

WireGuard VPN داخلی، Cloudflare Tunnel، شش زبان، رابط کاربری قابل تغییر پوسته.

اعلان‌ها

هشدارهای تمدید، انقضا، سهمیه و رسید از طریق ایمیل و Telegram.

بقیه این راهنما آموزش گام‌به‌گام برای هریک از این حوزه‌هاست. از منوی سمت چپ استفاده کنید، یا با نصب شروع کنید.

شروع به کار

نصب

SAMM هر آنچه نیاز دارد — FreeRADIUS، PostgreSQL، nginx، WireGuard، cloudflared و پنج سرویس SAMM — را در یک مرحله نصب می‌کند. نصب‌کننده idempotent است: اجرای دوباره آن، نصب موجود را در جای خود ارتقا می‌دهد و هرگز پیکربندی شما را بازنویسی یا رمز پایگاه داده شما را بازتولید نمی‌کند.

SAMM هر جایی اجرا می‌شود — مسیر نصبی را که با شبکه شما تناسب دارد انتخاب کنید:

  • گزینه A / B — سرور خام Linux (توصیه‌شده برای محیط عملیاتی): نصب تک‌فرمانی یا دستی روی Ubuntu / Debian.
  • گزینه C — Docker Compose: همان SAMM به‌صورت کانتینر؛ چندمعماری (amd64 + arm64) به‌طوری که روی Ubuntu، Windows Docker Desktop، مک‌های Apple-silicon و هر جای دیگری اجرا می‌شود.
  • گزینه D — کانتینر MikroTik RouterOS 7: YAML مربوط به compose را مستقیماً در روتر خود بچسبانید. به هیچ دستگاه Linux خارجی نیاز نیست.

پیش‌نیازها

  • یک سرور تازه: Ubuntu 22.04 LTS، Ubuntu 24.04 LTS یا Debian 12. فقط Linux در سطح سرور — نسخه‌های دسکتاپ پشتیبانی نمی‌شوند.
  • دسترسی Root / sudo و یک اتصال اینترنت.
  • systemd و میزبانی که PostgreSQL بتواند به‌صورت محلی روی آن نصب شود (یکی برای شما راه‌اندازی می‌شود).

گزینه A — نصب با یک فرمان

روی سرور، اجرا کنید:

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

این اسکریپت راه‌انداز آخرین بسته انتشار SAMM را از GitHub دانلود می‌کند، آن را استخراج می‌کند و نصب‌کننده کامل را به‌صورت خودکار اجرا می‌کند. در چند دقیقه انجام می‌شود.

گزینه B — نصب دستی از یک بسته انتشار

آخرین samm-<version>.tar.gz را از صفحه GitHub Releases دانلود کنید، سپس روی سرور:

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

همچنین می‌توانید از یک zip که روی دستگاهی دیگر تولید شده استقرار دهید — نصب‌کننده منبع را با rsync به داخل /opt/samm منتقل می‌کند:

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

یا مخزن را در /opt/samm کلون کنید و sudo bash /opt/samm/install.sh را اجرا کنید.

در هر صورت، پس از پایان کار نصب‌کننده، پرتال مدیریت را باز کنید و با این اعتبارنامه‌ها وارد شوید:

URL ورودhttp://<your-server>/admin · نام کاربریadmin · رمز عبورadmin

بلافاصله پس از اولین ورود، رمز عبور مدیر را تغییر دهید.

گزینه C — نصب با Docker Compose

اگر ترجیح می‌دهید SAMM را به‌صورت کانتینر اجرا کنید — همان محصول، با بسته‌بندی متفاوت — از توزیع Docker Compose در github.com/mhdhaidarah/samm-docker استفاده کنید. روی هر میزبانی که Docker در دسترس باشد:

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

این کار در صورت نبود Docker، آن را نصب می‌کند، یک docker-compose.yml + .env در /opt/samm-docker/ قرار می‌دهد و استک را راه‌اندازی می‌کند. ایمیج mhdhaidarah/samm از همان بسته کامپایل‌شده نصب bare-OS ساخته شده است — از نظر ساختاری، منبع‌بسته.

چندمعماری از نسخه v2.2.6 — همان تگ برای linux/amd64 و linux/arm64 عرضه می‌شود. docker pull نسخه صحیح را به‌صورت شفاف انتخاب می‌کند، بنابراین مسیر نصب روی یک سرور 64-بیتی Intel/AMD، یک مک Apple-silicon که Docker Desktop اجرا می‌کند، یا یک دستگاه ARM MikroTik (RB5009، hAP ax²، CCR2004/2116/2216) با استفاده از قابلیت کانتینر RouterOS 7، یکسان است.

روی میزبان‌هایی که لوله کردن curl به bash مجاز نیست (دستگاه‌های محدودشده، سیاست‌های خروجی سخت‌گیرانه)، می‌توانید فایل compose آماده اجرا را مستقیماً دریافت کنید:

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

چند قابلیت هنوز در نسخه Docker وجود ندارد (قفل مرحله‌ای مجوز، بارگذاری مجدد پویای FreeRADIUS). صفحات مدیریت داخلی WireGuard و Cloudflare Tunnel عمداً در نسخه Docker پنهان شده‌اند — آنها سرویس‌های systemd در سطح میزبان را مدیریت می‌کنند که از داخل کانتینر قابل دسترسی نیستند. اگر به این موارد به‌صورت داخلی نیاز دارید، گزینه A یا B بالا را انتخاب کنید، یا cloudflared / wg-quick را مستقیماً روی میزبان Docker در کنار SAMM اجرا کنید. برای تمام هشدارهای v1 و مسیر نصب دستی، به README نسخه Docker مراجعه کنید.

روی Windows (Docker Desktop) — فقط برای ارزیابی

برای محیط عملیاتی توصیه نمی‌شود. خواب / hibernate / بستن درپوش در Windows کانتینرها را متوقف می‌کند؛ راه‌اندازی مجدد هنگام بوت فقط زمانی فعال می‌شود که WSL شروع شود (نه هنگام بوت Windows)؛ cron به‌روزرسانی خودکار روزانه فقط زمانی اجرا می‌شود که WSL فعال باشد. آن را برای ارزیابی / نمایش استفاده کنید، سپس محیط عملیاتی را روی یک ماشین مجازی Linux (Hyper-V، Proxmox، ESXi) یا یک دستگاه فیزیکی کوچک (مثلاً یک NUC که Ubuntu Server اجرا می‌کند) مستقر کنید.

Docker Desktop را برای Windows نصب کنید (اجازه دهید در نخستین اجرا، بک‌اند WSL2 را راه‌اندازی کند). سپس از PowerShell — بدون نیاز به ترمینال WSL — بسته compose را دریافت کنید و استک را راه‌اندازی کنید:

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

بوت شدن استک را در Docker Desktop → Containers تماشا کنید — گروه samm به 7 سرویس گسترش می‌یابد. وقتی همه سبز شدند، پرتال مدیریت را باز کنید و با این اعتبارنامه‌ها وارد شوید:

URL ورودhttp://localhost:8000/admin · نام کاربریadmin · رمز عبورadmin

بلافاصله پس از اولین ورود، رمز عبور مدیر را تغییر دهید.

اگر یک NAS واقعی MikroTik برای RADIUS به این میزبان Windows متصل شود، UDP 1812 + 1813 را از طریق Windows Firewall مجاز کنید:

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

برچیدن: docker compose down -v از دایرکتوری نصب (سوئیچ -v ولوم postgres و کلید Fernet را پاک می‌کند — اگر داده افزوده‌اید، ابتدا از آنها پشتیبان بگیرید).

گزینه D — نصب روی یک روتر MikroTik (RouterOS 7)

همان SAMM، بدون نیاز به دستگاه Linux. اگر دستگاه MikroTik شما از بسته container پشتیبانی می‌کند و یک درایو USB یا microSD متصل دارد، می‌توانید کل استک را مستقیماً روی روتر اجرا کنید. ایمیج به‌صورت چندمعماری (linux/amd64 + linux/arm64) عرضه می‌شود، بنابراین دستگاه‌هایی مانند RB5009، hAP ax²، CCR2004/2116/2216 نسخه صحیح را به‌صورت شفاف دریافت می‌کنند.

پشتیبانی‌شده: MikroTik arm64 — RB5009، hAP ax²، CCR2004-1G-12S+2XS، CCR2116، CCR2216. SKUهای amd64 — CCR2004-1G-2XS-PCIe (amd64)، x86 RouterOS، CHR روی هایپروایزرهای amd64.
پشتیبانی‌نشده: دستگاه‌های armv7 / mipsbe / smips / tile / ppc (hEX، RB750، مدل‌های قدیمی‌تر RB) — بدون پشتیبانی از کانتینر یا با RAM/CPU بسیار کم برای استک SAMM.

۱. آماده‌سازی روتر

بسته container را نصب کنید (از extra_packages.zip در mikrotik.com/download — فایل container-*.npk متناظر را از طریق Files بارگذاری کنید، سپس ریبوت کنید). سپس حالت container را فعال کنید (یک‌بار، نیاز به ریبوت دارد):

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

۲. فرمت و mount کردن دیسک (ext4)

یک درایو USB یا microSD وارد کنید (≥ 8 GB توصیه می‌شود — Postgres + لایه‌های ایمیج روی هم انباشته می‌شوند). روی روتر:

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

پس از فرمت کردن، تأیید کنید که دیسک mount می‌شود و قابل نوشتن است:

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

۳. YAML مربوط به compose را در برنامه container بچسبانید

در WebFig یا WinBox، ContainerApps+ NewYAML را باز کنید. فایل compose زیر را در فیلد YAML بچسبانید، دیسکی را که در مرحله ۲ فرمت کردید به‌عنوان محل ذخیره‌سازی تنظیم کنید و ارسال کنید. RouterOS هر ایمیج را دریافت و سرویس‌ها را برای شما به هم متصل می‌کند.

docker-compose.yaml — کپی و بچسبانید
name: samm

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

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

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

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

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

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

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

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

پیش از چسباندن، هر change-me-strong-random-string را با یک رمز عبور تصادفی قوی یکسان (≥ 24 کاراکتر تصادفی) جایگزین کنید — این رمز در نخستین راه‌اندازی وارد Postgres می‌شود و هر سرویس SAMM از آن برای اتصال استفاده می‌کند. یکی را با یک مدیر رمز عبور تولید کنید یا pwgen 32 1 را روی هر دستگاه Linux اجرا کنید.

۴. تأیید و اتصال MikroTik به SAMM

وقتی هر 7 کانتینر در حال اجرا بودند، پرتال مدیریت را در یک مرورگر باز کنید و با این اعتبارنامه‌ها وارد شوید:

URL ورودhttp://<router-ip>:8000/admin · نام کاربریadmin · رمز عبورadmin

بلافاصله رمز عبور مدیر را تغییر دهید. احراز هویت + حسابداری RADIUS روی UDP 1812 + 1813 روی خود روتر در دسترس است، بنابراین کلاینت RADIUS در MikroTik می‌تواند با رمز مشترکی که در System → RADIUS تنظیم کردید به 127.0.0.1 اشاره کند.

آزمایشی در v1. قابلیت container در RouterOS سبک‌تر از Docker Compose است — DNS مبتنی بر نام سرویس، ترتیب وابستگی (depends_on) و راه‌اندازی‌های مجدد زنده به‌گونه‌ای متفاوت رفتار می‌کنند. اگر استک روی سخت‌افزار شما درست کار نکرد، به اجرای Docker روی یک دستگاه Linux کوچک (NUC، Pi 4، ماشین مجازی Linux) در کنار MikroTik بازگردید. همان فایل compose در آنجا با معنای کامل Compose کار می‌کند.

گزینه‌های غیرتعاملی

به همه اعلان‌ها می‌توان از پیش با متغیرهای محیطی پاسخ داد، بنابراین نصب‌کننده می‌تواند بدون نظارت اجرا شود:

متغیراثر
DB_PASSبه‌جای رمز تولیدشده خودکار، از این رمز پایگاه داده استفاده کن (فقط نصب اول)
CF_TOKENکانکتور Cloudflare Tunnel را با این توکن Zero Trust نصب کن
SAMM_HTTP_PORTپورت شنود nginx را اجباری کن (از اعلان تشخیص پورت 80 صرف‌نظر می‌کند)
SAMM_VERBOSE1 به‌جای نوار پیشرفت، خروجی خام فرمان را جریان می‌دهد
NO_COLOR1 خروجی رنگی را غیرفعال می‌کند
DB_PASS='strong_pw'   sudo bash /opt/samm/install.sh
CF_TOKEN='eyJ...'     sudo bash /opt/samm/install.sh
SAMM_HTTP_PORT=8080   sudo bash /opt/samm/install.sh

نصب‌کننده چه چیزی را راه‌اندازی می‌کند

نصب‌کننده به‌صورت یک نمایش پیشرفت زنده و رنگی اجرا می‌شود — یک نوار درصدی و یک چک‌لیست به‌ازای هر مرحله. خروجی خام هر مرحله در /var/log/samm-install.log ثبت می‌شود؛ در صورت شکست، 30 خط آخر چاپ می‌شود.

مؤلفهجزئیات
FreeRADIUS 3با بک‌اند PostgreSQL و کلاینت‌های پویای NAS پیکربندی شده؛ با freeradius -CX اعتبارسنجی شده
PostgreSQLپایگاه داده، طرح‌واره و همه مهاجرت‌های SQL اعمال شدند — هر فایل مهاجرت idempotent است
Python venvهمه وابستگی‌ها از requirements.txt ساخته شدند؛ کاتالوگ‌های ترجمه کامپایل شدند
nginxپراکسی معکوس به‌صورت افزایشی افزوده شد — سایت‌های موجود هرگز حذف نمی‌شوند. وقتی پورت 80 آزاد باشد از آن استفاده می‌کند؛ در غیر این صورت یک پورت جایگزین می‌پرسد
5 servicessamm-api، samm-radius، samm-worker، samm-notification، samm-telegram — همه به‌عنوان واحدهای systemd فعال شدند
WireGuardبسته‌ها نصب شدند؛ بعداً از System → VPN پیکربندی می‌شوند
cloudflaredباینری همیشه نصب می‌شود؛ توکن تونل هنگام نصب اختیاری است یا بعداً از System → Cloudflare Tunnel افزوده می‌شود

همه اعتبارنامه‌ها — رمز پایگاه داده و کلیدهای امضای نشست — در نخستین نصب به‌صورت خودکار تولید می‌شوند.

اعلان‌های تعاملی

هر اعلانی در ابتدا، پیش از آغاز نصب رخ می‌دهد:

  • توکن Cloudflare — یک توکن کانکتور Zero Trust بچسبانید تا SAMM را بدون هیچ پورت باز، آنلاین منتشر کنید، یا Enter را فشار دهید تا صرف‌نظر کنید و بعداً آن را پیکربندی کنید.
  • پورت HTTP — اگر پورت 80 از قبل در حال استفاده باشد، نصب‌کننده آن سایت‌ها را دست‌نخورده باقی می‌گذارد و یک پورت جایگزین می‌پرسد (پیش‌فرض 8080).

خلاصه نصب

وقتی نصب‌کننده به پایان می‌رسد، خلاصه‌ای با URL مدیریت، ورود پیش‌فرض، پورت HTTP انتخاب‌شده، اعتبارنامه‌های پایگاه داده و مسیرهای فایل پیکربندی چاپ می‌کند:

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

ارتقا

برای ارتقا، منبع جدید را دریافت کنید و نصب‌کننده را دوباره اجرا کنید:

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

اجرای دوباره، منبع را مجدداً همگام می‌کند، venv را ارتقا می‌دهد، همه مهاجرت‌ها را دوباره اعمال می‌کند، پیکربندی‌های FreeRADIUS و nginx را دوباره بارگذاری می‌کند و هر سرویس را مجدداً راه‌اندازی می‌کند. فایل‌های پیکربندی شما و پورت HTTP انتخاب‌شده در نخستین نصب حفظ می‌شوند.

نکته SAMM می‌تواند خودش را هم به‌روزرسانی کند — به صدور مجوز و به‌روزرسانی‌ها مراجعه کنید. به‌روزرسانی‌های خودکار را فعال کنید، یا آنها را بنا به درخواست، از System → License اعمال کنید.
جداشده از شبکه و پایگاه داده راه دور SAMM فقط SAMM را عرضه می‌کند — FreeRADIUS، PostgreSQL، nginx و بقیه در زمان نصب از مخازن apt بالادستی دریافت می‌شوند، بنابراین نصب‌های جداشده از شبکه باید آن بسته‌ها را از پیش آماده کنند. برای یک PostgreSQL راه دور، DSN را پس از نصب در /etc/samm/samm.yaml تنظیم کنید.

شروع به کار

گام‌های اول

پنج کار کوتاه، یک نصب تازه را به نقطه‌ای می‌رساند که مشترکان می‌توانند متصل شوند و برایشان صورت‌حساب صادر شود.

۱ · اولین ورود

  1. http://<your-server>/admin/ را باز کنید (اگر پورت HTTP برابر 80 نیست، از پورت خلاصه نصب استفاده کنید)، یا URL تونل Cloudflare خود را باز کنید.
  2. با admin / admin وارد شوید.
  3. بلافاصله رمز عبور را از System → Admins، یا از منوی پروفایل در نوار بالا تغییر دهید.

۲ · افزودن اولین روتر

  1. به MikroTik → NAS بروید و روی Add Router کلیک کنید.
  2. IP روتر، یک نام کوتاه و یک رمز مشترک RADIUS را وارد کنید. برای دستگاه‌های MikroTik، به‌صورت اختیاری اعتبارنامه‌های API را برای همگام‌سازی زنده دستگاه اضافه کنید.
  3. روی MikroTik، یک سرور RADIUS اضافه کنید که به میزبان SAMM (پورت‌های 1812/1813) با رمز مشترک یکسان اشاره کند، و RADIUS را برای PPP / Hotspot فعال کنید.

به راه‌اندازی مجدد FreeRADIUS نیازی نیست — SAMM کلاینت‌های NAS را به‌صورت پویا از پایگاه داده تشخیص می‌دهد. برای رویه کامل به روترها (NAS) مراجعه کنید، یا اجازه دهید جادوگر راه‌اندازی، MikroTik را برای شما پیکربندی کند.

۳ · ایجاد یک پلن

یک پلن سرعت، محدودیت‌ها و قیمتی را که می‌فروشید تعریف می‌کند. به Users → Plans → New plan بروید. مرجع کامل فیلدها: پلن‌ها و محدودیت‌ها.

۴ · افزودن یک مشترک

به Users → New customer بروید، اعتبارنامه‌های ورود را پر کنید و یک پلن انتخاب کنید. مشترک می‌تواند بلافاصله متصل شود. برای دسترسی hotspot پیش‌پرداخت، به‌جای آن کارت‌های ووچر تولید کنید.

۵ · فعال‌سازی مجوز شما

یک نصب تازه به‌صورت ثبت‌نشده در یک سطح حداقلی اجرا می‌شود. System → License را باز کنید و برای برداشتن محدودیت‌ها فعال‌سازی کنید — به صدور مجوز و سطوح مراجعه کنید.

ریتم روزمره افزودن روترها → ایجاد پلن‌ها → افزودن مشترکان یا کارت‌ها → تماشای داشبورد → ثبت پرداخت‌ها در حسابداری.

مشترکان و طرح‌ها

طرح‌ها و محدودیت‌ها

یک پلن تعریف سرویسی است که به مشترکان اختصاص می‌یابد — سرعت، محدودیت‌ها و قیمت را تعیین می‌کند. پیش از افزودن کاربران، پلن‌ها را ایجاد کنید.

ایجاد یک پلن

  1. به Users → Plans بروید.
  2. روی New plan کلیک کنید.
  3. فرم را پر کنید و روی Save plan کلیک کنید.

هر محدودیت یک کلید دوحالته است — فقط مواردی را که نیاز دارید فعال کنید. همان پنجره، یک پلن موجود را ویرایش می‌کند (منوی ⋮ ردیف → Edit را باز کنید).

فیلدهای پلن

فیلدمعنا
نامنام یکتای پلن، مثلاً Home-50M
قیمتهنگام استفاده از صدور فاکتور، در هر دوره صورت‌حساب دریافت می‌شود
سرعت دانلود / آپلودمثلاً 50M، 512K، 1G — به‌عنوان محدودیت نرخ MikroTik اعمال می‌شود
محدودیت: انقضااشتراک، یک دوره ثابت پس از فعال‌سازی پایان می‌یابد (روز/ماه/ساعت/دقیقه)
محدودیت: سهمیهیک سقف داده کل (ترکیبی، فقط دانلود، یا فقط آپلود) برای کل اشتراک
محدودیت: زمان اتصالسقفی بر زمان اتصال تجمعی — مجموع مدت همه نشست‌ها
محدودیت: مصرف روزانهیک سقف داده که هر روز در زمان بازنشانی روزانه پیکربندی‌شده صفر می‌شود
پنجره نامحدودافزودن سریع یک پنجره سرعت — ویرایشگر کامل در صفحه Speed Windows پلن قرار دارد
استخر IPنام اختیاری RADIUS Framed-Pool برای تخصیص آدرس
تمدید خودکاربه‌جای تعویض پلن یا قطع اتصال، در زمان انقضا یک دوره تازه شروع کن

چهار محدودیت

هر محدودیت مستقل و اختیاری است. وقتی چند محدودیت تنظیم شده باشند، SAMM آنها را با ترتیب ثابت — انقضا → سهمیه → زمان اتصال → روزانه — بررسی می‌کند و اولین موردی که به پایان برسد، اقدام را تعیین می‌کند.

محدودیتپیگیری می‌کندهنگام اتمام
انقضازمان تقویمی از زمان فعال‌سازیتعویض به یک پلن دیگر، یا قطع اتصال
سهمیهکل بایت‌های مصرف‌شدهتعویض به یک پلن دیگر، یا قطع اتصال
زمان اتصالثانیه‌های تجمعی نشستتعویض به یک پلن دیگر، یا قطع اتصال
روزانهبایت‌ها از آخرین بازنشانی روزانهکاهش سرعت (تعویض به یک پلن کندتر) تا بازنشانی روزانه بعدی

برای هر محدودیت، آنچه را هنگام اتمام رخ می‌دهد انتخاب می‌کنید: یک پلن بعدی برای تعویض مشترک به آن انتخاب کنید، یا آن را به‌صورت — disconnect — رها کنید. برای محدودیت روزانه، پلن بعدی به‌عنوان کاهش‌دهنده سرعت عمل می‌کند — مشترک در بازنشانی روزانه بعدی به‌طور خودکار به پلن اصلی بازمی‌گردد.

پنجره‌های سرعت

یک پنجره سرعت سرعت پایه پلن را برای ساعات معینی بازنویسی می‌کند — برای مثال یک پنجره سرعت نامحدود پس از نیمه‌شب. روی یک ردیف پلن کلیک کنید تا ویرایشگر Speed Windows آن باز شود، که کنترل روز هفته را اضافه می‌کند و از پنجره‌هایی که از نیمه‌شب عبور می‌کنند پشتیبانی می‌کند. وقتی چند پنجره مطابقت داشته باشند، پرسرعت‌ترین پنجره برنده می‌شود.

توجه مشترکان کاهش‌سرعت‌یافته یا با محدودیت به‌اتمام‌رسیده از پنجره‌های سرعت مستثنا هستند — SAMM هرگز تا زمانی که یک محدودیت اعمال است، سرعت را بالا نمی‌برد.

دو مفهوم از مصرف

SAMM مصرف را در دو جا نگه می‌دارد و هرگز آنها را با هم اشتباه نمی‌گیرد:

  • شمارنده‌های قابل بازنشانی — وضعیت به‌ازای هر محدودیت. با یک بازنشانی مدیر و با بازنشانی روزانه صفر می‌شوند.
  • شمارنده‌های صورت‌حساب — مجموع‌های مادام‌العمر غیرقابل بازنشانی. هرگز صفر نمی‌شوند، بنابراین گزارش‌ها و فاکتورها دقیق می‌مانند.

مدیریت پلن‌ها

فهرست پلن‌ها سرعت هر پلن، تعداد مشترکان، محدودیت‌های فعال و پنجره‌های سرعت را نشان می‌دهد. از منوی ⋮ یک ردیف می‌توانید آن را ویرایش کنید، پنجره‌های سرعتش را باز کنید، فعال/غیرفعال کنید، به مشترکانش بروید، یا آن را حذف کنید (فقط زمانی که مشترکی ندارد). ویرایش تمدید خودکار پیشنهاد می‌دهد که تغییر را به همه مشترکان فعلی گسترش دهد.

مشترکان و طرح‌ها

مشترکان

یک مشترک (مشتری / کاربر) یک حساب PPPoE یا Hotspot است که در برابر SAMM احراز هویت می‌شود. به هر مشترک دقیقاً یک پلن اختصاص می‌یابد.

ایجاد یک مشترک

  1. به Users بروید و روی New customer کلیک کنید.
  2. فرم را کامل کنید و ذخیره کنید — مشترک می‌تواند بلافاصله متصل شود.
فیلدمعنا
نام کاربری *نام ورود PPPoE / Hotspot — باید یکتا باشد
رمز عبور *رمز عبور ورود (برای احراز هویت PAP/CHAP در RADIUS ذخیره می‌شود)
نام / نام خانوادگینام مشترک
موبایل / ایمیل / آدرسجزئیات تماس — برای اعلان‌ها و فاکتورها استفاده می‌شود
طرح *پلن سرویسی که باید اختصاص یابد
بازنویسی انقضاتاریخ انقضای دستی اختیاری به‌جای تاریخ محاسبه‌شده پلن
تمدید خودکاردوره پلن را به‌طور خودکار در زمان انقضا تمدید کن

فهرست مشترکان

صفحه Users هر مشترک را با یک نقطه وضعیت قابل مشاهده در یک نگاه، پلن اختصاص‌یافته و میزان باقی‌مانده از هر محدودیت فهرست می‌کند — مصرف روزانه با یک نوار پیشرفت، سهمیه باقی‌مانده، زمان اتصال باقی‌مانده و روزهای باقی‌مانده. بر اساس وضعیت (All / Active / Suspended / Expired / Online) فیلتر کنید یا بر اساس نام کاربری، نام یا موبایل جستجو کنید.

نشان تعویض پلن یک نشان تنها، پلن مشترک است. دو نشان که با یک فلش به هم پیوسته‌اند به این معناست که مشترک به محدودیت روزانه خود رسیده و به‌طور موقت روی یک پلن کاهش سرعت متوقف شده است — آنها در بازنشانی روزانه بعدی به پلن اصلی بازمی‌گردند.

مدیریت یک مشترک

روی یک ردیف راست‌کلیک کنید — یا از منوی ⋮ استفاده کنید — برای هر اقدام به‌ازای هر مشترک:

عملیاتچه کاری انجام می‌دهد
مشاهده / ویرایشصفحه جزئیات را باز کن، یا جزئیات تماس، رمز عبور و انقضا را ویرایش کن
فعال / غیرفعالحساب را معلق کن — مشترکان آنلاین قطع می‌شوند
تمدید انقضامدت پلن را روی هر زمان باقی‌مانده اضافه کن؛ اگر پلن قیمت داشته باشد یک فاکتور تولید می‌کند
بازنشانی زمان اتصال / سهمیه / روزانهشمارنده محدودیت انتخاب‌شده را صفر کن
مصرفنمودارهای مصرف و تاریخچه نشست را باز کن
حذفمشترک و تمام تاریخچه او را حذف کن — نشست‌های فعال ابتدا قطع می‌شوند
چگونه اقدام‌ها اعمال می‌شوند بازنشانی‌ها، تغییرات پلن و تمدیدها در یک گزارش حسابرسی صف‌بندی و توسط تیک samm-radius اعمال می‌شوند — معمولاً ظرف چند ثانیه. اگر مشترک آنلاین باشد، SAMM یک بازخوانی زنده نیز ارسال می‌کند. به CoA و تغییرات زنده مراجعه کنید.

نمای مصرف

اقدام Usage یک صفحه ترافیک تفصیلی برای یک مشترک باز می‌کند، با یک انتخابگر دوره 7d / 14d / 30d / 90d. این صفحه سه رقم شاخص را گزارش می‌کند — ترافیک امروز (با تفکیک آپلود/دانلود و دقایق آنلاین)، ترافیک این ماه، و زمان آنلاین تجمعی برای ماه. زیر آنها یک نمودار ترافیک روزانه از آپلود در برابر دانلود، و یک جدول کامل تاریخچه نشست قرار دارد: زمان شروع و پایان، مدت، بایت‌های دانلود و آپلود، NAS، و علت پایان هر نشست.

عملیات دسته‌ای

برای تغییر مالک، انقضا، وضعیت یا تمدید خودکار برای بسیاری از مشترکان به‌طور همزمان — یا برای حذف تعداد زیاد — از ابزارهای تغییرات دسته‌ای و حذف دسته‌ای استفاده کنید. برای ایجاد مشترکان به‌صورت دسته‌ای از یک صفحه‌گسترده، از Export / Import استفاده کنید.

مشترکان و طرح‌ها

کارت‌های Hotspot

برای دسترسی Hotspot پیش‌پرداخت، به‌جای مشترکان جداگانه، یک دسته کارت ووچر تولید کنید. هر کارت یک جفت نام کاربری/رمز عبور با سرعت و محدودیت‌های خاص خود است، که به‌صورت هزارتایی تولید و برای توزیع چاپ می‌شود.

ایجاد یک گروه کارت

  1. به Users → Hotspot Cards بروید و روی New group کلیک کنید.
  2. فرم زیر را پر کنید و روی Create group کلیک کنید — SAMM اعتبارنامه‌های هر کارت را به‌طور خودکار تولید می‌کند.
بخشفیلدها
هویتنام یکتای گروه، توضیحات، پیشوند اختیاری نام کاربری، تعداد کارت‌هایی که باید تولید شوند (تا 10,000)
اعتبارنامه‌هاقالب نام کاربری و رمز عبور (اعداد / حروف / حروف و اعداد) و طول
محدودیت سرعتسرعت دانلود و آپلود — 256k، 6M، 1G؛ 0 = نامحدود
محدودیت انتقالنامحدود، سقف ترکیبی، یا سقف‌های جداگانه دانلود/آپلود (MB / GB / TB)
محدودیت زمان‌هاسقف زمان اتصال، انقضا پس از اولین ورود، و یک تاریخ اعتبار «معتبر تا» برای گروه

انقضا از اولین ورود هر کارت شمارش می‌شود، در حالی که معتبر تا یک تاریخ اعتبار قطعی است — کارت‌ها پس از آن قابل استفاده نیستند، چه فعال شده باشند و چه نشده باشند.

وضعیت‌های کارت

وضعیتمعنا
استفاده‌نشدهتولید شده اما هرگز وارد نشده
فعالدر حال استفاده، در محدوده مجاز خود
به‌اتمام‌رسیدهبه یک محدودیت (سهمیه، زمان اتصال یا انقضا) رسیده است
غیرفعالبه‌صورت دستی غیرفعال شده

چاپ و پیگیری

یک گروه را باز کنید تا کارت‌های آن را ببینید، آنها را برای توزیع در یک PDF چاپ کنید (چیدمان چاپ از لوگوی ISP شما در Settings استفاده می‌کند)، و مصرف هر کارت را بررسی کنید. ترافیک کارت‌ها همچنین در گزارش‌ها زیر زبانه Cards ظاهر می‌شود، و هر گروه نمای حسابداری خاص خود را دارد.

شبکه و روترها

روترها (NAS)

یک NAS (Network Access Server) روتری است که مشترکان را در برابر SAMM از طریق RADIUS احراز هویت می‌کند. هر روتری که ترافیک مشترک را حمل می‌کند به یک رکورد NAS نیاز دارد.

افزودن یک روتر

  1. به MikroTik → NAS بروید و روی Add Router کلیک کنید.
  2. فیلدهای زیر را پر کنید و ذخیره کنید.
فیلدمعنا
IP / نام میزبان NASآدرس روتر، آن‌گونه که میزبان SAMM آن را می‌بیند
نام کوتاهیک برچسب کاربرپسند که در سراسر رابط کاربری نمایش داده می‌شود
نوعmikrotik همگام‌سازی زنده دستگاه و ارسال پیکربندی را باز می‌کند؛ انواع دیگر فقط RADIUS هستند
رمزرمز مشترک RADIUS — باید دقیقاً با روتر مطابقت داشته باشد، وگرنه احراز هویت شکست می‌خورد
پورت CoAپورت UDP که SAMM بسته‌های Change-of-Authorization را به آن ارسال می‌کند (پیش‌فرض MikroTik 3799)
پورت / کاربر / رمز عبور APIاعتبارنامه‌های API در MikroTik که SAMM برای خواندن اطلاعات دستگاه و ارسال پیکربندی استفاده می‌کند
به راه‌اندازی مجدد نیازی نیست SAMM کلاینت‌های NAS را به‌صورت پویا از پایگاه داده تشخیص می‌دهد — افزودن یا حذف یک روتر هرگز به راه‌اندازی مجدد FreeRADIUS نیاز ندارد.

فهرست NAS

هر روتر در یک جدول نمایش داده می‌شود — ID، IP / نام میزبان NAS، نام کوتاه، نوع، یک رمز ماسک‌شده (برای آشکار کردن آن روی سلول کلیک کنید)، پورت‌های CoA و API، و یک نتیجه ping زنده با زمان رفت‌وبرگشت. کادر جستجو بر اساس IP، نام کوتاه یا توضیحات فیلتر می‌کند.

منوی ⋮ هر ردیف اقدام‌های به‌ازای هر روتر را در بر دارد — View Device و Refresh Info (فقط MikroTik)، Edit، Push RADIUS config (فقط MikroTik)، و Delete. باز کردن یک ردیف از نوع mikrotik مستقیماً به صفحه دستگاه آن می‌رود.

کشف همسایه‌ها

روی Discover neighbors کلیک کنید تا دستگاه‌های MikroTik را در شبکه پویش کنید و آنها را بدون تایپ دستی هر آدرس، به‌عنوان رکوردهای NAS اضافه کنید.

ارسال پیکربندی RADIUS به روتر

برای رکوردهای NAS از نوع MikroTik، منوی ⋮ ردیف گزینه Push RADIUS config را ارائه می‌دهد — SAMM به‌جای آنکه شما دستی آن را تایپ کنید، روتر را از طریق API برای شما پیکربندی می‌کند. شما IP سرور SAMM را تأیید می‌کنید (باید از روتر قابل دسترسی باشد) و پورت‌های احراز هویت، حسابداری و CoA؛ سپس SAMM یک ورودی RADIUS روی روتر ایجاد یا جایگزین می‌کند:

تنظیممقدار
توضیحSAMM — تگی که SAMM برای یافتن و به‌روزرسانی بعدی این ورودی استفاده می‌کند
سرویسhotspot, ppp
آدرس / رمزمیزبان SAMM، با رمز مشترک از این رکورد NAS
مهلت زمانی3000 ms
CoA ورودیپذیرفته شده، روی پورت CoA که تأیید کردید

پس از پایان ارسال، پنجره یک گزارش نتیجه نمایش می‌دهد.

پیکربندی سمت MikroTik

اگر به‌جای آن روتر را به‌صورت دستی پیکربندی می‌کنید:

  • یک سرور RADIUS اضافه کنید که به میزبان SAMM اشاره کند، با رمز مشترک یکسان، فعال‌شده برای PPP / Hotspot.
  • از پورت احراز هویت 1812 و پورت حسابداری 1813 استفاده کنید.
  • CoA ورودی را روی پورت 3799 بپذیرید.
  • فاصله Interim-Update حسابداری را روی حدود 60 ثانیه تنظیم کنید — این همان بازه‌ای است که SAMM مصرف را جمع و محدودیت‌ها را ارزیابی می‌کند.

دستگاه‌های فقط پایش

روتری که به‌عنوان monitor اضافه شده در موجودی MikroTik ظاهر می‌شود و ping و همگام‌سازی می‌شود، اما هیچ نقش RADIUS ندارد — نمی‌تواند مشترکان را احراز هویت کند. از آن برای زیر نظر داشتن روترهایی که NAS مشترک نیستند استفاده کنید.

شبکه و روترها

مدیر MikroTik

وقتی یک روتر اعتبارنامه‌های API دارد، SAMM آن را مستقیماً از طریق API در MikroTik مدیریت می‌کند — بدون WinBox، بدون SSH. بخش MikroTik یک موجودی زنده از هر روتر است، و هر دستگاه یک صفحه جزئیات با پانزده زبانه باز می‌کند که تقریباً هر بخش از RouterOS را از مرورگر شما پیکربندی می‌کنند.

پایشگر MikroTik

MikroTik → Monitor برای هر روتر یک کارت نشان می‌دهد، که به‌صورت شبکه‌ای چیده شده است. هر کارت — که توسط samm-worker بازخوانی و هر 30 ثانیه به‌صورت زنده پرس‌وجو می‌شود — نقطه دسترس‌پذیری، نسخه RouterOS، بار CPU و تعداد هسته، مصرف حافظه، تعداد نشست‌های فعال، زمان اتصال و زمان آخرین نمونه را گزارش می‌کند.

یک کارت یا با NAS برچسب می‌خورد (روتری که مشترکان را نیز از طریق RADIUS احراز هویت می‌کند) یا با monitor (دستگاهی که فقط برای پایش اضافه شده است). Add MikroTik یک دستگاه جدید ثبت می‌کند؛ Refresh now یک پرس‌وجوی فوری را اجبار می‌کند. کارت‌های فقط پایش یک منوی راست‌کلیک دارند — Open، Edit، Refresh Info، Delete.

صفحه دستگاه — شانزده زبانه

هر دستگاهی را برای صفحه مدیریت کامل آن باز کنید. زبانه‌ها در چهار گروه قرار می‌گیرند.

پایش

زبانهچه چیزی را نشان می‌دهد
نمای کلیاطلاعات دستگاه، اطلاعات سیستم، و نمودارهای تاریخچه عملکرد (CPU، حافظه، نشست‌ها در طول زمان)
منفذهاهر منفذ با وضعیت زنده آن، به‌همراه تاریخچه ترافیک به‌ازای هر منفذ
وب‌سایت‌هاوب‌سایت‌ها و برنامه‌های دیده‌شده روی روتر و یک نمای تاریخچه عملکرد از آن ترافیک

مدیر

زبانه Manager → General صفحه نگهداری دستگاه است: Identity (نام روتر)، Time (ساعت، منطقه زمانی و NTP)، و Tools (ریبوت، ping و دیگر اقدام‌های تک‌کلیکی روتر).

پیکربندی شبکه

زبانهچه چیزی را پیکربندی می‌کنید
Bridgeپل‌های LAN ایجاد کنید و انتخاب کنید کدام منفذهای فیزیکی (پورت‌ها) به هر کدام تعلق دارند
VLANمنفذهای VLAN را اضافه و مدیریت کنید
IPسه زیرزبانه — Static (آدرس‌های ثابت و پویا)، DHCP client (دریافت یک آدرس از بالادست)، DHCP server (توزیع آدرس‌ها، با یک جدول اجاره زنده)
DNSسرورها و حافظه پنهان DNS، به‌همراه یک فیلتر وب‌سایت‌ها و برنامه‌ها — مسدودسازی محتوای مبتنی بر DNS
WiFi / CAPsMANمنفذهای Wi-Fi با پیکربندی‌ها و پروفایل‌های امنیتی آنها؛ و کنترلر CAPsMAN — پیکربندی‌ها، قوانین تدارک و CAPهای راه دور
QoSاولویت دانلود آگاه از برنامه — برنامه‌ها و سایت‌های دیده‌شده توسط فیلتر وب‌سایت‌ها و برنامه‌ها را به هشت شکاف اولویت بکشید، سرعت هر برنامه را محدود کنید، و آن را به‌عنوان یک درخت صف به روتر ارسال کنید

سرویس‌ها و نگهداری

زبانهچه چیزی را پیکربندی می‌کنید
PPPoEسرورهای PPPoE، پروفایل‌های PPP، استخرهای IP، و فاصله interim-update حسابداری RADIUS
Hotspotسرورهای Hotspot، پروفایل‌های hotspot و پروفایل‌های کاربر، استخرهای DHCP/IP، و صفحه ورود captive-portal
اینترنتاتصالات بالادست WAN — WANهای مدیریت‌شده توسط SAMM و مسیرهای پیش‌فرض، به‌همراه هر WAN موجود غیر SAMM که فقط‌خواندنی نمایش داده می‌شود
Firewallقوانین فیلتر، یک تحلیل امنیت روتر، اتصال و اهداف، ماژول‌های امنیتی، و پشتیبان‌های firewall
به‌روزرسانیبه‌روزرسانی‌های RouterOS — یک کانال به‌روزرسانی انتخاب کنید، بررسی و اعمال کنید، و بسته‌های نصب‌شده را مرور کنید
جادوگرراه‌اندازی هدایت‌شده بار اول، در ادامه

فاصله interim-update در PPPoE

در زبانه PPPoE، Interim update تعیین می‌کند که روتر چند وقت یک‌بار بسته‌های Interim-Update حسابداری RADIUS را به SAMM ارسال می‌کند. SAMM از آن بسته‌ها برای جمع کردن شمارنده‌های بایت و زمان اتصال و برای ارزیابی محدودیت‌های سهمیه، روزانه و زمان اتصال استفاده می‌کند — بدون آنها، اعمال محدودیت و شمارنده‌های نشست زنده متوقف می‌شوند. مقدار توصیه‌شده 5m است.

صفحه ورود Hotspot

از تب Hotspot صفحه ورود captive-portal را مدیریت می‌کنید: صفحه‌های پیش‌فرض MikroTik را نگه دارید، یکی از قالب‌های داخلی را اعمال کنید، یا یکی از طرح‌های ذخیره‌شده خود را به کار ببرید. SAMM شامل یک ویرایشگر طراحی بصری و یک گالری قالب است — یک صفحه ورود را سفارشی کنید و مستقیماً به hotspot روتر بفرستید.

QoS آگاه از برنامه

تب QoS برنامه‌ها و سایت‌هایی را که SAMM از پیش روی روتر می‌بیند به یک طرح اولویت‌بندی دانلود تبدیل می‌کند. هر برنامه را از استخر به یکی از هشت جایگاه اولویت بکشید — در شرایط ازدحام جایگاه ۱ نخست و جایگاه ۸ آخر سرویس‌دهی می‌شود؛ برنامه‌هایی که در استخر می‌مانند شکل‌دهی نمی‌شوند. به‌صورت اختیاری سرعت دانلود هر برنامه را محدود کنید (برای مثال 10M) و یک سقف کلی دانلود تعیین کنید تا اولویت‌ها برای آن رقابت کنند. توزیع خودکار بر اساس دسته همه‌چیز را با یک کلیک سامان می‌دهد — پیام‌رسانی و کنفرانس نخست، دانلودهای حجیم و تست‌های سرعت در آخر.

هنگام ارسال، SAMM جایگاه‌ها را در یک queue tree MikroTik (با برچسب SAMM:qos، parent=global) به همراه قواعد فایروال packet-mark متناظر، از بالاترین اولویت به بعد کامپایل می‌کند. این بر پایه همان کاتالوگ Websites & App filter ساخته شده که مانیتورینگ را نیرو می‌دهد، بنابراین فقط برنامه‌هایی که واقعاً روی روتر دیده شده‌اند ظاهر می‌شوند — و حذف SAMM QoS هر شیء SAMM:qos را از روتر پاک می‌کند و شمارنده‌های شما را دست‌نخورده باقی می‌گذارد.

دستیار راه‌اندازی

تب Wizard همه‌چیز را در نه گام کوتاه گردآوری می‌کند و پیکربندی کامل را در پایان به‌صورت یکجا به روتر می‌فرستد. تا زمانی که در گام بازبینی نهایی تأیید نکنید چیزی ارسال نمی‌شود.

  1. خوش‌آمد و شناسایی — SAMM روتر را بررسی می‌کند و نشان می‌دهد چه چیزی از پیش پیکربندی شده است، تا بتوانید آن موارد را در ارسال رد کنید.
  2. واسط bridge — نام bridge شبکه LAN را بگذارید.
  3. پورت‌های bridge — انتخاب کنید کدام واسط‌های فیزیکی به bridge بپیوندند.
  4. DNS — تعیین resolverهای بالادست (پیش‌تنظیم‌های یک‌کلیکی برای Google، Cloudflare، Quad9 و بیشتر)، اندازه cache و به‌صورت اختیاری یک فیلتر محتوای DNS.
  5. اینترنت — یک یا چند لینک بالادست WAN اضافه کنید (Static / DHCP / PPPoE).
  6. RADIUS به SAMM — روتر را برای احراز هویت، حسابداری و CoA به میزبان SAMM خود نشانه بروید.
  7. سرویس‌ها — انتخاب کنید که wizard یک سرور PPPoE، یک سرور Hotspot یا هر دو را ایجاد کند.
  8. جزئیات PPPoE / Hotspot و فایروال — استخرها، پروفایل‌ها، زمان‌های اجاره، به علاوه قواعد فایروال و NAT.
  9. بازبینی و ارسال — فهرست دقیق فرمان‌هایی را که ارسال خواهند شد ببینید، سپس همه را به روتر بفرستید.
سرعت هر کاربر از RADIUS می‌آید wizard یک پروفایل واحد PPPoE / hotspot می‌سازد — پروفایل‌های جداگانه برای هر تیر ارسال نمی‌کند. سرعت هر مشترک هنگام ورود توسط SAMM در پاسخ RADIUS تحویل داده می‌شود، بنابراین تغییر طرح‌ها هرگز نیازمند ویرایش روتر نیست.

شبکه و روترها

CoA و تغییرات زنده

CoA (Change-of-Authorization) روشی است که SAMM با آن نشست یک مشترک را هنگامی که آنلاین است تغییر می‌دهد — برای افزایش یا کاهش سرعت، یا قطع اتصال او — بدون آنکه منتظر اتصال دوباره او بماند.

چگونه یک تغییر به یک مشترک فعال می‌رسد

SAMM هرگز تغییری را مستقیماً با یک کلیک دکمه به روتر نمی‌فرستد. هر اقدام مدیر یک مسیر ایمن را دنبال می‌کند:

اقدام مدیر گزارش حسابرسی tick سرویس samm-radius صندوق خروجی CoA روتر
  1. اقدام به‌عنوان یک فرمان در صف در audit log ثبت می‌شود.
  2. سرویس samm-radius در tick بعدی خود صف را تخلیه می‌کند، تغییر را اعمال می‌کند و — اگر مشترک آنلاین باشد — یک CoA را به صف می‌افزاید.
  3. صندوق خروجی CoA تخلیه می‌شود و بسته به روتر ارسال می‌گردد.

رویدادهای زمان‌محور — انقضا، لبه‌های پنجره سرعت، بازنشانی‌های روزانه — به همان صندوق خروجی تغذیه می‌شوند. کران بالای تأخیر یک tick سرویس samm-radius است (به‌طور پیش‌فرض ۳۰ ثانیه؛ برای اعمال سخت‌گیرانه‌تر آن را در تنظیمات کاهش دهید).

CoA ترکیبی

SAMM ابتدا یک CoA-Update می‌فرستد تا نشست را در جا تغییر دهد. اگر روتر پس از تعداد تلاش‌های پیکربندی‌شده آن را رد کند، SAMM به‌طور خودکار به یک Disconnect-Request بازمی‌گردد — مشترک دوباره متصل می‌شود و تنظیمات جدید را دریافت می‌کند. این راهبرد ترکیبی در همه نسخه‌های firmware مربوط به MikroTik کار می‌کند.

صفحه صندوق خروجی CoA

Users → CoA Outbox نمای زنده آن صف است. samm-radius تنها فرستنده است — پنل مدیریت هرگز مستقیماً یک CoA نمی‌فرستد — و در هر tick صف را تخلیه می‌کند. صفحه هر 30 ثانیه به‌طور خودکار تازه می‌شود.

شش شمارنده در بالای صفحه قرار دارند — Pending، Sent، NACK (در حال تلاش دوباره)، Done، Failed و Total. جدول را بر اساس وضعیت، بر اساس اقدام (update یا disconnect) فیلتر کنید، یا بر اساس نام کاربری، IP مربوط به NAS یا دلیل جستجو کنید.

وضعیتمعنا
در انتظاردر صف، در انتظار tick بعدی samm-radius
ارسال‌شدهبه روتر فرستاده شد، در انتظار پاسخ آن
nackروتر CoA-Update را رد کرد — SAMM در حال تلاش دوباره است، سپس به یک disconnect بازمی‌گردد
انجام‌شدهبا موفقیت اعمال شد
ناموفقپس از رسیدن به حد تلاش دوباره منصرف شد — برای دیدن آخرین خطا نشانگر را روی نشان نگه دارید

هر ردیف کاربر، روتر، اقدام، تعداد تلاش، دلیل و زمان‌های ایجاد و ارسال را نشان می‌دهد. اقدام‌های هر ردیف به شما اجازه می‌دهند یک بسته ناموفق یا nack‌شده را Retry کنید، بسته‌ای را که هنوز در حال ارسال است Cancel کنید، یا Attributes را باز کنید تا صفت‌های دقیق RADIUS که بسته حمل می‌کند را بررسی کنید. نشان نوار کناری ردیف‌های در انتظار را می‌شمارد؛ Dashboard خطاهای ۲۴ ساعت را دنبال می‌کند. یک سیستم سالم این صف را نزدیک به خالی نگه می‌دارد.

عملیات روزانه

Dashboard و نشست‌های زنده

دو صفحه زیر Overview جایی است که هر شیفت را از آن آغاز می‌کنید — Dashboard برای سلامت کل سیستم و Live Sessions برای اینکه دقیقاً چه کسی هم‌اکنون متصل است.

داشبورد

Overview → Dashboard صفحه خانه اپراتور است. یک انتخابگر بازه در بالا — Today، 7d، 14d، 30d، 90d — پنجره نمودار روند و ارقام محدود به تاریخ را تعیین می‌کند.

شش کاشی KPI

هر کاشی یک شمارنده زنده و یک میان‌بر است — روی آن کلیک کنید تا مستقیماً به فهرست فیلترشده پشت آن عدد بروید.

کاشینمایش می‌دهدباز می‌کند
هم‌اکنون آنلاینمشترکانی که هم‌اکنون یک نشست زنده RADIUS دارندکاربران فیلترشده به Online
مشترکان فعالحساب‌های فعال، با تعداد کل مشترکان در زیر آنکاربران فیلترشده به Active
منقضی شدهمشترکانی که اشتراکشان منقضی شده و طرح بعدی برایشان تعیین نشده استکاربران فیلترشده به Expired
صف CoAبسته‌های Change-of-Authorization در انتظار، به علاوه تعداد بسته‌هایی که در ۲۴ ساعت گذشته ناموفق بوده‌اندصندوق خروجی CoA
روترهاکل رکوردهای NAS، به علاوه تعداد مواردی که اکنون در دسترس نیستندمانیتور MikroTik
فاکتورهای پرداخت‌نشدهفاکتورهایی که هنوز نیازمند پیگیری پرداخت هستندفاکتورهای فیلترشده به Unpaid

نمودار کاربران و نشست‌های زنده

یک نمودار خطی مبتنی بر عکس‌فوری روزانه سه سری را در سراسر بازه انتخاب‌شده رسم می‌کند — کاربران فعال، نشست‌های آنلاین و کاربران منقضی‌شده — تا رشد و ریزش در یک نگاه دیده شوند.

سلامت pipeline

این پنل ضربان موتور اعمال قوانین است. در یک سیستم سالم صف‌ها روی صفر یا نزدیک صفر قرار دارند — عددی که بالا می‌ماند به یک سرویس گیرکرده یا یک روتر که تغییرات را رد می‌کند اشاره دارد.

معیارمعنای آن
samm-radius صفCoAهای در انتظار که منتظر tick بعدی هستند — باید ظرف چند ثانیه پاک شوند
CoA ناموفق (۲۴ ساعت)در یک سیستم سالم صفر است؛ عدد غیرصفر یعنی یک روتر CoAها را رد می‌کند
audit log در انتظاراقدام‌های مدیر در صف که هنوز توسط samm-radius اعمال نشده‌اند
نشست‌های محدودشدهمشترکانی که اکنون به دلیل یک محدودیت با سرعت کاهش‌یافته نگه داشته شده‌اند — مورد انتظار است، نه یک خطا
عکس‌فوری نشست‌هاتعداد نشست‌های زنده — باید با Online now هم‌خوانی داشته باشد
طرح‌های فعالاندازه کاتالوگ طرح‌های شما
مسیر اعمال قوانین اقدام‌های مدیر در samm.audit_log به صف می‌روند؛ tick سرویس samm-radius آن‌ها را تخلیه می‌کند و CoAها را به samm.coa_outbox می‌فرستد. مسیر کامل در CoA و تغییرات زنده آمده است.

جدول‌های فعالیت اخیر

چهار جدول زیر نمودار نمایی پیوسته از آنچه به‌تازگی رخ داده ارائه می‌دهند، هرکدام با یک پیوند View all به صفحه کامل خود:

  • صندوق خروجی CoA اخیر — اقدام، کاربر، وضعیت (done / pending / nack / failed)، تعداد تلاش، دلیل و زمان.
  • اقدام‌های اخیر مدیر — اقدام، هدف، عاملی که آن را آغاز کرده، اینکه آیا هنوز اعمال شده است، و زمان.
  • مشترکان اخیر — جدیدترین حساب‌ها به همراه وضعیت و آخرین زمان احراز هویتشان.
  • روترها — هر NAS با یک نقطه سلامت reachable / unreachable / no-data.

نشست‌های زنده

Overview → Live Sessions هر مشترکی را که روترها اکنون از طریق حسابداری RADIUS آنلاین گزارش می‌کنند فهرست می‌کند. صفحه هر ۳۰ ثانیه به‌طور خودکار تازه می‌شود؛ یک دکمه Refresh دستی در سربرگ قرار دارد.

فیلتر کردن فهرست

  • Search — با نام کاربری، framed IP یا IP مربوط به NAS مطابقت می‌کند و همان‌طور که تایپ می‌کنید ارسال می‌شود.
  • Router — فهرست را به نشست‌های روی یک NAS واحد محدود کنید.
  • Only throttled — فقط مشترکانی را نشان بده که یک محدودیت آن‌ها را با سرعت کاهش‌یافته نگه داشته است.
  • Per page — ۲۰، ۵۰، ۱۰۰ یا ۲۰۰ ردیف.

هر ردیف چه چیزی نشان می‌دهد

ستونمعنا
کاربرنام کاربری — به صفحه جزئیات مشترک پیوند می‌دهد
Framed IPآدرسی که روتر به این نشست اختصاص داده است
روترنام کوتاه NAS و آدرس IP آن
طرحطرح فعلی مشترک
سرعت مؤثرسرعتی که هم‌اکنون روی روتر اعمال شده است — سرعت طرح که با هر پنجره سرعت فعال تنظیم شده است. یک نشان throttled به این معناست که یک محدودیت مشترک را با سرعت کاهش‌یافته نگه داشته است.
دانلود / آپلودشمارنده‌های زنده بایت برای نشست
آنلاینمدت‌زمانی که نشست فعال بوده است
آغازشدهزمانی که نشست آغاز شد

قطع کردن یک نشست

دکمه Disconnect روی یک ردیف پس از یک پیام تأیید، یک CoA-Disconnect را برای همان نشست دقیق (دلیل admin_manual) به صف می‌افزاید. مشترک بلافاصله قطع می‌شود؛ اگر حساب او هنوز فعال باشد آزاد است که دوباره متصل شود. بسته را در صندوق خروجی CoA دنبال کنید.

عملیات روزانه

گزارش‌ها و تحلیل‌ها

Overview → Reports نمای تحلیلی است — روندهای مشترکان، ترافیک در طول زمان و پرمصرف‌ترین کاربران و کارت‌های روی شبکه شما.

انتخاب بازه

هر رقم روی صفحه به یک بازه تاریخ مقید است. یک پیش‌تنظیم انتخاب کنید — 7d، 14d، 30d، 90d — یا تاریخ‌های صریح start و end را تایپ کرده و روی Apply کلیک کنید. هنگام اجرای یک پرس‌وجوی بازه‌بلند مانند 90d، یک پوشش بارگذاری روی صفحه قرار می‌گیرد.

روندهای مشترک و نشست

یک نمودار خطی با سه سری در سراسر بازه انتخاب‌شده: مشترکان Active، نشست‌های Online و مشترکان Expired. از آن برای شناسایی رشد، ریزش و ساعت‌های پرترافیک شبکه خود استفاده کنید.

ترافیک روزانه

یک نمودار میله‌ای انباشته از بایت‌های آپلود و دانلود در هر روز. نگه‌داشتن نشانگر روی یک روز، ارقام آپلود و دانلود به علاوه یک مجموع ترکیبی را در پاورقی tooltip نشان می‌دهد.

فهرست‌های ۱۰ مورد برتر

چهار جدول پرترافیک‌ترین حساب‌های شما را نمایان می‌کنند، هرکدام بر اساس حجم به GB رتبه‌بندی شده‌اند:

فهرسترتبه‌بندی می‌کند
۱۰ دانلود برتر امروزبزرگ‌ترین دانلود از آخرین بازنشانی روزانه
۱۰ آپلود برتر امروزبزرگ‌ترین آپلود از آخرین بازنشانی روزانه
۱۰ دانلود برتر ماهبزرگ‌ترین دانلود در این ماه تقویمی
۱۰ آپلود برتر ماهبزرگ‌ترین آپلود در این ماه تقویمی

ترافیک بر اساس موجودیت

یک جدول صفحه‌بندی‌شده و قابل‌جستجو از ترافیک هر حساب. دو تب آنچه را فهرست می‌کند تغییر می‌دهند:

  • Users — هر مشترک به همراه نام، طرح، آپلود/دانلود امروز به MB و آپلود/دانلود این ماه به GB.
  • Cards — هر کارت hotspot به همراه گروه، وضعیت و همان تفکیک ترافیک امروز / ماه.

کادر search همان‌طور که تایپ می‌کنید جدول را فیلتر می‌کند؛ انتخابگر per-page از ۲۰ تا ۲۰۰ ردیف را می‌پذیرد. هر ردیف به صفحه جزئیات آن مشترک یا کارت پیوند می‌دهد.

خروجی گرفتن Reports یک نمای تحلیلی روی صفحه است. برای ردیف‌های خام جهت پردازش در یک صفحه‌گسترده، از Tools → Export / Import استفاده کنید تا کاربران، طرح‌ها یا NAS را به‌صورت CSV / XLSX دانلود کنید.

عملیات روزانه

حسابداری و صورتحساب

SAMM یک سیستم کامل حسابداری دوطرفه درون‌ساخته دارد — فاکتورها، هزینه‌ها، رسیدها، پرداخت‌ها، فروشندگان واسط، دارایی‌های ثابت و صورت‌های مالی کامل. هیچ محصول صورت‌حساب جداگانه‌ای برای یکپارچه‌سازی نیاز نیست، و هیچ حسابداری برای مرتب نگه‌داشتن دفاتر لازم نیست.

شما هرگز با بدهکار و بستانکار سروکار ندارید هر اقدام — ثبت یک پرداخت، افزودن یک هزینه، فروش یک گروه کارت — به‌طور خودکار یک سند حسابداری متوازن در دفتر کل ثبت می‌کند. شما با اصطلاحات ساده کار می‌کنید (فاکتورها، هزینه‌ها، رسیدها)؛ SAMM دفاتر دوطرفه را در پشت‌صحنه نگه می‌دارد و توازن آن‌ها را در تراز آزمایشی اثبات می‌کند.

صفحه Accounting در ده تب سازمان‌دهی شده است.

نمای کلی

عکس‌فوری مالی. چهار رقم شاخص در بالا قرار دارند:

رقممعنا
موجودی نقدمانده کل در همه حساب‌های نقدی و بانکی
پولی که به شما بدهکارنددریافتنی‌ها — فاکتورهای پرداخت‌نشده مشتری و فروشنده واسط
پولی که شما بدهکاریدپرداختنی‌ها — هزینه‌های پرداخت‌نشده
سود این ماهدرآمد منهای هزینه‌ها برای ماه جاری

در زیر: یک جدول از هر حساب نقدی و بانکی به همراه مانده آن، و یک نمودار درآمد در برابر هزینه‌ها در ۱، ۲، ۳، ۶ یا ۱۲ ماه گذشته.

فاکتورها

فاکتور صورت‌حسابی است که شما صادر می‌کنید. روی New invoice کلیک کنید و پر کنید:

فیلدمعنا
مشتریجستجوی type-ahead برای حسابی که صورت‌حساب برایش صادر می‌شود
دسته درآمدفروش به کدام حساب درآمد ثبت می‌شود
تاریخ صدور / سررسیدتاریخ صدور خالی = امروز؛ تاریخ سررسید خالی = تاریخ صدور
نرخ مالیات %به‌طور پیش‌فرض نرخ موجود در Settings → Billing است
اقلام سطرییک یا چند ردیف شرح / تعداد / قیمت واحد — جمع جزء، مالیات و مجموع به‌صورت زنده محاسبه می‌شوند

فاکتورها همچنین هنگامی که طرح یک مشترک تمدید می‌شود به‌طور خودکار تولید می‌شوند (از طریق اقدام Renew Expiration کاربر یا با تمدید خودکار)، به شرطی که طرح دارای قیمت باشد. فهرست بر اساس وضعیت فیلتر می‌شود — unpaid، partial، due، paid — و بر اساس شماره فاکتور یا مشتری جستجو می‌شود. هر فاکتور را برای صفحه جزئیات و یک PDF قابل‌چاپ باز کنید؛ مشترکان می‌توانند نسخه‌های خود را از پرتال مشتری و ربات Telegram دانلود کنند.

هزینه‌ها

هزینه پولی است که برای اداره ISP خرج می‌شود. New expense یک دسته (حساب هزینه)، فروشنده‌ای که پرداخت شده، مبلغ، تاریخ تحقق و یک تاریخ سررسید اختیاری را ثبت می‌کند. هر هزینه همان چرخه عمر unpaid / partial / due / paid مانند یک فاکتور، یک صفحه جزئیات و یک voucher PDF قابل‌چاپ دارد.

رسیدها و پرداخت‌ها

این دو تب جابه‌جایی واقعی وجه نقد را ثبت می‌کنند — متمایز از فاکتور یا هزینه‌ای که سبب آن شده است.

  • Receipts — پول ورودی: وجه نقد دریافت‌شده از یک مشتری، یک فروشنده واسط یا درآمد دیگر، که به یکی از حساب‌های نقدی شما می‌رسد. فاکتور همان صورت‌حساب است؛ رسید همان پولی است که در برابر آن می‌رسد.
  • Payments — پول خروجی: وجه نقد پرداخت‌شده در برابر یک هزینه یا به یک فروشنده واسط.

ثبت یک رسید یا پرداخت، فاکتور یا هزینه مرتبط را به سمت paid پیش می‌برد و سند دفتر کل متناظر را ثبت می‌کند.

مشتریان و فروش کارت

تب Customers مانده جاری هر مشتری را فهرست می‌کند — اینکه چقدر به شما بدهکار است. Card sales درآمد پیش‌پرداختی hotspot را پوشش می‌دهد: گروه‌های کارت و فروشندگان واسط فروخته‌شده را دنبال می‌کند. یک فروشنده واسط گروه‌های کارت کامل را روی یک فاکتور از شما می‌خرد، سپس کارت‌های تکی را به کاربران نهایی می‌فروشد؛ مانده بدهی آن‌ها همان چیزی است که هنوز باید به شما بپردازند.

دارایی‌ها و حساب‌های نقدی

  • Assetsدارایی‌های ثابت (روترها، خودروها، تجهیزات) را ثبت کنید. SAMM ارزش و استهلاک آن‌ها را در طول زمان دنبال می‌کند.
  • Cashحساب‌های نقدی و بانکی خود و حساب‌های سرمایه خود را مدیریت کنید: حقوق صاحب، که در آن یک آورده پولی است که مالک وارد کسب‌وکار می‌کند و یک برداشت پولی است که خارج می‌شود. سرمایه درآمد نیست و هرگز در صورت سود و زیان ظاهر نمی‌شود.

گزارش‌ها — صورت‌های مالی

تب Reports نمای حسابدار است. پنج صورت مالی، هرکدام دارای بازه تاریخ و قابل خروجی گرفتن به PDF:

گزارشپاسخ می‌دهد
سود و زیاندرآمد در برابر هزینه‌ها و سود خالص در یک بازه تاریخ. مبنای تعهدی — درآمد هنگام صدور فاکتور و هزینه‌ها هنگام تحقق شمرده می‌شوند، نه هنگام جابه‌جایی وجه نقد.
ترازنامهدر یک تاریخ مشخص: آنچه دارید (دارایی‌ها) در برابر آنچه بدهکارید (بدهی‌ها) به علاوه حقوق صاحبان. یک نشان balanced تأیید می‌کند که دو طرف با هم مطابقت دارند.
جریان نقدیبرای هر حساب نقدی — مانده ابتدای دوره، پول ورودی، پول خروجی، مانده پایان دوره در یک بازه.
سررسیدگذاریدریافتنی‌ها و پرداختنی‌های معوق که در بازه‌های سنی دسته‌بندی شده‌اند، تا بتوانید فاکتورهای سررسیدگذشته را پیگیری کنید و از صورت‌حساب‌ها جلوتر بمانید.
پیشرفتهدفاتر خام: دفتر کل (هر سطر روی یک حساب با یک مانده جاری)، تراز آزمایشی (بررسی توازن دفاتر)، دفتر روزنامه و یک activity log.
بررسی توازن در تراز آزمایشی جمع ستون‌های بدهکار و بستانکار هر حساب باید برابر باشد — این اثبات درستی دفاتر است. اگر هرگز از توازن خارج شود، به یک خطای ثبت اشاره دارد که ارزش بررسی دارد.

عملیات روزانه

تیکت‌های پشتیبانی

SAMM یک میز پشتیبانی درون‌ساخته دارد. مشترکان از پرتال مشتری یا ربات Telegram تیکت ثبت می‌کنند، یک مدیر می‌تواند به نمایندگی از یک مشترک تیکتی باز کند، و تیم شما همه آن‌ها را از Users → Support Tickets مدیریت می‌کند.

صف تیکت‌ها

صف هر تیکت را فهرست می‌کند — شماره، مشتری، موضوع، اولویت، وضعیت، تاریخ‌های باز شدن و آخرین به‌روزرسانی، و تعداد پیام‌ها. آن را با موارد زیر فیلتر کنید:

  • تراشه‌های وضعیت — یکی برای هر وضعیت تیکت، هرکدام دارای یک شمارش زنده، تا حجم کار در یک نگاه دیده شود.
  • اولویت — Normal، Moderate یا Critical.
  • Active / Withdrawn — یک مشتری می‌تواند تیکتی را که دیگر نیازی به آن ندارد پس بگیرد؛ تیکت‌های پس‌گرفته‌شده کم‌رنگ و به‌طور پیش‌فرض پنهان می‌شوند.
  • Search — بر اساس شماره تیکت، موضوع یا مشتری.

نشان نوار کناری تیکت‌های باز را می‌شمارد تا چیزی از قلم نیفتد.

باز کردن یک تیکت

New ticket به یک مدیر اجازه می‌دهد برای یک مشتری انتخاب‌شده تیکتی ثبت کند — مشتری را انتخاب کنید، سپس یک موضوع، اولویت و شرح تعیین کنید. مشترکان نیز تیکت خود را از پرتال مشتری یا ربات Telegram باز می‌کنند.

رسیدگی به یک تیکت

یک تیکت را باز کنید تا کل رشته گفتگو را بخوانید. از آنجا می‌توانید:

  • پاسخ به مشتری — یک پیام عمومی که مشترک آن را در پرتال خود و از طریق ربات Telegram می‌بیند.
  • افزودن یک یادداشت داخلی — یک پیام فقط برای کارکنان، پنهان از مشتری، برای یادداشت‌های تحویل میان اعضای تیم شما.
  • وضعیت و اولویت تیکت را تغییر دهید.

روی هر ردیف کلیک راست کنید — یا از دکمه ⋮ آن استفاده کنید — برای همان اقدام‌های وضعیت، اولویت، پاسخ و یادداشت داخلی بدون ترک صف.

عملیات روزانه

مرکز اعلان‌ها

SAMM مشترکان را به‌طور خودکار مطلع نگه می‌دارد — از طریق ایمیل و Telegram — و به شما اجازه می‌دهد پیام‌ها را همگانی ارسال کنید. سرویس samm-notification همه‌چیز را از طریق یک صف محدودشده تحویل می‌دهد. صفحه System → Notification Center شش تب دارد.

نمای کلی

تب فرود — شمارش‌های زنده (در صف، در حال ارسال، ارسال‌شده امروز، ناموفق، رد شده، انصراف‌داده)، وضعیت هر کانال تحویل و یک فید از جدیدترین اعلان‌ها.

کانال‌ها

پیکربندی کنید که پیام‌ها چگونه SAMM را ترک می‌کنند. Email از حساب اعلان خاص خود استفاده می‌کند که از SMTP بازیابی رمز عبور در تنظیمات جداست. Telegram از یک توکن bot استفاده می‌کند. هر مشترک، از پرتال مشتری، انتخاب می‌کند چه کانال‌هایی می‌خواهد و می‌تواند به‌طور کامل انصراف دهد.

پیام‌ها

قالب‌های پیام، یک مجموعه برای هر رویداد. متن هر اعلان — یادآوری‌های تمدید، رسیدها و بقیه — را ویرایش کنید تا هر پیام با لحن و زبان خودتان ارسال شود.

قواعد و تایمرها

این تب تعیین می‌کند که اعلان‌های خودکار چه زمانی و چگونه فعال شوند. برای هر رویداد شما کنترل می‌کنید:

  • اینکه آیا قاعده روشن است.
  • Ignore opt-out — وقتی تنظیم شود، پیام به هر مشترکی می‌رسد حتی اگر انصراف داده باشد. آن را برای پیام‌های تراکنشی مهم نگه دارید.
  • زمان‌بندی — برای مثال، چند روز پیش از انقضا یک یادآوری تمدید ارسال می‌شود.
  • تحویل و throttling — worker صف را در هر tick یک دسته تخلیه می‌کند؛ اندازه دسته و بازه tick با هم سرعت خروج پیام‌ها را تنظیم می‌کنند، تا یک ارسال همگانی بزرگ هرگز سرور ایمیل شما را غرق نکند.

رویدادهایی که SAMM می‌تواند به‌تنهایی صادر کند شامل یادآوری تمدید (پیش از انقضای یک اشتراک)، اعلان انقضا (هنگام سپری شدن)، هشدار سهمیه (هنگامی که سقف داده رو به اتمام است)، رسید پرداخت (هنگام ثبت یک پرداخت) و تمدید طرح می‌شوند.

ارسال همگانی

یک پیام یک‌باره — یک بازه تعمیر و نگهداری، یک تغییر قیمت — به مجموعه‌ای انتخاب‌شده از مشترکان ارسال کنید. ارسال همگانی از همان صف محدودشده اعلان‌های خودکار عبور می‌کند.

صندوق خروجی

هر پیامی که SAMM به صف افزوده یا ارسال کرده، به همراه وضعیت تحویل هر پیام، تا بتوانید تأیید کنید که یک اعلان به مشترک رسیده یا ببینید چرا نرسیده است.

سیستم

WireGuard VPN

SAMM می‌تواند یک سرور WireGuard VPN روی میزبان SAMM اجرا کند — معمولاً برای دسترسی remote-admin به دستگاه SAMM و دسترسی مدیریتی به MikroTikهای پشت آن. این به‌طور کامل از System → VPN مدیریت می‌شود؛ نیازی به shell نیست.

تب Server

  1. روی Generate Keys کلیک کنید تا جفت‌کلید سرور ایجاد شود. Server Public Key پس از تولید ظاهر می‌شود — کلاینت‌ها به آن نیاز دارند.
  2. Listen Port (UDP، پیش‌فرض 51820Server Tunnel Address (همان CIDR روی واسط wg0، پیش‌فرض 10.254.254.1/24) و Client IP Range را تنظیم کنید — آدرس‌های شروع و پایانی که SAMM به‌طور خودکار به peerهای جدید اختصاص می‌دهد.
  3. Enable WireGuard VPN را روشن کنید و روی Save کلیک کنید — SAMM واسط wg0 را بالا می‌آورد. این کلید تا زمانی که کلیدهای سرور وجود نداشته باشند قفل است.

تب Clients

روی Add Client کلیک کنید، به peer یک نام بدهید، و SAMM آدرس بعدی از بازه کلاینت را به آن اختصاص می‌دهد. برای هر peer می‌توانید فایل پیکربندی آن را دانلود کنید، یک QR code را با اپ موبایل WireGuard اسکن کنید، یا فرمان‌های آماده MikroTik RouterOS را کپی کنید تا یک روتر را به VPN بیاورید. peerها می‌توانند روشن/خاموش شوند یا حذف شوند؛ رنگ‌های وضعیت نشان می‌دهند که هرکدام متصل، کهنه یا هرگز دیده‌نشده است.

تولید مجدد کلیدها مخرب است Regenerate Keys جفت‌کلید سرور را تغییر می‌دهد. هر پیکربندی کلاینتِ از پیش مستقرشده کلید عمومی قدیمی سرور را در خود دارد و تا زمانی که پیکربندی به‌روزشده را دوباره توزیع نکنید اتصال را متوقف می‌کند. رابط کاربری این کار را پشت یک دیالوگ type-to-confirm محدود می‌کند.

سیستم

Cloudflare Tunnel

یک تونل Cloudflare Zero Trust، SAMM را به اینترنت عمومی منتشر می‌کند بدون باز کردن هیچ پورت فایروال — هنگامی که میزبان SAMM پشت NAT قرار دارد مفید است. این از System → Cloudflare Tunnel مدیریت می‌شود.

وضعیت سرویس

صفحه با یک کارت وضعیت باز می‌شود که حالت connector را گزارش می‌دهد:

حالتمعنا
در حال اجراتونل فعال است و ترافیک را forward می‌کند
متوقف‌شدهپیکربندی‌شده اما اکنون در حال اجرا نیست
پیکربندی‌نشدهباینری موجود است — برای راه‌اندازی آن یک توکن جای‌گذاری کنید
نصب‌نشدهبرای نصب باینری cloudflared دوباره install.sh را اجرا کنید

همچنین نسخه cloudflared و اینکه آیا connector روی راه‌اندازی خودکار هنگام بوت تنظیم شده است را نشان می‌دهد.

پیکربندی تونل

  1. در داشبورد Cloudflare Zero Trust (one.dash.cloudflare.comNetworks → Tunnels را باز کنید و Create a tunnel را بزنید.
  2. connector Cloudflared را انتخاب کنید، به تونل نام بدهید و ذخیره کنید. در گام نصب، فقط توکن را کپی کنید — همان رشته بلند پس از --token.
  3. آن را در SAMM جای‌گذاری کنید و روی Configure Tunnel کلیک کنید. SAMM توکن را به cloudflared می‌دهد و connector را راه می‌اندازد.
  4. دوباره در Cloudflare، یک Public hostname اضافه کنید: آدرس انتخابی شما، نوع HTTP، URL برابر localhost:80 (پروکسی‌شده توسط nginx — توصیه‌شده) یا localhost:8000 (مستقیم به API).

ظرف چند ثانیه نشان وضعیت سبز می‌شود و SAMM روی public hostname قابل‌دسترس می‌شود. پس از پیکربندی، اقدام‌های یک‌کلیکی به شما اجازه می‌دهند connector را Start، Stop یا Restart کنید، برای چرخاندن توکن Replace Token بزنید، یا Remove tunnel کنید (یک اقدام type-REMOVE-to-confirm).

بدون پورت باز، توکن هرگز در پایگاه داده نیست تونل یک اتصال خروجی به لبه Cloudflare برقرار می‌کند — هیچ پورت فایروالی هرگز روی سرور باز نمی‌شود. توکن به cloudflared forward می‌شود و زیر /etc/cloudflared/ ذخیره می‌گردد؛ SAMM هرگز آن را در پایگاه داده نگه نمی‌دارد. TLS در لبه Cloudflare خاتمه می‌یابد، بنابراین خود SAMM روی loopback با HTTP ساده اجرا می‌شود.

سیستم

تنظیمات

System → Settings پارامترهای زنده و قابل بارگذاری مجدد به‌صورت داغ را نگه می‌دارد. daemonها آن‌ها را در tick بعدی خود دوباره می‌خوانند — هیچ راه‌اندازی مجدد سرویسی لازم نیست. تنظیمات در تب‌ها سازمان‌دهی شده‌اند.

پارامترهای عمومی

تنظیمپیش‌فرضکنترل می‌کند
samm-radius interval30 sهر چند وقت یک‌بار رویدادهای زمان‌محور ارزیابی و CoAها ارسال می‌شوند
samm-worker interval60 sریتم ping روتر + همگام‌سازی MikroTik API
بازه میان‌دوره‌ای حسابداری60 sبازه حسابداری که به روترها ارسال می‌شود
زمان بازنشانی روزانه00:00زمانی که شمارنده‌های مصرف روزانه بازنشانی می‌شوند
منطقه زمانی سرورUTCمنطقه زمانی برای پنجره‌های سرعت و بازنشانی روزانه
پورت پیش‌فرض CoA3799پورت پیش‌فرض UDP برای بسته‌های CoA
حداکثر تلاش دوباره CoA3تعداد تلاش دوباره پیش از بازگشت به Disconnect-Request

برای اعمال سخت‌گیرانه‌تر بازه samm-radius را کاهش دهید؛ برای کاستن از بار آن را افزایش دهید.

تب ISP

هویت ISP خود را تنظیم کنید و یک لوگوی ISP بارگذاری کنید. لوگو به‌طور خودکار تغییر اندازه داده می‌شود و روی کارت‌های چاپی hotspot و PDFهای فاکتور ظاهر می‌شود.

تب Email

سرور SMTP مورد استفاده برای کدهای بازیابی رمز عبور ارسال‌شده به مدیران و مشتریان را پیکربندی کنید (host، پورت، SSL/STARTTLS، نام کاربری، آدرس فرستنده، رمز عبور). روی Test connection کلیک کنید تا اعتبارنامه‌ها بدون ارسال ایمیل تأیید شوند.

دو حساب ایمیل تب Email در اینجا فقط برای OTP / بازیابی رمز عبور است. حسابی که برای اعلان‌های مشتری استفاده می‌شود جداگانه در Notification Center پیکربندی می‌شود.

سیستم

مدیران و نقش‌ها

System → Admins مدیریت می‌کند که چه کسی می‌تواند به پرتال مدیریت وارد شود و هر فرد چه کارهایی می‌تواند انجام دهد. دو تب دارد: Admins و Roles.

حساب‌های مدیر

یک مدیر با نام کاربری، رمز عبور، ایمیل اختیاری و یک نقش ایجاد کنید. از منوی ⋮ یک ردیف می‌توانید نقش یا رمز عبور را ویرایش کنید، حساب را غیرفعال کنید یا آن را حذف کنید. فقط یک superadmin می‌تواند سایر مدیران را مدیریت کند.

نقش‌ها و مجوزها

یک نقش دسترسی به هر ناحیه را اعطا می‌کند. نقش داخلی superadmin همیشه دسترسی کامل دارد و قابل تغییر نیست. برای دسترسی محدود نقش‌های سفارشی ایجاد کنید — یک نقش جدید تا زمانی که مجوزهای آن را تنظیم نکنید بدون دسترسی آغاز می‌شود.

برای هر ناحیه از SAMM (مشترکان، طرح‌ها، NAS، حسابداری، ابزارها، تنظیمات و غیره) یک نقش روی یکی از سه سطح تنظیم می‌شود:

سطحمعنا
مجاز نیستاین ناحیه به‌طور کامل از نوار کناری پنهان است
مشاهدهدسترسی فقط‌خواندنی
ویرایشدسترسی کامل — ایجاد، تغییر، حذف

دامنه دیدپذیری داده

هر نقش همچنین یک دامنه دارد. See all customers & cards یعنی نقش هر رکورد را می‌بیند؛ با برداشتن تیک آن، مدیران آن فقط مشترکان و کارت‌هایی را می‌بینند که خودشان ایجاد کرده‌اند — ایده‌آل برای فروشندگان واسط یا کارکنان شعبه.

License همیشه قابل‌دسترس است صفحه System → License عمداً از ماتریس مجوزها مستثنا است — این مسیر بازیابی از یک قفل‌شدگی است و هرگز نباید از هیچ مدیری پنهان شود.

سیستم

ابزارها

بخش Tools ابزارهای انبوه و نگهداری را گرد هم می‌آورد.

پشتیبان‌گیری و بازیابی

پیش از هر تغییر عمده یک عکس‌فوری کامل از پایگاه داده بگیرید. یک پشتیبان یک آرشیو pg_dump فشرده‌شده با gzip است که روی سرور ذخیره می‌شود، هرکدام با یک سربرگ SAMM.

  • Create backup — به‌صورت اختیاری یک یادداشت اضافه کنید؛ Skip usage & history را برای یک dump کوچک‌تر و سریع‌تر که جدول‌های حجیم لاگ را حذف می‌کند تیک بزنید.
  • یک پشتیبان را روی PC خود Download کنید، یا یک پشتیبان قبلی SAMM را دوباره روی سرور upload کنید.
  • Restore پایگاه داده فعلی را بازنویسی می‌کند — پشت یک دیالوگ type-RESTORE-to-confirm محدود شده است.

پاک‌کننده تاریخچه

ردیف‌های قدیمی لاگ و تاریخچه را برای بازپس‌گیری فضای پایگاه داده به‌طور دائمی حذف کنید. یک پیش‌تنظیم نگهداری را انتخاب کرده و تأیید کنید. پاک‌کننده نشست‌های بسته‌شده RADIUS، رکوردهای post-auth، تجمیع‌های مصرف روزانه، تاریخچه روتر/واسط، لاگ‌های محدودیت، ورودی‌های audit اعمال‌شده و ردیف‌های CoA پایان‌یافته را هرس می‌کند. هرگز نشست‌های زنده، فرمان‌های در صف، CoAهای در انتظار یا مجموع‌های مصرف مادام‌العمر غیرقابل‌بازنشانی را دست نمی‌زند.

ابتدا یک پشتیبان بگیرید پاک‌کننده تاریخچه به‌طور دائمی حذف می‌کند. اگر ممکن است بعداً به داده‌ها نیاز داشته باشید پیش از پاک‌سازی یک پشتیبان بگیرید.

خروجی / ورودی

خروجی و ورودی انبوه برای Users، Plans و NAS به‌صورت .csv یا .xlsx. یک قالب (ستون‌های درست به علاوه یک ردیف نمونه) یا یک عکس‌فوری از داده‌های فعلی را دانلود کنید، آن را پر کنید و دوباره بارگذاری کنید. هر ردیف اعتبارسنجی و روی یک صفحه پیش‌نمایش نمایش داده می‌شود — موارد تکراری و ردیف‌های نامعتبر نمایان می‌شوند، و شما انتخاب می‌کنید که موارد تکراری را رد کنید یا در جا به‌روزرسانی کنید — پیش از آنکه چیزی نوشته شود.

تغییرات انبوه

یک تغییر — مالک، تاریخ انقضا، وضعیت یا تمدید خودکار — را به هر مشترکی که با یک فیلتر مطابقت دارد، در یک اجرای واحد اعمال کنید. تغییر را انتخاب کنید، فیلتر را بسازید (وضعیت / طرح / مالک / جستجو)، فهرست مطابق را بازبینی کنید و تأیید کنید.

حذف انبوه

بسیاری از مشترکان یا کارت‌های hotspot را که با فیلتر انتخاب شده‌اند به‌یک‌باره به‌طور دائمی حذف کنید. حذف یک مشترک، تاریخچه مصرف، نشست‌ها، حسابداری RADIUS و فاکتورهای او را نیز حذف می‌کند و هر نشست زنده را قطع می‌کند. پشت یک دیالوگ type-DELETE-to-confirm محدود شده است.

سیستم

زبان‌ها و پوسته‌ها

زبان‌ها

پرتال‌های مدیریت و مشتری کاملاً قابل ترجمه هستند. شش زبان به‌صورت درون‌ساخته ارائه می‌شوند: انگلیسی، عربی (راست‌به‌چپ)، ترکی، فرانسوی، اسپانیایی و آلمانی. هر کاربر زبان خود را از نوار بالا یا پروفایل خود انتخاب می‌کند؛ این انتخاب برای هر حساب به خاطر سپرده می‌شود.

ویرایشگر ترجمه

یک superadmin می‌تواند ترجمه‌ها را به‌صورت زنده از System → Translations ویرایش کند — بدون راه‌اندازی مجدد، بدون ویرایش فایل. ویرایشگر همچنین زبان‌های کاملاً جدید ایجاد می‌کند و کارپوشه‌های ترجمه را به‌صورت .xlsx وارد/صادر می‌کند، تا بتوانید SAMM را به هر زبانی که سرویس می‌دهید بومی‌سازی کنید.

پوسته‌ها

SAMM با ۱۱ پوسته بصری، روشن و تیره، ارائه می‌شود. هر کاربر یک پوسته را از نوار بالا انتخاب می‌کند؛ پیش‌نمایش بی‌درنگ به‌روز می‌شود و برای هر حساب ذخیره می‌گردد. اصطلاحات IT هرگز ترجمه نمی‌شوند، بنابراین صفحه‌های فنی در هر زبانی دقیق باقی می‌مانند.

سیستم

گزارش حسابرسی

System → Audit Log سابقه اقدام‌های مدیر است — و صف فرمانی که آن‌ها را اجرا می‌کند. وقتی یک شمارنده را بازنشانی می‌کنید، یک طرح را تغییر می‌دهید، یا یک مشترک را تمدید می‌کنید، SAMM اقدام را به‌جای دست‌زدن مستقیم به یک روتر زنده اینجا می‌نویسد.

هر ورودی اقدام، هدف آن، مدیری که آن را آغاز کرده، زمان وقوع، و اینکه آیا هنوز اعمال شده است را نشان می‌دهد. سرویس samm-radius ورودی‌های در انتظار را در tick بعدی خود تخلیه می‌کند و در جایی که لازم باشد یک CoA برای تازه کردن یک نشست زنده صادر می‌کند. نشان نوار کناری ورودی‌هایی را که هنوز در انتظارند می‌شمارد؛ پنل pipeline-health در Dashboard انباشت کار را دنبال می‌کند.

چرا یک صف هدایت هر اقدام مدیر از طریق audit log یعنی تغییرات دقیقاً توسط یک فرآیند و به ترتیبی قابل‌پیش‌بینی اعمال می‌شوند — هرگز میان پرتال وب و یک روتر رقابتی رخ نمی‌دهد.

صدور مجوز

صدور مجوز و سطوح

هر نصب SAMM به‌صورت هر دستگاه لایسنس می‌شود — طرح روی همان نصب قرار دارد، بنابراین می‌توانید چند سرور SAMM اجرا کنید، هرکدام روی تیر خودش. تیر سه سقف عددی را تعیین می‌کند.

تیرکاربران AAAکارت‌های HotspotNAS / روترها
ثبت‌نشده252001
Free1005002
Pro2,0005,0005
Pro Maxنامحدودنامحدودنامحدود

یک نصب تازه به‌صورت ثبت‌نشده در کمترین حد کف اجرا می‌شود. هر ویژگی در هر تیر در دسترس است — تیر فقط سقف‌ها را تعیین می‌کند. ایجاد یک مشترک، کارت یا NAS فراتر از سقف تا زمانی که ارتقا دهید مسدود می‌شود؛ هیچ داده‌ای هرگز از دست نمی‌رود.

فعال‌سازی و ارتقا

  1. System → License را باز کنید.
  2. با ورود با حساب SecuryTik خود فعال‌سازی کنید — یا از Link this device استفاده کنید، که یک کد نشان می‌دهد که آن را روی samm.securytik.com بدون تایپ رمز عبور خود روی سرور تأیید می‌کنید. دستگاه روی Free فعال می‌شود.
  3. برای بالاتر رفتن، Pro یا Pro Max را از همان صفحه درخواست کنید — یک مدیر SecuryTik آن را بررسی و تأیید می‌کند.

صفحه License همچنین لایسنس را در صورت درخواست دوباره بررسی می‌کند و مصرف فعلی شما را در برابر هر سقف نشان می‌دهد. Unlink device نصب را بدون حذف هیچ داده‌ای به تیر ثبت‌نشده بازمی‌گرداند.

اگر یک لایسنس پولی منقضی شود

SAMM هرگز داده‌ها را حذف نمی‌کند. یک لایسنس منقضی‌شده به‌آرامی پایین می‌آید:

مرحلهچه اتفاقی می‌افتد
هشداریک بنر یادآوری؛ همه چیز به کار خود ادامه می‌دهد
مهلتیک بازه کوتاه برای فعال‌سازی مجدد؛ مشترکان آنلاین می‌مانند
قفل نرمسرویس‌های پس‌زمینه متوقف می‌شوند؛ RADIUS حدود ۷ روز به احراز هویت ادامه می‌دهد
قفل سختسرویس‌ها به‌جز صفحه فعال‌سازی مجدد متوقف می‌شوند

فعال‌سازی مجدد در هر مرحله، همه سرویس‌ها را به‌طور خودکار راه‌اندازی می‌کند — تمام داده‌ها و تاریخچه مشترکان دست‌نخورده باقی می‌مانند.

به‌روزرسانی‌های خودکار

به‌روزرسانی خودکار مستقل از صدور مجوز است — همه سطوح به‌روزرسانی می‌شوند و یک مجوز منقضی‌شده هرگز آن را مسدود نمی‌کند. SAMM هر روز نسخه امضاشده جدید را بررسی می‌کند. از System → License می‌توانید بین notify (پیش‌فرض — یک بنر با دکمه Apply now) و auto (اعمال بدون نظارت) جابه‌جا شوید. هر به‌روزرسانی تأیید، پشتیبان‌گیری و در همان محل اعمال می‌شود. همچنین می‌توانید در هر زمان نصب‌کننده را دوباره اجرا کنید — به‌صورت idempotent ارتقا می‌دهد.

برای مشترکان شما

پرتال مشتری و ربات

SAMM به هر مشترک دو رابط خودخدمت می‌دهد — یک پورتال وب و یک ربات Telegram — تا بتوانند بدون تماس با شما مصرف را بررسی کنند و پرداخت انجام دهند.

پورتال مشتری

مشترکان با نام کاربری و رمز عبور SAMM خود در ریشه سایت SAMM (/) وارد می‌شوند. پورتال شامل موارد زیر است:

صفحهآنچه مشترک می‌بیند
نمای کلیوضعیت حساب، پلن، انقضا، مصرف امروز و این ماه، و هر فاکتور پرداخت‌نشده
مصرف و نشست‌هامجموع دانلود/آپلود، بودجه زمان اتصال، و تاریخچه کامل نشست‌ها
پلن‌های منپلن فعلی به‌همراه کاتالوگ پلن‌های موجود
فاکتورهای منتاریخچه صورتحساب با دانلود PDF تک‌کلیکی
تیکت‌های پشتیبانیباز کردن و پیگیری تیکت‌های پشتیبانی
پروفایلویرایش اطلاعات تماس، تغییر رمز عبور، تنظیم زبان و پوسته، مدیریت اعلان‌ها

از بخش Profile، مشترک می‌تواند حساب Telegram خود را متصل کند، کانال‌های اعلان مورد نظرش را مرتب کند، یا به‌کلی از دریافت اعلان‌ها انصراف دهد. اگر رمز عبور خود را فراموش کنند، یک کد OTP برایشان ایمیل می‌شود (این نیازمند پیکربندی تب Email است).

ربات Telegram

سرویس samm-telegram یک ربات خودخدمت تعاملی اجرا می‌کند. مشترک /start را ارسال می‌کند، یک‌بار با نام کاربری و رمز عبور SAMM خود احراز هویت می‌کند (ربات بلافاصله پیام رمز عبور را حذف می‌کند) و سپس می‌تواند به‌طور کامل از داخل چت:

  • پلن، سهمیه، مصرف و تاریخ انقضای خود را بررسی کند
  • فاکتورها را به‌صورت PDF مشاهده و دانلود کند
  • پروفایل خود را به‌روز کند و رمز عبورش را تغییر دهد
  • باز کردن و پیگیری تیکت‌های پشتیبانی

ربات همچنین اعلان‌های خودکار — یادآوری تمدید، اطلاعیه‌های انقضا، هشدارهای سهمیه و رسیدها — را به مشترکانی که Telegram را متصل کرده‌اند تحویل می‌دهد.

مرجع

کار با SAMM

تقریباً همه چیز از پورتال مدیریت انجام می‌شود. این صفحه مرجع خط فرمان برای مواقع نادری است که به آن نیاز دارید.

مدیریت سرویس

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

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

# Validate the FreeRADIUS config after any change
freeradius -CX

CLI مدیریت

برای عملیات سریع مشترکان از خط فرمان. هر دستور در گزارش رخدادها صف‌بندی می‌شود و در تیک بعدی samm-radius اعمال می‌گردد — دقیقاً مانند اقدامات رابط کاربری.

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

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

فایل‌های پیکربندی

فایلشامل
/etc/samm/samm.yamlDSN پایگاه داده، اندازه‌های connection-pool، سطح لاگ
/etc/samm/api.envکلیدهای مخفی نشست پورتال و تنظیمات SMTP بازیابی رمز عبور
/etc/samm/secret.keyکلید رمزگذاری برای رمزهای API روتر ذخیره‌شده

این فایل‌ها در طول ارتقاها حفظ می‌شوند و هرگز با اجرای مجدد نصب‌کننده بازنویسی نمی‌شوند. تنظیمات زمان اجرا (تناوب حلقه‌ها، زمان بازنشانی روزانه، پورت‌های CoA) به‌جای آن در Settings قرار دارند و بدون راه‌اندازی مجدد اعمال می‌شوند.

به‌روزرسانی SAMM

یا بگذارید SAMM خودش را از System → License به‌روز کند، یا نصب‌کننده را دوباره اجرا کنید — به Installation → Upgrading مراجعه کنید. هر دو مسیر مهاجرت‌ها را دوباره اعمال می‌کنند و سرویس‌ها را راه‌اندازی مجدد می‌کنند؛ پیکربندی و داده‌های شما دست‌نخورده می‌مانند.

پشتیبان‌گیری و بازیابی

پیش از هر تغییر عمده، از Tools → Backup & Restore برای یک عکس کامل از پایگاه داده استفاده کنید. برای بازسازی روی یک میزبان جدید، SAMM را نصب کنید و سپس پشتیبان را بازیابی کنید.

مرجع

پرسش‌های متداول و رفع اشکال

SAMM از چه سیستم‌عامل‌هایی پشتیبانی می‌کند؟

Ubuntu 22.04 LTS، Ubuntu 24.04 LTS و Debian 12. فقط Linux در سطح سرور — نسخه‌های دسکتاپ پشتیبانی نمی‌شوند. نصب‌کننده به systemd، یک نصب تازه PostgreSQL (که برایتان راه‌اندازی می‌شود) و دسترسی root نیاز دارد.

آیا برای اجرای SAMM به اتصال اینترنت نیاز دارم؟

خیر. SAMM به‌طور کامل روی سرور خودتان اجرا می‌شود و مشترکان را به‌صورت محلی از طریق RADIUS احراز هویت می‌کند. تنها ترافیک خروجی، یک ضربان دوره‌ای مجوز به سرور مجوز SecuryTik است تا پلن شما معتبر بماند.

آیا می‌توانم SAMM را در فضای ابری اجرا کنم، یا باید on-prem باشد؟

هر دو کار می‌کند. بیشتر اپراتورها آن را on-prem در کنار روترهای هسته خود اجرا می‌کنند؛ برخی روی یک VM ابری کوچک با یک تونل Cloudflare Zero Trust به‌عقب اجرا می‌کنند. تنها لازمه این است که روترهای MikroTik بتوانند سرور SAMM را روی پورت‌های RADIUS (1812/1813 UDP) دریافت کنند و SAMM بتواند روترها را از طریق API میکروتیک دریافت کند.

آیا هنگام افزودن یا حذف یک روتر باید FreeRADIUS را راه‌اندازی مجدد کنم؟

خیر. SAMM کلاینت‌های NAS را به‌صورت پویا از پایگاه داده تشخیص می‌دهد، بنابراین افزودن، ویرایش یا حذف یک روتر در MikroTik → NAS بدون راه‌اندازی مجدد اعمال می‌شود.

تغییر پلن یا بازنشانی شمارنده با چه سرعتی اعمال می‌شود؟

اقدامات مدیریتی صف‌بندی می‌شوند و توسط سرویس samm-radius در تیک بعدی‌اش اعمال می‌گردند — به‌طور پیش‌فرض ظرف ۳۰ ثانیه. اگر مشترک آنلاین باشد، SAMM همچنین یک CoA زنده برای تازه‌سازی نشست ارسال می‌کند. برای زمان‌بندی دقیق‌تر، بازه samm-radius را در System → Settings کاهش دهید.

اگر یک مجوز پولی منقضی شود، چه بلایی سر داده‌های من می‌آید؟

هیچ چیز هرگز حذف نمی‌شود. یک مجوز منقضی‌شده مرحله‌به‌مرحله از هشدار، مهلت، یک قفل نرم (RADIUS حدود یک هفته به احراز هویت ادامه می‌دهد) و در نهایت یک قفل سخت پایین می‌آید. فعال‌سازی مجدد در هر مرحله، همه سرویس‌ها را با تمام داده‌های دست‌نخورده راه‌اندازی می‌کند.

آیا SAMM رایگان است؟ Pro چه چیزی اضافه می‌کند؟

سطح Free برای همیشه رایگان است و شامل تمام قابلیت‌ها می‌شود. Pro و Pro Max قابلیتی را باز نمی‌کنند — آن‌ها سقف کاربران AAA، کارت‌های hotspot و روترها را افزایش می‌دهند. به Licensing & tiers مراجعه کنید.

یک مشترک نمی‌تواند احراز هویت شود — از کجا شروع کنم؟

بررسی کنید که shared secret مربوط به RADIUS روتر دقیقاً با رکورد NAS مطابقت دارد، که روتر برای PPP / Hotspot RADIUS فعال است، و اینکه حساب مشترک فعال (Active) و منقضی‌نشده است. journalctl -u samm-api -f و لاگ FreeRADIUS را زیر نظر بگیرید و تأیید کنید که روتر می‌تواند میزبان SAMM را روی UDP 1812/1813 دریافت کند.

به کمک بیشتری نیاز دارید؟

برای گزارش یک اشکال یا درخواست یک قابلیت به [email protected] ایمیل بزنید.