2026-07-23 — إصلاح الترسانة المحلية (Local Image) + دمج VPN in launcher
المشكلة
البوت المحلي (
openclaw-local على Docker Desktop باللابتوب GPD، WSL kali-linux) صار
بطيء ثم ينقطع تماماً. كان يعمل بأداء عالي حتى البارحة.
التشخيص (بالدليل القاطع — صفر تخمين)
- الموديلات السحابية (Anthropic) ترد بسرعة (status=200 elapsedMs~3000) → الإنترنت سليم.
- تيليجرام يفشل:
UND_ERR_CONNECT_TIMEOUT + sendMessage failed + رسالة أخذت 118 ثانية.
- الاختبار الفاصل (curl من ويندوز مباشرة):
-
direct (بلا proxy):
HTTP 000 time=15s ← تيليجرام محجوب كلياً من الشبكة المحلية
-
nord amsterdam.nl.socks.nordhold.net:1080:
HTTP 302 in 1.6s ← يعمل ✅
-
nord us.socks.nordhold.net:1080:
HTTP 302 in 2.0s ← يعمل ✅
- الخلاصة: تيليجرام محجوب/مخنوق من شبكة الكويت المحلية (بدأ اليوم). المفاتيح كلها سليمة
(لا تخريب). Anthropic يعمل، تيليجرام فقط محجوب.
قضية Google 401 (ثانوية — لم تُصلح، غير مهمة)
اللوق أظهر
provider=google model=gemini-3.1-pro-preview url=https://api.openai.com/v1/responses 401.
مفتاح Google (AIzaSy...) سليم لكن يُرسل عبر طبقة توافق openai-responses بدون baseURL صحيح.
لكنه مجرد fallback لتفريغ الصوت (STT)، وElevenLabs Scribe v2 يغطيه → أُجّل.
⚠️ تصحيح حاسم (SOCKS5 تجريبي فشل) — الحل النهائي = gost HTTP proxy
اللوق أثبت: node undici SOCKS5 support =
experimental ولا يمرّر تيليجرام فعلاً من
داخل الحاوية (يقبل الإعداد، لكن كل طلبات تيليجرام تبقى CONNECT_TIMEOUT، بلا
proxy= في اللوق).
الحل الشغّال المثبت (sendMessage ok في اللوق):
- حاوية
nord-http-proxy (image gogost/gost, --restart unless-stopped) على شبكة
البوت
openclaw-4x4t_default، تحوّل Nord SOCKS5 → HTTP proxy على :8118.
- البوت:
channels.telegram.proxy = "http://nord-http-proxy:8118" (undici HTTP proxy = مستقر، غير تجريبي).
- أمر gost:
docker run -d --name nord-http-proxy --restart unless-stopped --network openclaw-4x4t_default gogost/gost -L http://:8118 -F "socks5://<user>:<pwd>@amsterdam.nl.socks.nordhold.net:1080"
الحل (مركّب + مُفعّل + مختبَر) — النسخة النهائية = arsenal.sh v13
OpenClaw 2026.7.1-2 يقبل
channels.telegram.proxy (socks5 تجريبي / http مستقر).
نستخدم http عبر gost.Nord SOCKS5 (نفس بيانات السيرفر، env.sh)
socks5://<NORD_SOCKS_USER>:<NORD_SOCKS_PWD>@amsterdam.nl.socks.nordhold.net:1080
(البيانات في env.sh: NORD_SOCKS_USER / NORD_SOCKS_PWD — أُضيفت 2026-07-11 لفكّ حجب grok-4.5)
Arsenal Launcher v11 (كان v10)
- الموقع:
~/arsenal-launcher/arsenal.sh داخل kali-linux (يشغّله ARSENAL.bat عبر wsl -d kali-linux)
- root:
~/restore2/docker — compose: docker-compose.local.yml
- v13 (النهائي المركّب على اللابتوب 2026-07-23 19:03، SYNTAX OK) — بنيت على v10 الأصلي:
1. خيارات القائمة
[V] VPN ON +
[W] VPN OFF + CLI:
vpn-on/
vpn-off/
vpn-status
2. دوال vpn_on/vpn_off/vpn_status +
vpn_proxy_up (تشغّل gost تلقائياً)، backup .vpnbak
3.
vpn_autostart: يشغّل gost تلقائياً مع البوت (start_arsenal/n8n/whole) لو الـ proxy مفعّل (يبقى بعد Stop all→Start)
4.
strip_whatsapp_local: بعد كل [6] Update يحذف
channels.whatsapp من الـ Local
(فُحص حياً: صورة R2 فيها whatsapp enabled=True → كان خطر تعارض حقيقي، أُصلح)
5.
PROTECT_KEYS محصّن: botToken + allowFrom +
proxy + accounts.default.
→ التحديث لا يمسح VPN/البوت
- نسخ محفوظة: workspace
projects/local-vpn-launcher/arsenal_v11.sh (=v13 محتوى) + zip. اللابتوب: ~/arsenal-launcher/arsenal_v12_backup.sh + .v
.bak.*
الحل نهائي: gost HTTP proxy (SOCKS5 المباشر مهجور — تجريبي فاشل).
الخيار [6] Update from R2 — كيف يحمي الثوابت (v10 كان محترفاً أصلاً)
capture_overlay (قبل) →
restic restore diffs →
apply_overlay (بعد، يعيد حقن المحفوظات) + rollback تلقائي.
PROTECT_KEYS (v11): botToken · allowFrom ·
proxy · accounts.default.{botToken,allowFrom,proxy}.
يحفظ أيضاً: docker-compose.override.yml (Local Portal ports) + .env.local.
🔒 ثوابت الـ Local التي لا تُمَس عند التحديث (قرار د. وائل الصريح 2026-07-23)
1.
channels.telegram — البوت المحلي كامل + الـ proxy/VPN (منفصل عن بوت الترسانة الأصلية)
2.
channels.whatsapp — غير موجود أصلاً، ويبقى كذلك (سبّب مشاكل سابقاً)
3. Local Portal page (
Arsenal-Local-Portal.html + docker-compose.override.yml) — منفصلة عن Portal الأصلية
4. إعداد الـ VPN الجديد
5. أي ثابت يخص استقرار/كفاءة الـ Local config
ما يُحدّث فقط: skills · plugins · models · fallback chain · context injection · tools · libraries · capabilities.
دروس تقنية دائمة
- kali minimal: لا
unzip ولا wget — استخدم python3 -c "import zipfile..." + node fetch.
- PowerShell يكره:
$?, | داخل -Pattern, sed, أقواس معقّدة → استخدم ملف .sh داخل الحاوية أو أوامر مباشرة بلا glob.
- تسليم ملفات .sh عبر تيليجرام مرفوض (allowlist) → غلّفه zip.
docker cp للـ config ثم node/python للتعديل = أنظف من sed للـ JSON.
- الأسطر الحمراء في PowerShell بعد
wsl ... bash = PowerShell ينفّذ الـ stdout المطبوع كأوامر — حميدة، تُتجاهل.