إنتقل إلى المحتوى الرئيسي

متغيرات البيئة

warning

لتغيير متغيرات البيئة، يجب إعادة إنشاء حاويات Remnawave.
إعادة تشغيل الحاويات فقط لا تستبدل البيئة داخل الحاوية!

لإعادة إنشاء الحاوية باستخدام docker compose، شغّل docker compose down && docker compose up -d.

تغيير متغيرات البيئة

يمكنك تغيير متغيرات البيئة بتعديل ملف .env. على الأرجح يقع في /opt/remnawave.

تعديل ملف .env
cd /opt/remnawave && nano .env

المنافذ

المتغيرالوصفالافتراضي
APP_PORTالمنفذ الذي تعمل عليه لوحة Remnawave3000
METRICS_PORTالمنفذ الذي تعمل عليه نقاط Metrics3001
مثال
ملف .env
APP_PORT=3000
METRICS_PORT=3001

توسيع نطاق API

عدد نسخ API التي سيتم تشغيلها.

القيم المتاحة:

  • max (بدء نسخ على جميع الأنوية)
  • <number> (بدء نسخ على عدد محدد من الأنوية)
  • -1 (بدء نسخ على جميع الأنوية - 1)

اتركه على القيمة الافتراضية لبدء نسخة واحدة فقط.

معظم المستخدمين لن يحتاجوا إلى تغيير هذه القيمة، لكنها يمكن أن تساعد في تحقيق أداء أفضل مع أكثر من 40,000 مستخدم.

warning

لا تضبط هذه القيمة على رقم أكبر من عدد أنوية CPU في جهازك.

المتغيرالوصفالافتراضي
API_INSTANCESعدد نسخ API التي سيتم تشغيلها1
مثال
ملف .env
API_INSTANCES=1

Redis

المتغيرالوصفالافتراضيمطلوب
REDIS_HOSTمضيف خادم Redisremnawave-redisنعم
REDIS_PORTمنفذ خادم Redis6379نعم
REDIS_DBقاعدة بيانات خادم Redis0لا
REDIS_PASSWORDكلمة مرور خادم Redisلا
REDIS_SOCKETsocket خادم Redisلا
مثال
ملف .env
REDIS_HOST=remnawave-redis
REDIS_PORT=6379

قاعدة البيانات

المتغيرات أدناه لا يستخدمها Remnawave، بل حاوية قاعدة البيانات.

المتغيرالوصفالافتراضيمطلوب
POSTGRES_USERاسم مستخدم خادم Postgrespostgresلا
POSTGRES_PASSWORDكلمة مرور خادم Postgrespostgresلا
POSTGRES_DBقاعدة بيانات خادم Postgrespostgresلا

يستخدم Remnawave عنوان URL لـ PostgreSQL للاتصال بقاعدة البيانات.

postgresql://{user}:{password}@{host}:{port}/{database}
مثال DATABASE_URL
DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"
مثال
ملف .env
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres

DATABASE_URL="postgresql://postgres:postgres@remnawave-db:5432/postgres"

المفاتيح السرية

يُنصح باستخدام مولّد سلاسل عشوائية لإنشاء أسرار بطول لا يقل عن 64 حرفاً.

خطر

لا تستخدم بيانات الاعتماد الافتراضية في بيئة الإنتاج. تأكد من إنشاء أسرار قوية!

توليد الأسرار
openssl rand -hex 64
المتغيرالوصفالافتراضيمطلوب
JWT_AUTH_SECRETالمفتاح السري لـ JWT المصادقةchange_meنعم
JWT_API_TOKENS_SECRETالمفتاح السري لـ JWT رموز APIchange_meنعم
مثال
ملف .env
JWT_AUTH_SECRET=strong_secret_key
JWT_API_TOKENS_SECRET=strong_secret_key

إشعارات Telegram

يستخدم كل متغير إشعارات التنسيق الموحّد: chat_id:thread_id، حيث thread_id اختياري.

