[{"data":1,"prerenderedAt":221},["ShallowReactive",2],{"seo-verification":3,"blog-بدائل-postman-bruno-hoppscotch-على-vps-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-بدائل-postman-bruno-hoppscotch-على-vps-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":153,"ctaBody":154,"ctaButton":155,"ctaUrl":156,"relatedPosts":157},487,"بدائل-postman-bruno-hoppscotch-على-vps",{"fr":12,"en":13,"ar":10,"es":14},"postman-alternatives-self-hosted-api-testing","postman-alternatives-bruno-hoppscotch-on-vps","alternativas-a-postman-bruno-y-hoppscotch-en-vps","بدائل Postman: Bruno وHoppscotch على VPS","حذف Postman مساحات العمل المجانية للفرق في مارس 2026. انتقل إلى Bruno أو Hoppscotch المستضاف ذاتياً في أقل من ساعة دون فقدان مجموعاتك.",8,0,false,"2026-10-21T00:00:00+00:00","2026-10-21T15:21:33+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},4,"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fpostman-alternatives-self-hosted-api-testing-poster.svg","في مارس 2026، أزال ‎Postman‎ مساحات العمل التعاونية من خطته المجانية، مما فرض على الفرق الصغيرة دفع 19 دولاراً على الأقل لكل مستخدم شهرياً. يوفر ‎Bruno‎ و‎Hoppscotch‎ بديلاً متكاملاً: مجموعات مخزنة محلياً، وبدون اشتراك، مع ترحيل من ‎Postman‎ يحافظ على متغيرات البيئة وتوثيق ‎OAuth2‎ والاختبارات الآلية. يشرح هذا الدليل كيفية الاختيار والترحيل والنشر في أقل من ساعة.",[35,39,49,52,74,95,98,146,150],{"type":36,"title":37,"body":38},"h2","لماذا الترحيل من Postman الآن","حتى فبراير 2026، كان ‎Postman‎ يتيح مشاركة المجموعات للفرق ضمن خطته المجانية. منذ تحديث مارس 2026، أصبحت مساحات العمل التعاونية حكراً على المشتركين المدفوعين، بسعر أدنى يبلغ 19 دولاراً لكل مستخدم شهرياً (خطة Basic). بالنسبة لفريق من خمسة مطورين، يمثل ذلك 95 دولاراً شهرياً أو 1140 دولاراً سنوياً، لأداة قيمتها الرئيسية مشاركة المجموعات. ولفريق من عشرة أشخاص، يتجاوز الحساب 2000 دولار سنوياً.\n\nتغطي بديلتان مفتوحتا المصدر هذه الحاجة بدون اشتراك. يخزن ‎**Bruno**‎ المجموعات مباشرةً في مستودع ‎Git‎ الخاص بك — كل طلب ملف نصي قابل للإصدار ومقروء بأي أداة مراجعة كود. يوفر ‎**Hoppscotch**‎ واجهة ويب تعاونية قابلة للنشر على ‎VPS‎ خاص بك باستخدام ‎Docker Compose‎ في أقل من عشرين دقيقة. كلا المشروعين يستوردان مجموعات ‎Postman‎ بشكل أصلي ويحافظان على متغيرات البيئة والبرامج النصية السابقة للطلب والاختبارات الآلية.\n\nيعتمد الاختيار بين الاثنين على سير عملك: ‎Bruno‎ مناسب للفرق التي تعمل بـ‎Git‎ ولا تحتاج إلى مزامنة فورية. ‎Hoppscotch‎ مناسب للفرق التي تشارك بيئات اختبار نشطة وتفضل واجهة ويب.",{"type":40,"title":41,"items":42},"ul","ما تكسبه بالترحيل",[43,44,45,46,47,48],"‎**بدون اشتراك**‎ — ‎Bruno‎ عميل سطح مكتب مفتوح المصدر (MIT)، و‎Hoppscotch‎ ينتشر على أي ‎VPS‎ بـ‎Docker‎","‎**مجموعات مُصدَّرة**‎ — يخزن ‎Bruno‎ كل طلب في ملف ‎`.bru`‎: تنطبق عليه أوامر `git diff` و`git blame` ومراجعات الكود بشكل طبيعي","‎**استيراد مباشر من Postman**‎ — يقرأ كلا الأداتين ملفات JSON لـ‎Postman‎ الإصدار 2.1 ويحافظان على المتغيرات وتوثيق ‎OAuth2‎ والاختبارات الآلية","‎**لا بيانات ترسل إلى أطراف ثالثة**‎ — ‎Hoppscotch‎ المستضاف ذاتياً لا يتصل بأي خوادم خارجية؛ ‎Bruno‎ لا يزامن طلباتك مع السحابة أبداً","‎**موارد خفيفة**‎ — لا يحتاج ‎Bruno‎ لخادم؛ ‎Hoppscotch‎ يعمل على ‎1 vCPU \u002F 1 GB RAM‎ للاستخدام المعتاد للفريق","‎**مقاعد فريق غير محدودة**‎ — يخدم نشر واحد لـ‎Hoppscotch‎ الفريق بأكمله بغض النظر عن حجمه",{"type":36,"title":50,"body":51},"المتطلبات قبل البدء","بالنسبة لـ‎Bruno‎، يُعنى الأمر فقط بجهاز كل مطور: يُثبَّت عميل سطح المكتب على ‎macOS‎ و‎Linux‎ و‎Windows‎ بدون خادم. تعيش المجموعات في مجلد ضمن مستودع ‎Git‎ الحالي. لا يلزم أي حساب ولا يتصل بأي خدمة خارجية عند التشغيل.\n\nبالنسبة لـ‎Hoppscotch‎ المستضاف ذاتياً، تحتاج إلى ‎VPS‎ بحد أدنى ‎1 vCPU‎ و‎1 GB RAM‎ (يوصى بـ‎2 GB‎ للمثيل مع قاعدة البيانات والذاكرة المؤقتة)، مع تثبيت ‎Docker‎ و‎Docker Compose‎، واسم نطاق يشير إلى الخادم، وشهادة ‎TLS‎ (‎Let's Encrypt‎ عبر ‎Certbot‎ أو ‎Traefik‎). تحتاج أيضاً إلى وصول ‎SSH‎ للإعداد الأولي والتحديثات.\n\nفي كلتا الحالتين، يلزم تصدير مجموعات ‎Postman‎ بصيغة ‎JSON v2.1‎. في ‎Postman‎، اذهب إلى `File → Export → Collection v2.1` لكل مجموعة. تُنزَّل البيئات بشكل منفصل من تبويب ‎`Environments`‎. احتفظ بهذه الملفات كنسخة احتياطية.",{"type":53,"title":54,"steps":55},"steps","الترحيل إلى Bruno في ست خطوات",[56,59,62,65,68,71],{"title":57,"body":58},"تصدير مجموعاتك من Postman","في ‎Postman‎، انقر على ‎`…`‎ بجانب كل مجموعة، ثم ‎`Export`‎. اختر ‎`Collection v2.1 (recommended)`‎ واحفظ ملف ‎JSON‎. لمتغيرات البيئة، اذهب إلى ‎`Environments`‎، انقر ‎`…`‎ ثم ‎`Export`‎ لكل بيئة.",{"title":60,"body":61},"تثبيت Bruno","حمّل الحزمة من `usebruno.com\u002Fdownloads` لنظام تشغيلك. على ‎Debian\u002FUbuntu‎: `sudo dpkg -i bruno_\u003Cversion>_amd64_linux.deb`. على ‎macOS‎ عبر ‎Homebrew‎: `brew install --cask bruno`. ‎Bruno‎ موقّع ولا يتطلب حساباً.",{"title":63,"body":64},"إنشاء مجموعة Bruno في مستودعك","افتح ‎Bruno‎، انقر ‎`Create Collection`‎، اختر مجلداً في مستودع ‎Git‎ الخاص بك (مثلاً ‎`api-tests\u002F`‎). ينشئ ‎Bruno‎ ملف ‎`bruno.json`‎ هناك ويخزن كل طلب كملف ‎`.bru`‎ — صيغة نصية قابلة للقراءة والمقارنة.",{"title":66,"body":67},"استيراد مجموعة Postman","في ‎Bruno‎، انقر ‎`Import Collection`‎ ← ‎`Postman Collection v2 \u002F v2.1`‎، ثم حدد ملف ‎JSON‎ المُصدَّر. تُحوَّل الطلبات والمجلدات والبرامج النصية السابقة للطلب واختبارات ‎`pm.test()`‎. تُحفظ المتغيرات ‎`{{variable}}`‎ بنفس الصيغة في ‎Bruno‎.",{"title":69,"body":70},"استيراد متغيرات البيئة","انقر على محدد البيئة في أعلى اليمين ← ‎`Configure`‎ ← ‎`Import`‎. حدد ملف ‎JSON‎ للبيئة المُصدَّر من ‎Postman‎. تحقق من أن الأسرار مُعلَّمة بـ‎`Secret`‎ في ‎Bruno‎ لتجنب الإيداع في ‎Git‎ بنص واضح.",{"title":72,"body":73},"إصدار المجموعة ومشاركتها","أودع مجلد ‎`api-tests\u002F`‎ في مستودعك: `git add api-tests\u002F && git commit -m 'feat: migrate Postman collections to Bruno'`. كل مطور يستنسخ المستودع ويفتح المجلد في ‎Bruno‎ — لا تكوين حساب، لا مساحة عمل سحابية.",{"type":53,"title":75,"steps":76},"نشر Hoppscotch المستضاف ذاتياً مع Docker Compose",[77,80,83,86,89,92],{"title":78,"body":79},"استرداد ملف Docker Compose الرسمي","استنسخ المستودع: `git clone https:\u002F\u002Fgithub.com\u002Fhoppscotch\u002Fhoppscotch.git && cd hoppscotch`. يحتوي ملف ‎`compose.yml`‎ على ثلاثة خدمات: ‎`hoppscotch`‎ (الواجهة الأمامية + API)، و‎`db`‎ (‎PostgreSQL 15‎)، و‎`hoppscotch-migrate`‎ (الترحيلات عند بدء التشغيل).",{"title":81,"body":82},"تكوين متغيرات البيئة","انسخ الملف المثال: `cp .env.example .env`. أدخل على الأقل: `DATABASE_URL=postgresql:\u002F\u002Fpostgres:yourpassword@db:5432\u002Fhoppscotch`، و‎`JWT_SECRET`‎ (سلسلة عشوائية بحد أدنى 32 حرفاً)، و`VITE_BASE_URL=https:\u002F\u002Fapi.your-domain.com`، و`VITE_SHORTCODE_BASE_URL=https:\u002F\u002Fyour-domain.com`. لـ‎OAuth2‎ (تسجيل الدخول عبر ‎GitHub‎ أو ‎Google‎ أو ‎GitLab‎)، أدخل المفاتيح المقابلة في كتلة ‎`Auth`‎.",{"title":84,"body":85},"تشغيل الخدمات","شغّل `docker compose up -d`. عند بدء التشغيل الأول، تُطبّق خدمة ‎`hoppscotch-migrate`‎ ترحيلات ‎PostgreSQL‎ ثم تتوقف — هذا طبيعي. تحقق بـ `docker compose ps` من أن ‎`hoppscotch`‎ و‎`db`‎ في حالة ‎`running`‎.",{"title":87,"body":88},"تكوين الوكيل العكسي وTLS","أضف مضيفاً افتراضياً في ‎nginx‎ يوجه المنفذ 3000 إلى ‎`localhost:3000`‎ والمنفذ 8080 (API الخلفي) إلى ‎`localhost:8080`‎. احصل على شهادة ‎Let's Encrypt‎: `certbot --nginx -d your-domain.com -d api.your-domain.com`. أعد تحميل ‎nginx‎: `systemctl reload nginx`.",{"title":90,"body":91},"إنشاء أول حساب مسؤول","افتح ‎`https:\u002F\u002Fyour-domain.com`‎ في متصفحك. يتلقى أول حساب يُنشأ صلاحيات المسؤول تلقائياً. اذهب إلى ‎`https:\u002F\u002Fyour-domain.com\u002Fadmin`‎ لإدارة المستخدمين وتفعيل أو تعطيل طرق المصادقة وتحديد سياسات الفريق.",{"title":93,"body":94},"استيراد مجموعات Postman في Hoppscotch","في ‎Hoppscotch‎، اذهب إلى ‎`Collections`‎ ← ‎`Import \u002F Export`‎ ← ‎`Import from Postman`‎. حدد ملف ‎JSON‎ الإصدار 2.1. تُستورد المجموعات والمجلدات والطلبات والمتغيرات وبرامج الاختبار. شارك المجموعة مع فريقك عبر قائمة ‎`Share Collection`‎ — كل عضو متصل يملك وصولاً في الوقت الفعلي.",{"type":96,"body":97},"p","‎Insomnia، ثالث عميل ‎API يُستشهد به كثيراً، مرّ بفترة اضطراب عام 2023: أزال فريق ‎Kong المزامنة المحلية لصالح حساب سحابي إلزامي، قبل أن يتراجع تحت ضغط المجتمع. انقسم المشروع الآن إلى فرعين: `insomnium` (‎fork المجتمع، نظام التخزين المحلي أولاً) و‎Insomnia الرسمي (مفتوح النواة مع سحابة اختيارية).",{"type":99,"title":100,"headers":101,"rows":106},"comparison","Bruno مقابل Hoppscotch مقابل Insomnia — أيهما تختار",[102,103,104,105],"المعيار","‎Bruno‎","‎Hoppscotch‎ مستضاف ذاتياً","‎Insomnia‎ مفتوح النواة",[107,112,117,122,127,130,134,137,142],[108,109,110,111],"النموذج","عميل سطح مكتب (MIT)","تطبيق ويب مستضاف ذاتياً (MIT)","عميل سطح مكتب (مفتوح النواة، Apache 2.0)",[113,114,115,116],"تخزين المجموعات","ملفات ‎`.bru`‎ في ‎Git‎","قاعدة بيانات ‎PostgreSQL‎ على ‎VPS‎ خاصتك","ملفات محلية أو سحابة مدفوعة",[118,119,120,121],"التعاون في الوقت الفعلي","عبر ‎Git‎ (سحب\u002Fدفع)","نعم، مدمج في واجهة الويب","لا على الخطة المجانية (السحابة مطلوبة)",[123,124,125,126],"ذاكرة RAM المطلوبة","أقل من 200 ميجابايت (العميل فقط)","1 جيجابايت كحد أدنى (الخادم)","أقل من 300 ميجابايت (العميل فقط)",[128,129,129,129],"استيراد ‎Postman v2.1‎","نعم، أصلي",[131,132,133,132],"‎OAuth2‎ \u002F مصادقة متقدمة","نعم","نعم، مع مزودين قابلين للتكوين",[135,136,136,136],"اختبارات آلية (برامج نصية)","نعم (‎JS‎)",[138,139,140,141],"نشر الفريق","لا خادم — مشاركة عبر ‎Git‎","‎Docker Compose‎، ‎1 VPS‎","اشتراك سحابي أو استضافة ذاتية Enterprise",[143,144,145,144],"الوصول دون اتصال","كامل","جزئي (الواجهة دون اتصال، المزامنة مستحيلة)",{"type":147,"title":148,"body":149},"tip","ترحيل الاختبارات الآلية من Postman","تستخدم برامج ‎Postman‎ النصية ‎`pm.test()`‎ المكتبة العامة ‎`pm`‎. يوفر كل من ‎Bruno‎ و‎Hoppscotch‎ واجهة برمجية متوافقة: ‎`test('اسم الاختبار', () => { ... })`‎ مع ‎`expect()`‎ للتحقق. التحويل مباشر لتحققات رمز الحالة (‎`pm.response.to.have.status(200)`‎ تصبح ‎`expect(response.status).toBe(200)`‎) وتحققات نص ‎JSON‎ (‎`pm.response.json()`‎ تبقى كما هي). البرامج النصية السابقة للطلب التي تعدّل متغيرات البيئة (‎`pm.environment.set(...)`‎) مدعومة أصلاً من كلا الأداتين.",{"type":36,"title":151,"body":152},"استضافة Hoppscotch على VPS من ServOrbit","يناسب تماماً استضافة ‎Hoppscotch‎ خادمُ ‎VPS‎ مع ‎Docker‎ مُهيَّأ مسبقاً: يعمل مكدس ‎`hoppscotch`‎ + ‎`db`‎ (‎PostgreSQL 15‎) + ‎`nginx`‎ ضمن ‎1 GB RAM‎ للاستخدام المعتاد للفريق، ويمتد إلى ‎2 GB‎ عند تفعيل توليد المحاكاة أو تكامل ‎CI‎. يُبسّط ‎IPv4‎ المخصص تكوين ‎DNS‎ ويضمن عدم مشاركة حركة مرور مثيل الاختبار الخاص بك.\n\nيتيح لك ‎VPS‎ مخصص لأدواتك مركزة أدوات أخرى: ‎Gitea‎ للكود المصدري، و‎Woodpecker CI‎ للتكامل المستمر، و‎Hoppscotch‎ لاختبار ‎API‎ على نفس الخادم. تقدم ServOrbit خوادم ‎VPS‎ موجهة للمطورين مع ‎Docker‎ مُهيَّأ مسبقاً لاستضافة ‎Hoppscotch‎ أو أي ‎API‎ ابتداءً من 99 درهم\u002Fشهر.","استضف أداة اختبار API على VPS للمطورين","تقدم ServOrbit خوادم VPS بصلاحية root وIPv4 مخصص وDocker مُهيَّأ مسبقاً. انشر Hoppscotch المستضاف ذاتياً في أقل من ساعة.","عرض خطط VPS للمطورين","\u002Fsolutions\u002Fdeveloppeurs",[158,177,200],{"id":159,"slug":160,"slugs":161,"title":165,"excerpt":166,"readTime":167,"views":168,"isPinned":19,"publishedAt":169,"updatedAt":170,"category":171,"categories":172,"featuredImage":30,"bgImage":31,"posterImage":174,"relatedSolution":175},45,"نشر-تطبيق-fastapi-على-vps",{"fr":162,"en":163,"ar":160,"es":164},"deployer-fastapi-vps","deploy-a-fastapi-application-on-a-vps","desplegar-una-aplicacion-fastapi-en-un-vps","نشر FastAPI على VPS: الدليل الكامل للإنتاج","انشر FastAPI على VPS مع Docker متعدد المراحل وGunicorn وPostgreSQL وCI\u002FCD وMониторинг. دليل Python شامل للإنتاج 2025.",10,3,"2026-05-06T00:00:00+00:00","2026-10-07T23:07:24+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[173],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fdeployer-fastapi-vps-poster.svg",{"categorySlug":24,"appSlug":176},"fastapi",{"id":178,"slug":179,"slugs":180,"title":184,"excerpt":185,"readTime":186,"views":18,"isPinned":19,"publishedAt":187,"updatedAt":188,"category":189,"categories":195,"featuredImage":30,"bgImage":31,"posterImage":197,"relatedSolution":198},74,"استضافة-gitea-على-خادم-vps-الخاص-بك",{"fr":181,"en":182,"ar":179,"es":183},"heberger-gitea","host-gitea-on-your-own-vps","alojar-gitea-en-un-vps","استضافة Gitea على خادم VPS الخاص بك في 2026","انشُر ‏Gitea 1.25‏ على خادم VPS مع Docker وSSL. دليل شامل: CI\u002FCD مع ‏Gitea Actions‏، مقارنة ‏Gitea‏ مقابل ‏Forgejo v16‏، إدارة يومية، استكشاف أخطاء SSH وHTTPS.",13,"2026-04-07T00:00:00+00:00","2026-10-21T15:21:37+00:00",{"id":190,"name":191,"slug":192,"color":193,"icon":194},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[196],{"id":190,"name":191,"slug":192,"color":193,"icon":194},"\u002Fblog\u002Fcovers\u002Fheberger-gitea-poster.svg",{"categorySlug":24,"appSlug":199},"gitea",{"id":201,"slug":202,"slugs":203,"title":207,"excerpt":208,"readTime":209,"views":210,"isPinned":19,"publishedAt":211,"updatedAt":212,"category":213,"categories":218,"featuredImage":30,"bgImage":31,"posterImage":220,"relatedSolution":30},212,"woodpecker-ci-وforgejo-خط-أنابيب-cicd-على-خادم-vps",{"fr":204,"en":205,"ar":202,"es":206},"woodpecker-ci-pipeline-vps-forgejo","woodpecker-ci-and-forgejo-cicd-pipeline-on-a-vps","woodpecker-ci-forgejo-pipeline-cicd-vps","Woodpecker CI وForgejo: خط أنابيب CI\u002FCD على خادم VPS","نشر Woodpecker CI v3 مع Forgejo على خادم VPS: إعداد Docker Compose، تكوين YAML، الأسرار، أجهزة التشغيل متعددة المعماريات واستكشاف أخطاء OAuth.",11,1,"2026-08-02T00:00:00+00:00","2026-10-20T23:18:05+00:00",{"id":214,"name":215,"slug":216,"color":217,"icon":216},2,"الأتمتة","automatisation","bg-brand-action\u002F10 text-brand-action",[219],{"id":214,"name":215,"slug":216,"color":217,"icon":216},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",1792596370016]