[{"data":1,"prerenderedAt":151},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-unleash-على-vps-feature-flags-مفتوحة-المصدر-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-استضافة-unleash-على-vps-feature-flags-مفتوحة-المصدر-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":56,"ctaBody":88,"ctaButton":89,"ctaUrl":90,"relatedPosts":91},380,"استضافة-unleash-على-vps-feature-flags-مفتوحة-المصدر",{"fr":12,"en":13,"ar":10,"es":14},"self-host-unleash-vps","self-host-unleash-feature-flags-vps","autoalojar-unleash-en-vps-feature-flags-open-source","نشر Unleash على VPS: feature flags مفتوحة المصدر","نشر Unleash على VPS ServOrbit: منصة feature flags مفتوحة المصدر (Apache-2.0) لطرح تدريجي وآمن دون إعادة نشر تطبيقك.",7,0,false,"2026-09-28T00:00:00+00:00","2026-09-29T14:40:42+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-unleash-vps-poster.svg",{"categorySlug":33,"appSlug":34},"التطوير","unleash","Unleash منصة مفتوحة المصدر (Apache-2.0) لإدارة الميزات تفصل بين إطلاق الكود وتفعيل الميزة للمستخدمين. بتبديل واحد في الواجهة، تفعّل ميزة لـ10 % من المستخدمين، أو تستهدف شريحة محددة، أو تطفئ إصداراً فاشلاً في ثوانٍ — دون hotfix أو rollback. على VPS ServOrbit، حاويتا Docker فقط — تطبيق Node.js وPostgreSQL 17 — تشكّلان البنية التحتية الكاملة بأقل من 256 ميغابايت RAM.",[37,41,51,54,76,79,82,85],{"type":38,"title":39,"body":40},"h2","لماذا تحتاج لمنصة feature flags","النشر المستمر يفترض فصلاً بين نشر الكود وتفعيل الميزة للمستخدمين. بدون هذا الفصل، كل إصدار ثنائي — إما يراه الجميع، أو لا أحد. عند حدوث مشكلة، الخيار الوحيد هو rollback كامل يستغرق 10 إلى 30 دقيقة.\n\nUnleash يكسر هذا الارتباط: تنشر الكود، ثم تفعّل الميزة تدريجياً أو تطفئها في ثوانٍ — دون pipeline نشر ودون hotfix. ميزة غير عاملة؟ أطفئ الإشارة فوراً وحقّق بهدوء بدلاً من ليلة بيضاء.\n\nالفائدة الثانية هي التجربة: بتعريف شريحة مستخدمين (متبنّون أوائل، خطة Pro، مستخدمو دولة محددة)، تفعّل ميزة لهم وحدهم وتقيس الأثر قبل الطرح الشامل. هذا نموذج A\u002FB testing حقيقي في بيئة الإنتاج.\n\nUnleash مفتوحة المصدر (Apache-2.0) تغطي هذه الحالات بمشاريع وبيئات واستراتيجيات تفعيل وسجل مراجعة كامل — دون قفل بمورّد.",{"type":42,"title":43,"items":44},"ul","مزايا Unleash المستضافة ذاتياً",[45,46,47,48,49,50],"تبديلات في الوقت الفعلي — فعّل أو عطّل ميزة دون إعادة النشر.","طرح تدريجي — افتح لـ5 %، 20 %، 50 % من المستخدمين بالاستهداف.","بيئات منفصلة — حالات إشارات مستقلة لكل بيئة.","SDK متعدد اللغات — عملاء رسميون لـNode.js وPython وGo وJava و‎.NET وRuby وPHP.","سجل مراجعة كامل — كل تغيير يسجّل المؤلف والوقت.","تحديثات بلا توقف — `docker compose pull && docker compose up -d`.",{"type":38,"title":52,"body":53},"المتطلبات","Unleash مصمم للعمل على VPS متواضع. الحد الأدنى الموصى به هو 1 vCPU و1 جيجابايت RAM — تطبيق Node.js يستهلك نحو 86 ميغابايت والـPostgreSQL 17 نحو 46 ميغابايت في وضع الخمول، أي ما مجموعه 132 ميغابايت في ظروف الاختبار. في الإنتاج مع حركة SDK نشطة، خطّط لـ256 ميغابايت كهامش أمان — VPS بجيجابايت يكفي بيُسر.\n\nبدون نطاق، الوصول عبر نفق SSH: `ssh -L 4242:127.0.0.1:\u003Cport> root@\u003Cip-vps>` ثم فتح `http:\u002F\u002Flocalhost:4242\u002F`. للوصول الدائم من تطبيقاتك وخطوط CI، ربط نطاق من لوحة ServOrbit: nginx سيوكّل Unleash عبر HTTPS تلقائياً.\n\nDocker يجب أن يكون مثبّتاً على VPS. قالب ServOrbit يُهيّئه مسبقاً — لا إعداد يدوي مطلوب.",{"type":55,"title":56,"steps":57},"steps","نشر Unleash على VPS ServOrbit",[58,61,64,67,70,73],{"title":59,"body":60},"الطلب من Marketplace ServOrbit","من منطقة عملاء ServOrbit، ثبّت Unleash بنقرة واحدة من Marketplace: اختر فئة التطوير، حدّد Unleash وأكّد طلبك. تُنشر stack Docker Compose (Unleash + PostgreSQL 17) تلقائياً مع healthcheck مدمج.",{"title":62,"body":63},"تسجيل الدخول للواجهة","افتح `https:\u002F\u002F\u003Cنطاقك>\u002F` في المتصفح. صفحة الدخول في `\u002Fauth\u002Fsimple\u002Flogin` — أدخل `admin` وكلمة المرور من espace client ServOrbit.",{"title":65,"body":66},"إنشاء مشروع وأول flag","في واجهة Unleash، أنشئ مشروعاً (مثلاً `my-app`). داخله، انقر على **New feature flag**. أعطه اسماً، واختر النوع — **Release** للطرح التدريجي، **Kill switch** لمفتاح أمان، **Experiment** لاختبار A\u002FB — ثم أكّد. الإشارة تُنشأ معطّلة افتراضياً في جميع البيئات.",{"title":68,"body":69},"ضبط استراتيجية التفعيل","انقر على الإشارة ثم على **Add strategy** في البيئة المختارة (افتراضياً `production`). Unleash يقدم عدة استراتيجيات: **Standard** (مفعّل للجميع)، **Gradual rollout** (نسبة مئوية)، **UserIDs** (قائمة محددة)، **Remote address** (حسب IP). للطرح التدريجي، اختر Gradual rollout وحدّد النسبة عند 10 %. انقر **Save strategy** — الإشارة نشطة الآن لـ10 % من مستخدميك.",{"title":71,"body":72},"ربط تطبيقك بـSDK","ثبّت SDK للغتك: `npm install unleash-client` (Node.js)، `pip install UnleashClient` (Python)، أو الحزمة المعادلة في إطارك. هيئّه بـ URL الـAPI (`https:\u002F\u002F\u003Cنطاقك>\u002Fapi`) ومفتاح CLIENT (أنشئه من Unleash → Settings → API access → Add new API token، نوع **CLIENT**). ثم استدعِ `client.isEnabled('my-flag')` أينما تريد تقييد السلوك.",{"title":74,"body":75},"المراقبة والتعديل","تابع تقييمات الإشارات في تبويب Metrics. غيّر استراتيجية الطرح أو عطّل الإشارة من الواجهة — دون إعادة النشر.",{"type":77,"body":78},"tip","لإشارات نوع Kill switch، فعّل بيانات الانطباع في SDK (`impressionDataAll: true`): كل تقييم ينشئ حدثاً يمكنك توجيهه إلى مكدسة observability (Glitchtip، Plausible) لربط الطرح بتغيرات مقاييسك.",{"type":38,"title":80,"body":81},"إدارة البيئات والترقية","Unleash مفتوحة المصدر تنشئ بيئتَين افتراضيتَين: `development` و`production`. كل إشارة لها حالة مستقلة لكل بيئة — يمكنك تفعيل ميزة في development للفريق كله مع إبقاء الطرح في production عند 0 %.\n\nلإضافة بيئة `staging`، اذهب إلى Unleash → Settings → Environments → Add environment. سمّها `staging` واحفظ. كل إشارة ستعرض الآن ثلاثة تبويبات بيئة. يجب تهيئة SDK بـ`environment: 'staging'` (أو `'development'`) لتصل التقييمات إلى الحالة الصحيحة.\n\nنمط شائع: تفعيل ميزة في staging لكامل فريق الجودة (استراتيجية UserIDs بقائمة البريد الداخلي)، وفي production بطرح تدريجي عند 5 %. الاستراتيجيتان تتعايشان في نفس الإشارة — دون تعارض.",{"type":38,"title":83,"body":84},"الأمان ورموز API","Unleash تفصل الرموز بالنوع والبيئة. رمز **CLIENT** يعطي قراءة فقط لحالات الإشارات لبيئة محددة — هو الرمز الذي يُحقن في تطبيقاتك. رمز **ADMIN** يعطي وصولاً كاملاً لـAPI الإدارة — للسكريبتات وأدوات التكامل فقط، ولا يُضمَّن في كود العميل أبداً.\n\nلإنشاء رمز CLIENT: Unleash → Settings → API access → Add new API token. اختر النوع **CLIENT**، حدّد البيئة (`production`) ونطاق المشاريع. انسخ القيمة المولّدة — تظهر مرة واحدة فقط. خزّنها في أسرار CI (`UNLEASH_API_TOKEN`) أو في مخزن الأسرار.\n\nعلى ServOrbit، Unleash مرتبط بـ`127.0.0.1` ومعرّض فقط عبر nginx — المنفذ 4242 غير مكشوف مباشرة من الإنترنت. nginx يضيف TLS، وكلمة المرور الأولية متاحة من منطقة العملاء؛ غيّرها عند أول تسجيل دخول.",{"type":38,"title":86,"body":87},"سجل CVE وسبب تثبيت الإصدار 8.0.3","Unleash 8.0.3 مثبَّت في قالب ServOrbit لسبب محدد: صُحِّحت ثغرتان بين 8.0.0 و8.0.3. **CVE-2026-63004** (CVSS 5.5، SSRF) سمحت لمدير مصادق بإطلاق طلبات خادم داخلية عبر إعداد webhooks. **CVE-2026-63466** (CVSS 4.1، XSS مخزَّن) سمحت بحقن HTML في أوصاف الإشارات. كلتاهما تستلزمان المصادقة وكلتاهما مُصلَّحتان في 8.0.3. تثبيت تاغ دقيق عوضاً عن `:latest` يضمن أنك تعرف دائماً الإصدار الذي يعمل.","VPS ServOrbit مع Docker جاهز وIPv4 مخصصة ونظام nginx مدمج — انشر منصة feature flags الخاصة بك في دقائق دون إعداد خادم.","نشر VPS الخاص بي","\u002Fmarketplace\u002Fالتطوير\u002Funleash",[92,110,127],{"id":93,"slug":94,"slugs":95,"title":99,"excerpt":100,"readTime":101,"views":18,"isPinned":19,"publishedAt":102,"updatedAt":103,"category":104,"categories":105,"featuredImage":29,"bgImage":30,"posterImage":107,"relatedSolution":108},74,"استضافة-gitea-على-خادم-vps-الخاص-بك",{"fr":96,"en":97,"ar":94,"es":98},"heberger-gitea","host-gitea-on-your-own-vps","alojar-gitea-en-un-vps","استضافة Gitea على خادم VPS الخاص بك في 2026","انشُر Gitea على خادم VPS مع Docker وSSL. دليل شامل: التثبيت والهجرة إلى ‏Forgejo v16‏ ومقارنة الحوكمة.",8,"2026-04-07T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[106],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-gitea-poster.svg",{"categorySlug":33,"appSlug":109},"gitea",{"id":111,"slug":112,"slugs":113,"title":117,"excerpt":118,"readTime":17,"views":18,"isPinned":19,"publishedAt":119,"updatedAt":120,"category":121,"categories":122,"featuredImage":29,"bgImage":30,"posterImage":124,"relatedSolution":125},376,"استضافة-verdaccio-على-vps-مسجل-npm-خاص",{"fr":114,"en":115,"ar":112,"es":116},"self-host-verdaccio-vps","verdaccio-private-npm-registry-vps","alojar-verdaccio-en-un-vps-registro-npm-privado","استضافة Verdaccio على VPS: مسجّل npm\u002Fyarn\u002Fpnpm خاص","نشر Verdaccio على VPS ServOrbit: مسجّل npm\u002Fyarn خاص مستضاف ذاتياً لوكالة npmjs.org واستضافة حزم JavaScript الداخلية.","2026-09-25T00:00:00+00:00","2026-09-25T23:43:02+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[123],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fself-host-verdaccio-vps-poster.svg",{"categorySlug":33,"appSlug":126},"verdaccio",{"id":128,"slug":129,"slugs":130,"title":134,"excerpt":135,"readTime":136,"views":137,"isPinned":19,"publishedAt":138,"updatedAt":139,"category":140,"categories":145,"featuredImage":29,"bgImage":30,"posterImage":147,"relatedSolution":148},361,"كيفية-استضافة-semaphore-ui-على-خادم-vps",{"fr":131,"en":132,"ar":129,"es":133},"self-host-semaphore-ui-vps","self-host-semaphore-ui-on-vps","como-alojar-semaphore-ui-en-un-vps","استضافة Semaphore UI على خادم VPS — لوحة تحكم Ansible","انشر Semaphore UI على خادم VPS: واجهة ويب مفتوحة المصدر لـ Ansible وTerraform وOpenTofu — بدون CLI، قاعدة SQLite مدمجة.",4,2,"2026-09-18T00:00:00+00:00","2026-09-19T02:00:43+00:00",{"id":141,"name":142,"slug":143,"color":144,"icon":143},3,"النشر","deploiement","bg-success\u002F10 text-success",[146],{"id":141,"name":142,"slug":143,"color":144,"icon":143},"\u002Fblog\u002Fcovers\u002Fself-host-semaphore-ui-vps-poster.svg",{"categorySlug":149,"appSlug":150},"نشر-التطبيقات-وdevops","semaphore",1790693152210]