المتغيرالوصفالافتراضيالقيم المتاحة
IS_TELEGRAM_NOTIFICATIONS_ENABLEDتعطيل/تمكين إشعارات Telegramfalsetrue، false
TELEGRAM_BOT_TOKENرمز بوت Telegram
TELEGRAM_BOT_API_ROOTعنوان URL جذر API بوت Telegram المخصص (اختياري)https://api.telegram.org
TELEGRAM_BOT_PROXYبروكسي لبوت Telegram (اختياري)protocol://user:password@host:port
TELEGRAM_NOTIFY_USERSإشعارات عن أحداث المستخدمينchat_id أو chat_id:thread_id
TELEGRAM_NOTIFY_NODESإشعارات عن أحداث العقدchat_id أو chat_id:thread_id
TELEGRAM_NOTIFY_CRMإشعارات عن أحداث CRMchat_id أو chat_id:thread_id
TELEGRAM_NOTIFY_SERVICEإشعارات عن أحداث الخدمةchat_id أو chat_id:thread_id
TELEGRAM_NOTIFY_TBLOCKERإشعارات عن أحداث Torrent Blockerchat_id أو chat_id:thread_id
ملاحظة

معرّف دردشة مجموعة Telegram يبدأ دائماً بـ -100.

مثال
ملف .env

# تعطيل/تمكين إشعارات Telegram
IS_TELEGRAM_NOTIFICATIONS_ENABLED=false

# رمز بوت Telegram
TELEGRAM_BOT_TOKEN=change_me

# اختياري: بروكسي لبوت Telegram
# TELEGRAM_BOT_PROXY=socks5://user:password@host:port

# الإشعارات (التنسيق: chat_id أو chat_id:thread_id)
TELEGRAM_NOTIFY_USERS=change_me
TELEGRAM_NOTIFY_NODES=change_me
TELEGRAM_NOTIFY_CRM=change_me
TELEGRAM_NOTIFY_SERVICE=change_me
TELEGRAM_NOTIFY_TBLOCKER=change_me

النطاقات

المتغيرالوصفالافتراضيمطلوب
FRONT_END_DOMAINنطاق لوحة Remnawave. يُستخدم لضبط رؤوس CORS.*نعم
المتغيرالوصفالافتراضيمطلوب
SUB_PUBLIC_DOMAINالنطاق والمسار لعنوان URL الاشتراك العامexample.com/api/subنعم
المتغيرالوصفالافتراضيمطلوب
PANEL_DOMAINنطاق اللوحة لإنشاء روابط مباشرة (مثلاً في إشعارات Telegram مع أزرار inline)لا

يُستخدم SUB_PUBLIC_DOMAIN لضبط عنوان URL الاشتراك العام في استجابات RestAPI/واجهة المستخدم في لوحة التحكم.

تلميح

إذا كنت تستخدمه مع اللوحة، فقط اضبطه على yourpanel.com/api/sub

مثال
ملف .env
FRONT_END_DOMAIN=yourpanel.com
SUB_PUBLIC_DOMAIN=yourpanel.com/api/sub
PANEL_DOMAIN=yourpanel.com

التوثيق

المتغيرالوصفالافتراضيالقيم المتاحة
IS_DOCS_ENABLEDتعطيل/تمكين التوثيقfalsetrue، false

يُستخدم IS_DOCS_ENABLED لتعطيل/تمكين التوثيق.

تلميح

يمكنك استخدام صفحة API Keys في لوحة تحكم المسؤول (عندما يكون IS_DOCS_ENABLED مضبوطاً على true) للحصول على رابط سريع للتوثيق.

المتغيرالوصفالافتراضي
SWAGGER_PATHالمسار إلى واجهة Swagger/docs
SCALAR_PATHالمسار إلى واجهة Scalar/scalar
مثال
ملف .env
IS_DOCS_ENABLED=true
SWAGGER_PATH=/docs
SCALAR_PATH=/scalar

مقاييس Prometheus

تلميح

يمكنك إنشاء كلمة مرور عشوائية لمقاييس metrics باستخدام الأمر التالي:

openssl rand -hex 64
المتغيرالوصفالافتراضي
METRICS_USERالمستخدم للمقاييسadmin
METRICS_PASSكلمة المرور للمقاييسchange_me
مثال
ملف .env
METRICS_USER=admin
METRICS_PASS=change_me

مثال على إعداد Prometheus:

prometheus.yml
global:
# scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s
scrape_configs:
- job_name: 'remnawave'
scheme: http
metrics_path: /metrics
static_configs:
- targets: ['remnawave:3001']
scrape_interval: 30s
basic_auth:
username: admin
password: change_me

يمكنك استخدام لوحة Grafana الجاهزة لتصور المقاييس المجمّعة: Remnawave Panel Dashboard

