# ============================================================ # turnserver.conf — خادم TURN (coturn) لمكالمات تربز الصوتية # ------------------------------------------------------------ # لماذا TURN أصلاً: STUN وحده يكفي فقط حين يستطيع الطرفان رؤية بعضهما # مباشرة. سائق وزبون كلاهما على بيانات الجوال يقعان غالباً خلف CGNAT # (Symmetric NAT)، فتفشل المسارات المباشرة وتبقى المكالمة صامتة رغم # نجاح الإشارات. TURN يمرّر الصوت عبر الخادم كملاذ أخير. # # المصادقة: use-auth-secret (بيانات مؤقتة عبر HMAC) — لا كلمات مرور # ثابتة في التطبيق. المفتاح السرّي يُمرَّر من docker-compose، ونفسه # يستعمله backend/ride/call/turn_credentials.php لتوليد البيانات. # # ⚠️ بورتات تربز مختلفة عن نسخة سيرو على نفس السيرفر: # سيرو: listening-port=3478 relay 49160–49300 # تربز: listening-port=3479 relay 49301–49400 # ============================================================ listening-port=3479 # TLS (turns:) معطّل افتراضياً عمداً: بلا شهادة صالحة يرفض coturn تشغيل # مستمع TLS ويسجّل خطأ فقط، فيصير عنوان turns: في قائمة ICE مساراً # ميتاً يبطئ التفاوض. لتفعيله: ضع شهادة النطاق وامنح الحاوية قراءتها، # ثم أزل التعليق عن الأسطر الثلاثة، واضبط TURN_TLS_ENABLED=true في .env # كي يُعلنه الباك إند للتطبيق. # tls-listening-port=5350 # cert=/keys/turn/fullchain.pem # pkey=/keys/turn/privkey.pem fingerprint use-auth-secret # static-auth-secret و realm و external-ip تُمرَّر كوسائط من docker-compose # (من .env) حتى لا يُخزَّن السر داخل ملف متعقَّب في Git. # نطاق منافذ التمرير — كل مكالمة تحجز منفذاً أو اثنين. # يجب فتح هذا النطاق UDP على جدار الحماية وإلا فشل التمرير بصمت. # (النطاق 49160–49300 محجوز لنسخة سيرو على السيرفر نفسه) min-port=49301 max-port=49400 # ── تقييد الوجهات ────────────────────────────────────────── # بلا هذا يصير TURN بوابة تصل للشبكة الداخلية: أي مستخدم يملك بيانات # اعتماد صالحة يطلب من السلر فتح مسار إلى 127.0.0.1 أو 172.x فيصل # إلى mysql/redis/الحاويات. نمنع كل النطاقات الخاصة صراحةً. no-multicast-peers denied-peer-ip=0.0.0.0-0.255.255.255 denied-peer-ip=10.0.0.0-10.255.255.255 denied-peer-ip=127.0.0.0-127.255.255.255 denied-peer-ip=169.254.0.0-169.254.255.255 denied-peer-ip=172.16.0.0-172.31.255.255 denied-peer-ip=192.168.0.0-192.168.255.255 denied-peer-ip=100.64.0.0-100.127.255.255 denied-peer-ip=::1 denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff # ── حدود الاستهلاك ───────────────────────────────────────── # TURN يمرّر كل بايت من الصوت، فبلا سقف تصير الفاتورة والنطاق مفتوحين. # مكالمة صوتية Opus ≈ 40 kbps لكل اتجاه — 500 kbps سقف سخيّ جداً للصوت # ويقطع أي وقت يستعمله الخادم كبروكسي فيديو أو تنزيل. user-quota=12 total-quota=1200 max-bps=64000 bps-capacity=0 # ── تشغيل ────────────────────────────────────────────────── no-cli stale-nonce=600 # لا نُسجّل كل مسارات — الأخطاء فقط simple-log