پاسارگارد
پنل

پیکربندی

تنظیمات پنل PasarGuard با متغیرهای محیطی

یه نگاه کلی به پیکربندی

پنل PasarGuard از طریق متغیرهای محیطی که توی فایل .env در مسیر /opt/pasarguard/.env ذخیره شدن، تنظیم میشه.

متغیرهای محیطی

تنظیمات ادمین

متغیرنوعپیش‌فرضتوضیحات
SUDO_USERNAMEstring-نام کاربری ادمین اصلی برای حساب کاربری اولیه
SUDO_PASSWORDstring-رمز عبور ادمین اصلی برای حساب کاربری اولیه

SUDO_USERNAME و SUDO_PASSWORD فقط وقتی کار می‌کنند که حالت DEBUG فعال باشد. برای محیط production، حساب مالک را از فرم راه‌اندازی داشبورد و با دستور pasarguard cli generate-temp-key بسازید.

تنظیمات دیتابیس

متغیرنوعپیش‌فرضتوضیحات
SQLALCHEMY_DATABASE_URLstring-رشته اتصال به دیتابیس (SQLite، MySQL، MariaDB، PostgreSQL، TimescaleDB)

مثال‌های URL دیتابیس:

# TimescaleDB/PostgreSQL (پیش‌فرض)
SQLALCHEMY_DATABASE_URL = "postgresql+asyncpg://user:password@localhost/pasarguard"

# MySQL/MariaDB
SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://user:password@localhost/pasarguard"

# SQLite
SQLALCHEMY_DATABASE_URL = "sqlite+aiosqlite:////var/lib/pasarguard/db.sqlite3"

وب سرور UVICORN

متغیرنوعپیش‌فرضتوضیحات
UVICORN_HOSTstring0.0.0.0آدرس هاستی که وب سرور بهش وصل میشه
UVICORN_PORTint8000شماره پورت برای وب سرور
UVICORN_UDSstring-مسیر Unix socket؛ اگر تنظیم شود، Uvicorn به جای host/port به socket وصل می‌شود
UVICORN_SSL_CERTFILEstring-مسیر فایل گواهینامه SSL
UVICORN_SSL_KEYFILEstring-مسیر فایل کلید خصوصی SSL
UVICORN_SSL_CA_TYPEstringpublicنوع مرجع گواهی برای اعتبارسنجی SSL
UVICORN_WORKERSint1تعداد workerهای Uvicorn
UVICORN_LOOPstringautoتنظیم event loop در Uvicorn
UVICORN_PROXY_HEADERSboolfalseاعتماد به هدرهای پروکسی مثل IP فوروارد شده کاربر
UVICORN_FORWARDED_ALLOW_IPSstring/list127.0.0.1IPهای پروکسی قابل اعتماد برای هدرهای forwarded؛ مقدار * را فقط در شبکه خصوصی قابل اعتماد استفاده کنید

مثال:

UVICORN_HOST = "0.0.0.0"
UVICORN_PORT = 8000
UVICORN_SSL_CERTFILE = "/var/lib/pasarguard/cert.pem"
UVICORN_SSL_KEYFILE = "/var/lib/pasarguard/key.pem"
UVICORN_PROXY_HEADERS = true
UVICORN_FORWARDED_ALLOW_IPS = "127.0.0.1"

UVICORN_PROXY_HEADERS را فقط وقتی فعال کنید که PasarGuard پشت reverse proxy قابل اعتماد است. در شبکه غیرقابل اعتماد از UVICORN_FORWARDED_ALLOW_IPS = "*" استفاده نکنید.

احراز هویت و امنیت

متغیرنوعپیش‌فرضتوضیحات
JWT_ACCESS_TOKEN_EXPIRE_MINUTESint1440مدت انقضای توکن JWT به دقیقه (پیش‌فرض: 24 ساعت)

مثال:

# توکن بعد از 24 ساعت منقضی میشه
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 1440

# توکن بعد از 7 روز منقضی میشه
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 10080

تنظیمات پنل

متغیرنوعپیش‌فرضتوضیحات
DOCSboolfalseفعال/غیرفعال کردن صفحه مستندات API
DEBUGboolfalseفعال کردن حالت دیباگ برای لاگ‌های کامل
ROLEstringall-in-oneنقش اجرایی: backend، node، scheduler یا all-in-one
DASHBOARD_PATHstring/dashboard/مسیر URL که داشبورد از آن سرو می‌شود
VITE_BASE_APIstring/آدرس پایه API برای داشبورد
ALLOWED_ORIGINSstring*originهای CORS جداشده با کاما

مثال:

DOCS = true
DEBUG = false

WireGuard

