متغیرهای محیطی
فایل .env توسط کانتینر پنل خوانده میشود. متغیرهای الزامی با نشان
الزامی مشخص شدهاند. مقادیر پیشفرض — همانهایی هستند که کد جایگذاری میکند.
برنامه
| متغیر | پیشفرض | توضیحات |
|---|---|---|
APP_PORT | 3000 | پورت HTTP API و رابط وب |
METRICS_PORT | 3001 | پورت متریکهای Prometheus |
API_INSTANCES | 1 | تعداد ورکرهای API. max — برابر تعداد هستهها، -1 — تعداد هستهها منهای یک. بیشتر از تعداد هستههای فیزیکی تنظیم نکنید |
IS_HTTP_LOGGING_ENABLED | false | ثبت لاگ درخواستهای HTTP. بدنه درخواستها هرگز نوشته نمیشود |
ENABLE_DEBUG_LOGS | false | لاگهای تفصیلی برنامه |
REMNAWAVE_BRANCH | dev | شاخهای که برنامه در اندپوینتهای سرویسدهی اعلام میکند |
پایگاه داده و کش
| متغیر | پیشفرض | توضیحات |
|---|---|---|
DATABASE_URL الزامی | — | رشته اتصال، مثلاً postgresql://xpanel:pass@xpanel-db:5432/xpanel?schema=public |
POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB | — | فقط توسط کانتینر PostgreSQL استفاده میشوند؛ خود برنامه آنها را نمیخواند |
REDIS_SOCKET | — | مسیر unix-socket مربوط به Valkey/Redis (جایگزین هاست و پورت) |
REDIS_HOST / REDIS_PORT | — / 6379 | آدرس Valkey/Redis |
REDIS_USERNAME / REDIS_PASSWORD | — | اگر احراز هویت فعال باشد |
REDIS_DB | 0 | شماره پایگاه داده |
اسرار و دامنهها
| متغیر | پیشفرض | توضیحات |
|---|---|---|
APP_SECRET الزامی | — | 64 کاراکتر. هش رمزهای عبور، JWT، رمزنگاری TOTP. پس از راهاندازی قابل تغییر نیست |
JWT_AUTH_LIFETIME الزامی | — | مدت اعتبار access-توکن به ساعت، مجاز از 12 تا 168 |
PANEL_DOMAIN الزامی | — | آدرس عمومی پنل، همراه با https:// |
FRONT_END_DOMAIN | * | مبدأیی که درخواستهای CORS برای آن مجاز است |
SUB_PUBLIC_DOMAIN الزامی | — | دامنه اشتراک بدون https:// و بدون اسلش در انتها؛ در profile-web-page-url قرار میگیرد |
متریکها
| متغیر | توضیحات |
|---|---|
METRICS_USER الزامی | نام کاربری basic auth برای http://127.0.0.1:3001/metrics |
METRICS_PASS الزامی | رمز عبور basic auth |
بدون METRICS_USER و METRICS_PASS کانتینر بالا نمیآید.
Telegram
| متغیر | پیشفرض | توضیحات |
|---|---|---|
IS_TELEGRAM_NOTIFICATIONS_ENABLED | false | اعلانهای Telegram را فعال میکند |
TELEGRAM_BOT_TOKEN | — | توکن ربات |
TELEGRAM_BOT_API_ROOT | https://api.telegram.org | آدرس Bot API؛ اگر از Bot API server محلی استفاده میکنید تغییر دهید |
TELEGRAM_BOT_PROXY | — | پروکسی برای درخواستها به Telegram، مثلاً socks5://proxy:1080 |
TELEGRAM_NOTIFY_USERS | — | چتها برای رویدادهای کاربران |
TELEGRAM_NOTIFY_NODES | — | چتها برای رویدادهای نودها |
TELEGRAM_NOTIFY_CRM | — | چتها برای رویدادهای CRM |
TELEGRAM_NOTIFY_SERVICE | — | اعلانهای سرویسدهی |
TELEGRAM_NOTIFY_TBLOCKER | — | رویدادهای torrent-blocker |
قالب چتها: chat_id یا chat_id:thread_id برای تاپیکها. چند مقدار —
با کاما جدا میشوند.
وبهوکها
| متغیر | پیشفرض | توضیحات |
|---|---|---|
WEBHOOK_ENABLED | false | ارسال وبهوکها را فعال میکند |
WEBHOOK_URL | — | آدرس گیرنده؛ چند آدرس — با کاما جدا میشوند. فقط http:// و https:// مجاز هستند |
WEBHOOK_SECRET_HEADER | — | راز امضای payload، دقیقاً 64 کاراکتر [a-zA-Z0-9] |
جزئیات بیشتر — در بخش وبهوکها.
اعلانهای آستانه
| متغیر | پیشفرض | توضیحات |
|---|---|---|
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED | false | اطلاعرسانی درباره رسیدن به آستانه ترافیک |
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD | [60, 80] | آستانهها بر حسب درصد، صعودی، از 25 تا 95، حداکثر 5 مقدار |
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED | false | اطلاعرسانی درباره کاربرانی که هرگز متصل نشدند |
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS | [6, 24, 48] | ساعت پس از ساخت کاربر، از 1 تا 168، حداکثر 3 مقدار |
EXPIRATION_NOTIFICATIONS_ENABLED | false | اطلاعرسانی درباره انقضای اشتراک |
EXPIRATION_NOTIFICATIONS | [-72, -48, -24, 24] | ساعت نسبت به expireAt: مقادیر منفی — پیش از انقضا، مقادیر مثبت — پس از آن. از −168 تا 168، صفر مجاز نیست |
حریم خصوصی و retention
پاکسازی خودکار بهطور پیشفرض خاموش است. یک job هفتگی همه
جدولها را پوشش میدهد: اگر حداقل یکی از کلیدهای
SERVICE_CLEAN_USAGE_HISTORY یا SERVICE_CLEAN_OLD_LOGS فعال باشد، اجرا میشود.
| متغیر | پیشفرض | توضیحات |
|---|---|---|
SERVICE_CLEAN_USAGE_HISTORY | false | پاکسازی تاریخ ترافیک را فعال میکند |
USAGE_HISTORY_RETENTION_DAYS | 14 | چند روز nodes_user_usage_history نگه داشته شود |
SERVICE_CLEAN_OLD_LOGS | false | پاکسازی دادههای شخصی و آمار نودها را فعال میکند |
NODES_USAGE_HISTORY_RETENTION_DAYS | 90 | آمار ساعتی نودها |
HWID_DEVICES_RETENTION_DAYS | 90 | دستگاههای کاربران (hwid_user_devices)؛ شمارش از آخرین ظهور دستگاه |
SUBSCRIPTION_REQUEST_HISTORY_RETENTION_DAYS | 30 | تاریخ درخواستهای اشتراک |
AUDIT_LOG_RETENTION_DAYS | 30 | گزارش اقدامات مدیران |
SERVICE_DISABLE_USER_USAGE_RECORDS | false | بهکلی تاریخ ترافیک ثبت نشود |
SERVICE_DISABLE_SRH_RECORDS | false | بهکلی تاریخ درخواستهای اشتراک ثبت نشود |
USER_USAGE_IGNORE_BELOW_BYTES | 0 | جهشهای ترافیک کمتر از تعداد بایت مشخصشده ثبت نشوند |
اگر تاریخ ترافیک و درخواستهای اشتراک را لازم ندارید، مطمئنتر آن است که بهجای
پاکسازی بعدی، آنها را جمعآوری نکنید: SERVICE_DISABLE_USER_USAGE_RECORDS=true و
SERVICE_DISABLE_SRH_RECORDS=true.
شناسههای کوتاه اشتراک
| متغیر | پیشفرض | توضیحات |
|---|---|---|
SHORT_UUID_METHOD | nanoid | nanoid — رشته تصادفی، uuid — UUID v4، custom — قالب اختصاصی |
SHORT_UUID_LENGTH | 16 | طول برای روش nanoid، از 16 تا 64 |
SHORT_UUID_CUSTOM_PATTERN | — | قالب برای روش custom. توکنها: {nanoid:N}, {alpha:N}, {digits:N}, {hex:N}, {uuid} |
مثال: SHORT_UUID_CUSTOM_PATTERN={hex:16}-{hex:16}-{digits:10}. قالب باید
از 16 تا 64 کاراکتر و حداقل حدود 64 بیت تصادفی تولید کند.
خروجی به Redis Streams
| متغیر | پیشفرض | توضیحات |
|---|---|---|
EXPORT_TO_STREAM_ENABLED | false | انتشار رویدادهای پنل در Redis Streams |
EXPORT_TO_STREAM_MAXLEN | 3000 | محدودیت تقریبی پیامها در stream (MAXLEN ~) |
streamها: ioraw:export:user_usage (دلتاهای ترافیک)، ioraw:export:subscription_requests
(درخواستهای اشتراک)، ioraw:export:node_connections (عکسهای لحظهای اتصالها، retention یک ساعت).
مناسب برای خروجی گرفتن به ClickHouse یا Vector.