پیکربندی
تنظیمات پنل PasarGuard با متغیرهای محیطی
یه نگاه کلی به پیکربندی
پنل PasarGuard از طریق متغیرهای محیطی که توی فایل .env در مسیر /opt/pasarguard/.env ذخیره شدن، تنظیم میشه.
متغیرهای محیطی
تنظیمات ادمین
| متغیر | نوع | پیشفرض | توضیحات |
|---|---|---|---|
SUDO_USERNAME | string | - | نام کاربری ادمین اصلی برای حساب کاربری اولیه |
SUDO_PASSWORD | string | - | رمز عبور ادمین اصلی برای حساب کاربری اولیه |
SUDO_USERNAME و SUDO_PASSWORD فقط وقتی کار میکنند که حالت DEBUG فعال باشد. برای محیط production، حساب مالک را از فرم راهاندازی داشبورد و با دستور pasarguard cli generate-temp-key بسازید.
تنظیمات دیتابیس
| متغیر | نوع | پیشفرض | توضیحات |
|---|---|---|---|
SQLALCHEMY_DATABASE_URL | string | - | رشته اتصال به دیتابیس (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_HOST | string | 0.0.0.0 | آدرس هاستی که وب سرور بهش وصل میشه |
UVICORN_PORT | int | 8000 | شماره پورت برای وب سرور |
UVICORN_UDS | string | - | مسیر Unix socket؛ اگر تنظیم شود، Uvicorn به جای host/port به socket وصل میشود |
UVICORN_SSL_CERTFILE | string | - | مسیر فایل گواهینامه SSL |
UVICORN_SSL_KEYFILE | string | - | مسیر فایل کلید خصوصی SSL |
UVICORN_SSL_CA_TYPE | string | public | نوع مرجع گواهی برای اعتبارسنجی SSL |
UVICORN_WORKERS | int | 1 | تعداد workerهای Uvicorn |
UVICORN_LOOP | string | auto | تنظیم event loop در Uvicorn |
UVICORN_PROXY_HEADERS | bool | false | اعتماد به هدرهای پروکسی مثل IP فوروارد شده کاربر |
UVICORN_FORWARDED_ALLOW_IPS | string/list | 127.0.0.1 | IPهای پروکسی قابل اعتماد برای هدرهای 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_MINUTES | int | 1440 | مدت انقضای توکن JWT به دقیقه (پیشفرض: 24 ساعت) |
مثال:
# توکن بعد از 24 ساعت منقضی میشه
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 1440
# توکن بعد از 7 روز منقضی میشه
JWT_ACCESS_TOKEN_EXPIRE_MINUTES = 10080تنظیمات پنل
| متغیر | نوع | پیشفرض | توضیحات |
|---|---|---|---|
DOCS | bool | false | فعال/غیرفعال کردن صفحه مستندات API |
DEBUG | bool | false | فعال کردن حالت دیباگ برای لاگهای کامل |
ROLE | string | all-in-one | نقش اجرایی: backend، node، scheduler یا all-in-one |
DASHBOARD_PATH | string | /dashboard/ | مسیر URL که داشبورد از آن سرو میشود |
VITE_BASE_API | string | / | آدرس پایه API برای داشبورد |
ALLOWED_ORIGINS | string | * | originهای CORS جداشده با کاما |
مثال:
DOCS = true
DEBUG = falseWireGuard
| متغیر | نوع | پیشفرض | توضیحات |
|---|---|---|---|
WIREGUARD_ENABLED | bool | true | فعال کردن تخصیص IP همتای WireGuard و خروجی اشتراک WireGuard |
WIREGUARD_GLOBAL_POOL | CIDR | 10.0.0.0/8 | محدوده IPv4 برای تخصیص خودکار IP همتای کاربران و اعتبارسنجی IP دستی |
WIREGUARD_RESERVED | CIDR list | 10.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_USAGE | bool | false | غیرفعال کردن ثبت نمونههای مصرف گره |
ENABLE_RECORDING_NODES_STATS | bool | false | فعال کردن ثبت آمار دقیق گرهها؛ فقط برای PostgreSQL/TimescaleDB در دسترس است |
RESET_USER_USAGE_CLEAN_CHART_DATA | bool | false | حذف تاریخچه نمودار کاربر هنگام بازنشانی مصرف |
مثال:
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راهاندازی چند نود
برای تنظیم چندین نود:
-
روی هر سرور، PasarGuard Node رو نصب و تنظیم کنید (نگاه کنید به نصب نود)
-
اعتبارنامههای API نود رو روی هر سرور نود تنظیم کنید
-
نودها رو توی رابط پنل اضافه کنید:
- برید به بخش نودها در داشبورد
- روی "اضافه کردن نود" کلیک کنید
- جزئیات اتصال نود رو وارد کنید (آدرس، پورت، 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