عيّنة مقاييس Prometheus
# HELP remnawave_node_online_users Number of online users on a node
# TYPE remnawave_node_online_users gauge
remnawave_node_online_users{node_uuid="d86d8c63-944c-4398-9cf4-c3882a54a5d5",app="remnawave"} 0
remnawave_node_online_users{node_uuid="966e6378-ec47-4998-939e-123d9616b1dd",app="remnawave"} 0
remnawave_node_online_users{node_uuid="ed1727fd-5cdc-4ebb-8a24-71823714f6ad",app="remnawave"} 0
remnawave_node_online_users{node_uuid="e31adcc0-5edb-463f-ba2e-9f3cb5ac69cf",app="remnawave"} 0

Webhook

المتغيرالوصفالافتراضيالقيم المتاحة
WEBHOOK_ENABLEDتمكين/تعطيل إشعارات webhookfalsetrue، false
WEBHOOK_URLعنوان URL للـ webhook، يمكن أن يكون http:// أو https://
WEBHOOK_SECRET_HEADERمفتاح التوقيع، 32 حرفاً على الأقل. السماح فقط بـ a-z, 0-9, A-Z.
تلميح

يمكنك إنشاء كلمة مرور عشوائية لسر webhook باستخدام الأمر التالي:

openssl rand -hex 64
مثال
ملف .env
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://your-server.com/webhook-path
WEBHOOK_SECRET_HEADER=strong_secret_key

إشعارات استخدام النطاق الترددي

المتغيرالوصفالافتراضيالقيم المتاحة
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLEDتمكين/تعطيل إشعارات استخدام النطاق التردديfalsetrue، false
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLDعتبة إشعارات استخدام النطاق الترددي. بترتيب تصاعدي فقط (مثال: [60, 80])، يجب أن يكون مصفوفة صحيحة من الأعداد الصحيحة (min: 25, max: 95). لا أكثر من 5 قيم.
مثال
ملف .env
BANDWIDTH_USAGE_NOTIFICATIONS_ENABLED=true
BANDWIDTH_USAGE_NOTIFICATIONS_THRESHOLD=[60, 80]

إشعارات المستخدمين غير المتصلين

المتغيرالوصفالافتراضيالقيم المتاحة
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLEDتمكين/تعطيل إشعارات المستخدمين غير المتصلينfalsetrue، false
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURSالساعات التي بعدها يتم إرسال إشعارات للمستخدمين الذين لم يتصلوا. بترتيب تصاعدي فقط (مثال: [6, 12, 24])، يجب أن يكون مصفوفة صحيحة من الأعداد الصحيحة (min: 1, max: 168). لا أكثر من 3 قيم.
مثال
ملف .env
### إشعارات المستخدمين غير المتصلين (webhook, telegram)
NOT_CONNECTED_USERS_NOTIFICATIONS_ENABLED=false
# بترتيب تصاعدي فقط (مثال: [6, 12, 24])، يجب أن يكون مصفوفة صحيحة من الأعداد الصحيحة (min: 1, max: 168). لا أكثر من 3 قيم.
# كل قيمة تمثّل الساعات المنقضية بعد إنشاء المستخدم (user.createdAt)
NOT_CONNECTED_USERS_NOTIFICATIONS_AFTER_HOURS=[6, 24, 48]

متنوع

المتغيرالوصفالافتراضيالقيم المتاحة
SHORT_UUID_LENGTHطول UUID القصير المُولَّد (الاشتراك). الحد الأدنى 16 والحد الأقصى 6416
IS_HTTP_LOGGING_ENABLEDتمكين/تعطيل تسجيل HTTPfalsetrue، false
ENABLE_DEBUG_LOGSتمكين/تعطيل سجلات التصحيحfalsetrue، false
JWT_AUTH_LIFETIMEمدة صلاحية JWT المصادقة بالساعات. القيم الممكنة من 12 إلى 168.12
SERVICE_CLEAN_USAGE_HISTORYتمكين/تعطيل تنظيف سجل الاستخدامfalsetrue، false
SERVICE_DISABLE_USER_USAGE_RECORDSتعطيل تسجيل بيانات استخدام المستخدمfalsetrue، false
USER_USAGE_IGNORE_BELOW_BYTESتجاهل استخدام المستخدم تحت هذا الحد (بالبايت، الحد الأقصى 1048576)0
مثال
ملف .env
SHORT_UUID_LENGTH=16
IS_HTTP_LOGGING_ENABLED=true
ENABLE_DEBUG_LOGS=false
JWT_AUTH_LIFETIME=12
SERVICE_CLEAN_USAGE_HISTORY=false
SERVICE_DISABLE_USER_USAGE_RECORDS=false
USER_USAGE_IGNORE_BELOW_BYTES=0