متغیرنوعپیش‌فرضتوضیحات
WIREGUARD_ENABLEDbooltrueفعال کردن تخصیص IP همتای WireGuard و خروجی اشتراک WireGuard
WIREGUARD_GLOBAL_POOLCIDR10.0.0.0/8محدوده IPv4 برای تخصیص خودکار IP همتای کاربران و اعتبارسنجی IP دستی
WIREGUARD_RESERVEDCIDR list10.0.0.0/31محدوده‌های IPv4 جداشده با کاما که هرگز نباید تخصیص داده شوند

مثال:

WIREGUARD_ENABLED = false
WIREGUARD_GLOBAL_POOL = "10.66.0.0/16"
WIREGUARD_RESERVED = "10.66.0.0/31,10.66.0.10/32"

وقتی WIREGUARD_ENABLED = false باشد، خروجی اشتراک WireGuard ساخته نمی‌شود و تخصیص خودکار IP همتا غیرفعال است.

ثبت مصرف

متغیرنوعپیش‌فرضتوضیحات
DISABLE_RECORDING_NODE_USAGEboolfalseغیرفعال کردن ثبت نمونه‌های مصرف گره
ENABLE_RECORDING_NODES_STATSboolfalseفعال کردن ثبت آمار دقیق گره‌ها؛ فقط برای PostgreSQL/TimescaleDB در دسترس است
RESET_USER_USAGE_CLEAN_CHART_DATAboolfalseحذف تاریخچه نمودار کاربر هنگام بازنشانی مصرف

مثال:

DISABLE_RECORDING_NODE_USAGE = false
ENABLE_RECORDING_NODES_STATS = true
RESET_USER_USAGE_CLEAN_CHART_DATA = false

مثال کامل از پیکربندی

تنظیمات برای محیط واقعی (Production)

# دیتابیس (TimescaleDB توصیه میشه)
SQLALCHEMY_DATABASE_URL = "postgresql+asyncpg://pasarguard:password@localhost/pasarguard"

# وب سرور
UVICORN_HOST = "0.0.0.0"
UVICORN_PORT = 8000
UVICORN_SSL_CERTFILE = "/var/lib/pasarguard/cert.pem"
UVICORN_SSL_KEYFILE = "/var/lib/pasarguard/key.pem"
UVICORN_PROXY_HEADERS = true
UVICORN_FORWARDED_ALLOW_IPS = "127.0.0.1"

# امنیت
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 1440

# تنظیمات پنل
DOCS = false
DEBUG = false

# WireGuard
WIREGUARD_ENABLED = true
WIREGUARD_GLOBAL_POOL = "10.0.0.0/8"
WIREGUARD_RESERVED = "10.0.0.0/31"

تنظیمات برای محیط توسعه/تست

# تنظیمات ادمین
SUDO_USERNAME = "admin"
SUDO_PASSWORD = "admin123"

# دیتابیس (SQLite برای تست)
SQLALCHEMY_DATABASE_URL = "sqlite+aiosqlite:////var/lib/pasarguard/db.sqlite3"

# وب سرور
UVICORN_HOST = "127.0.0.1"
UVICORN_PORT = 8000

# امنیت
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 1440

# تنظیمات پنل
DOCS = true
DEBUG = true

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

مشاهده تنظیمات فعلی

cat /opt/pasarguard/.env

ویرایش تنظیمات

sudo nano /opt/pasarguard/.env

اعمال تغییرات

بعد از تغییر تنظیمات، پنل رو ری‌استارت کنید:

pasarguard restart

بررسی تنظیمات

چک کنید که سرویس درست کار میکنه:

pasarguard status

لاگ‌ها رو ببینید اگه مشکلی هست:

pasarguard logs

راه‌اندازی چند نود

برای تنظیم چندین نود:

  1. روی هر سرور، PasarGuard Node رو نصب و تنظیم کنید (نگاه کنید به نصب نود)

  2. اعتبارنامه‌های API نود رو روی هر سرور نود تنظیم کنید

  3. نودها رو توی رابط پنل اضافه کنید:

    • برید به بخش نودها در داشبورد
    • روی "اضافه کردن نود" کلیک کنید
    • جزئیات اتصال نود رو وارد کنید (آدرس، پورت، API key و...)
    • اتصال رو چک کنید

نکات امنیتی

محافظت از اطلاعات دیتابیس

از رمزهای عبور قوی برای اتصال به دیتابیس استفاده کنید:

# ساخت رمز عبور امن
openssl rand -base64 32

استفاده از گواهینامه SSL

همیشه توی محیط واقعی از گواهینامه‌های SSL معتبر استفاده کنید:

# استفاده از Let's Encrypt
sudo certbot certonly --standalone -d your-domain.com

# آپدیت .env
UVICORN_SSL_CERTFILE = "/etc/letsencrypt/live/your-domain.com/fullchain.pem"
UVICORN_SSL_KEYFILE = "/etc/letsencrypt/live/your-domain.com/privkey.pem"

غیرفعال کردن حالت دیباگ در محیط واقعی

DEBUG = false
DOCS = false