[{"data":1,"prerenderedAt":225},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-qdrant-على-خادم-vps-ma-ar":6,"promo-bar-likely":224},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-استضافة-qdrant-على-خادم-vps-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":165,"ctaBody":166,"ctaButton":167,"ctaUrl":168,"relatedPosts":169},65,"استضافة-qdrant-على-خادم-vps",{"fr":12,"en":13,"ar":10,"es":14},"heberger-qdrant-vps","hosting-qdrant-on-a-vps","alojar-qdrant-en-un-vps","استضافة Qdrant على خادم VPS","استضِف ‎Qdrant‎ على خادمك الـ‎VPS‎: ‎Docker Compose‎ ومفتاح ‎API‎ و‎TLS‎ وضبط ‎HNSW‎ والتكميم وعميل ‎Python v1‎ واللقطات ومراقبة ‎Prometheus‎.",8,1,false,"2026-04-16T00:00:00+00:00","2026-10-20T23:18:05+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},6,"قواعد البيانات","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-qdrant-vps-poster.svg",{"categorySlug":34,"appSlug":35},"قواعد-البيانات","qdrant","‎Qdrant‎ هي قاعدة بيانات متجهية مكتوبة بلغة ‎Rust‎، مصمّمة للبحث الدلالي وأنظمة التوصية وخطوط معالجة ‎RAG‎ في تطبيقات الذكاء الاصطناعي. فهي خفيفة وسريعة، وتُستضاف ذاتيًا بشكل مثالي على خادم ‎VPS‎ للاحتفاظ بمتجهاتك (‎embeddings‎) تحت سيطرتك وتجنّب الفوترة بالمتجه لدى الخدمات المُدارة.\n\nيغطّي هذا الدليل المسار كاملًا: التثبيت بـ‎Docker Compose‎، والتأمين بمفتاح ‎API‎ ووكيل عكسي مع ‎TLS‎، وإدراج المتجهات بـ‎Python‎ عبر العميل الرسمي ‎v1‎، وضبط فهرس ‎HNSW‎ والتكميم، والنسخ الاحتياطي عبر اللقطات، والمراقبة عبر نقطة النهاية ‎`\u002Fmetrics`‎ المتوافقة مع ‎Prometheus‎. تبدأ خوادم ‎VPS SSD NVMe‎ من ‎ServOrbit‎ من 99 درهم\u002Fشهر وتستوعب مجموعة بيانات أقل من مليون متجه دون أي إعداد خاص.",[38,42,52,68,71,83,98,101,125,129,136,151,154,162],{"type":39,"title":40,"body":41},"h2","لماذا تستضيف ‎Qdrant‎ ذاتيًا على خادم ‎VPS‎","تخزّن ‎Qdrant‎ المتجهات (‎embedding vectors‎) وتستعلم عنها للعثور على العناصر الأقرب دلاليًا: وهي لبنة البحث في صميم روبوتات المحادثة القائمة على ‎RAG‎ ومحركات التوصية والبحث باللغة الطبيعية. ولأنها مكتوبة بلغة ‎Rust‎، فهي سريعة ومقتصدة في الموارد، ما يجعلها مثالية للاستضافة على خادم ‎VPS‎ بدلًا من دفع اشتراك خدمة متجهية مُدارة تُحتسب تكلفتها لكل متجه مُخزَّن.\n\nالاستضافة الذاتية بالغة الأهمية لتطبيقات الذكاء الاصطناعي التي تعالج بيانات حساسة: فمتجهاتك، المشتقة غالبًا من مستندات داخلية سرية، لا تغادر بنيتك التحتية أبدًا. كما تتحكم في زمن الاستجابة، وهو أمر حاسم عندما يُطلق كل طلب مستخدم عملية بحث متجهي، وتتجنّب حدود المعدل الخاصة بواجهات ‎API‎ الخارجية عند ارتفاع الأحمال.",{"type":43,"title":44,"items":45},"ul","المتطلبات والموارد الموصى بها لخادم ‎VPS‎",[46,47,48,49,50,51],"‎RAM‎: كحدٍّ أدنى 1 غيغابايت للاختبار، و2 غيغابايت لبضع مئات الآلاف من المتجهات، و4–8 غيغابايت فوق المليون متجه ذي أبعاد عالية (فهرس ‎HNSW‎ يقيم في الذاكرة).","التخزين: من 20 إلى 50 غيغابايت من قرص ‎SSD NVMe‎ لاستمرارية المجموعات واللقطات.","‎CPU‎: معالج افتراضي واحد إلى اثنين (‎vCPU‎) يكفيان لحركة مرور معتدلة؛ أضِف أنوية إن كنت تُفهرس باستمرار.","‎Docker‎ و‎Docker Compose‎ مثبَّتان على الخادم.","المنفذ ‎6333‎ (‎REST‎) والمنفذ ‎6334‎ (‎gRPC‎) في متناول تطبيقك؛ و80\u002F443 للوكيل العكسي العام.","سجل ‎DNS A‎ (مثل ‎`vectors.mydomain.com`‎) إن كنت ستعرض واجهة ‎API‎ عبر ‎HTTPS‎.",{"type":53,"title":54,"steps":55},"steps","تثبيت ‎Qdrant‎ بـ‎Docker Compose‎",[56,59,62,65],{"title":57,"body":58},"إنشاء المجلد وملف ‎compose.yml‎","على الخادم، أنشئ مجلدًا مخصصًا: ‎`mkdir -p \u002Fopt\u002Fqdrant && cd \u002Fopt\u002Fqdrant`‎. أنشئ ملف ‎`compose.yml`‎ التالي:\n\n```yaml\nservices:\n  qdrant:\n    image: qdrant\u002Fqdrant:latest\n    restart: unless-stopped\n    ports:\n      - \"127.0.0.1:6333:6333\"\n      - \"127.0.0.1:6334:6334\"\n    volumes:\n      - .\u002Fqdrant_storage:\u002Fqdrant\u002Fstorage\n    environment:\n      - QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY}\n```\n\nربط المنافذ بـ‎`127.0.0.1`‎ يمنع أي تعرّض مباشر على الإنترنت؛ ولا يصل إليها سوى الوكيل العكسي.",{"title":60,"body":61},"توليد مفتاح ‎API‎ وتشغيل الحاوية","أنشئ ملف ‎`.env`‎ بمفتاحك:\n\n```bash\necho \"QDRANT_API_KEY=$(openssl rand -hex 32)\" > .env\n```\n\nشغّل ‎Qdrant‎:\n\n```bash\ndocker compose up -d\n```",{"title":63,"body":64},"التحقق من صحة النسخة","انتظر بضع ثوانٍ ثم تحقق من نقطة نهاية الصحة:\n\n```bash\ncurl -s http:\u002F\u002Flocalhost:6333\u002Fhealthz\n# المتوقع: {\"title\":\"qdrant - vector search engine\",\"version\":\"...\"}\n```",{"title":66,"body":67},"إنشاء أول مجموعة","أنشئ مجموعة اختبارية بمتجهات من البُعد 384:\n\n```bash\ncurl -s -X PUT http:\u002F\u002Flocalhost:6333\u002Fcollections\u002Ftest \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -H \"api-key: $(grep QDRANT_API_KEY .env | cut -d= -f2)\" \\\n  -d '{\"vectors\":{\"size\":384,\"distance\":\"Cosine\"}}'\n```",{"type":39,"title":69,"body":70},"تأمين الوصول: مفتاح ‎API‎ و‎TLS‎","لا تُفعّل ‎Qdrant‎ أي مصادقة افتراضيًا: نسخة مكشوفة بلا مفتاح ‎API‎ تتيح لأي شخص قراءة مجموعاتك وتعديلها وحذفها. متغير البيئة ‎`QDRANT__SERVICE__API_KEY`‎ هو خط الدفاع الأول؛ والوكيل العكسي مع ‎TLS‎ هو الثاني.\n\nمع ‎Caddy‎، الإعداد الأدنى هو:\n\n```\nvectors.mydomain.com {\n    reverse_proxy localhost:6333\n}\n```\n\nيحصل ‎Caddy‎ تلقائيًا على شهادة ‎Let's Encrypt‎ ويجدّدها. مع ‎nginx‎، أضِف داخل كتلة ‎server‎:\n\n```nginx\nlocation \u002F {\n    proxy_pass http:\u002F\u002F127.0.0.1:6333;\n    proxy_set_header Host $host;\n    proxy_set_header X-Real-IP $remote_addr;\n}\n```\n\nفعّل ‎TLS‎ بـ‎Certbot‎: ‎`certbot --nginx -d vectors.mydomain.com`‎.",{"type":53,"title":72,"steps":73},"اختبار المصادقة والوكيل العكسي",[74,77,80],{"title":75,"body":76},"التحقق من رفض الوصول بلا مفتاح","```bash\ncurl -s https:\u002F\u002Fvectors.mydomain.com\u002Fcollections\n# المتوقع: {\"status\":{\"error\":\"Unauthorized\",...}}\n```",{"title":78,"body":79},"استدعاء مُصادَق عليه بمفتاح ‎API‎","```bash\ncurl -s https:\u002F\u002Fvectors.mydomain.com\u002Fcollections \\\n  -H \"api-key: YOUR_KEY\"\n# المتوقع: {\"result\":{\"collections\":[]},\"status\":\"ok\",...}\n```",{"title":81,"body":82},"التحقق من شهادة ‎TLS‎","```bash\ncurl -sv https:\u002F\u002Fvectors.mydomain.com\u002Fhealthz 2>&1 | grep 'SSL connection\\|issuer'\n# المتوقع: سطور تُؤكّد ‎Let's Encrypt‎ و‎TLS 1.3‎\n```",{"type":53,"title":84,"steps":85},"إنشاء مجموعة وإدراج المتجهات بعميل ‎Python v1‎",[86,89,92,95],{"title":87,"body":88},"تثبيت العميل الرسمي","```bash\npip install qdrant-client>=1.7\n```",{"title":90,"body":91},"الاتصال بمفتاح ‎API‎","```python\nfrom qdrant_client import QdrantClient\n\nclient = QdrantClient(\n    url=\"https:\u002F\u002Fvectors.mydomain.com\",\n    api_key=\"YOUR_KEY\",\n)\n```",{"title":93,"body":94},"إنشاء مجموعة بـ‎VectorParams‎","```python\nfrom qdrant_client.models import Distance, VectorParams\n\nclient.recreate_collection(\n    collection_name=\"documents\",\n    vectors_config=VectorParams(size=384, distance=Distance.COSINE),\n)\n```",{"title":96,"body":97},"إدراج النقاط مع الحمولة والاستعلام","```python\nfrom qdrant_client.models import PointStruct\n\nclient.upsert(\n    collection_name=\"documents\",\n    points=[\n        PointStruct(\n            id=1,\n            vector=[0.1, 0.2, ...],\n            payload={\"title\": \"دليل Qdrant\", \"lang\": \"ar\"},\n        ),\n    ],\n)\n\nresults = client.search(\n    collection_name=\"documents\",\n    query_vector=[0.1, 0.21, ...],\n    limit=5,\n    with_payload=True,\n)\nfor r in results:\n    print(r.score, r.payload)\n```",{"type":39,"title":99,"body":100},"تحسين الأداء: ضبط ‎HNSW‎","خوارزمية ‎HNSW‎ (‎Hierarchical Navigable Small World‎) هي قلب البحث السريع في ‎Qdrant‎. ثلاثة معاملات تحكم مقايضة السرعة\u002Fالدقة\u002Fالذاكرة.",{"type":102,"title":103,"headers":104,"rows":109},"comparison","معاملات ‎HNSW‎ الرئيسية",[105,106,107,108],"المعامل","القيمة الافتراضية","النطاق الموصى به","التأثير",[110,115,120],[111,112,113,114],"‎m‎","16","16–64","الاتصالات لكل عقدة — أعلى = استرجاع أفضل، ذاكرة أكثر",[116,117,118,119],"‎ef_construct‎","100","100–400","جودة بناء الفهرس — أعلى = فهرس أفضل، بناء أبطأ",[121,122,123,124],"‎ef‎","128 (عند الاستعلام)","64–512","جودة البحث — أعلى = استرجاع أفضل، استعلام أبطأ",{"type":126,"title":127,"body":128},"tip","ضبط ‎HNSW‎ عند إنشاء المجموعة","مرّر معاملات ‎HNSW‎ مباشرةً في ‎`recreate_collection`‎:\n\n```python\nfrom qdrant_client.models import HnswConfigDiff\n\nclient.recreate_collection(\n    collection_name=\"documents\",\n    vectors_config=VectorParams(size=384, distance=Distance.COSINE),\n    hnsw_config=HnswConfigDiff(m=32, ef_construct=200),\n)\n```\n\nللبحث المتوازن على مجموعة بيانات من 500 000 متجه، يُوفّر ‎`m=32`‎ و‎`ef_construct=200`‎ استرجاعًا جيدًا (أكثر من 0.97) دون إثقال ‎RAM‎. رفع ‎`ef`‎ عند الاستعلام يُفيد حين تعلو الدقة على زمن الاستجابة.",{"type":43,"title":130,"items":131},"تقليل بصمة الذاكرة: التكميم القياسي والثنائي",[132,133,134,135],"**التكميم القياسي (‎uint8‎)**: يضغط كل إحداثية ‎float32‎ (4 بايت) إلى ‎uint8‎ (بايت واحد)، بتخفيض ‎RAM‎ نحو 4 أضعاف. خسارة طفيفة في الدقة تُعوَّض بالإفراط في العيّنات (‎oversampling‎).","**التكميم الثنائي**: تخفيض يصل إلى 32× ببينرة كل بُعد. مثالي للنماذج المدرَّبة للتكميم الثنائي.","**المعامل ‎`on_disk`‎**: يخزّن المتجهات الأصلية على القرص ولا يُبقي في ‎RAM‎ سوى الفهرس المُكمَّم. ضروري على خادم ‎VPS‎ محدود الذاكرة.","**‎Oversampling‎**: مع ‎`oversampling=2.0`‎ عند الاستعلام، تسترجع ‎Qdrant‎ ضعف المرشحين من الفهرس المُكمَّم ثم تعيد ترتيبهم بالمتجهات الأصلية.",{"type":53,"title":137,"steps":138},"النسخ الاحتياطي والاستعادة بلقطات ‎Qdrant‎",[139,142,145,148],{"title":140,"body":141},"إنشاء لقطة لمجموعة","```bash\ncurl -s -X POST https:\u002F\u002Fvectors.mydomain.com\u002Fcollections\u002Fdocuments\u002Fsnapshots \\\n  -H \"api-key: YOUR_KEY\"\n```",{"title":143,"body":144},"سرد اللقطات المتاحة","```bash\ncurl -s https:\u002F\u002Fvectors.mydomain.com\u002Fcollections\u002Fdocuments\u002Fsnapshots \\\n  -H \"api-key: YOUR_KEY\"\n```",{"title":146,"body":147},"تنزيل اللقطة","```bash\ncurl -O https:\u002F\u002Fvectors.mydomain.com\u002Fcollections\u002Fdocuments\u002Fsnapshots\u002FSNAPSHOT_NAME \\\n  -H \"api-key: YOUR_KEY\"\n```\n\nانسخ ملف ‎`.snapshot`‎ إلى تخزين خارجي للنسخ الاحتياطي خارج الموقع.",{"title":149,"body":150},"الاستعادة من لقطة","```bash\ncurl -s -X PUT https:\u002F\u002Fvectors.mydomain.com\u002Fcollections\u002Fdocuments\u002Fsnapshots\u002Fupload \\\n  -H \"api-key: YOUR_KEY\" \\\n  -H 'Content-Type: multipart\u002Fform-data' \\\n  -F snapshot=@documents-snapshot.snapshot\n```",{"type":126,"title":152,"body":153},"المراقبة بـ‎Prometheus‎ و‎Grafana‎","تعرض ‎Qdrant‎ نقطة نهاية ‎`\u002Fmetrics`‎ بتنسيق ‎Prometheus‎ على المنفذ 6333. أضِف الهدف في ‎`prometheus.yml`‎:\n\n```yaml\nscrape_configs:\n  - job_name: qdrant\n    static_configs:\n      - targets: ['localhost:6333']\n    metrics_path: \u002Fmetrics\n    bearer_token: YOUR_KEY\n```\n\nفي ‎Grafana‎، استورد لوحة تحكم مجتمع ‎Qdrant‎ (المعرف 18278) لتصوير زمن استجابة ‎p99‎ ومعدل الأخطاء في الوقت الفعلي.",{"type":43,"title":155,"items":156},"استكشاف الأخطاء الشائعة وإصلاحها",[157,158,159,160,161],"**‎Connection refused‎ على المنفذ 6333**: تحقق من تشغيل الحاوية (‎`docker compose ps`‎) وعدم حجب المنفذ بواسطة ‎`ufw`‎.","**خطأ ‎OOM‎ \u002F إيقاف الحاوية قسرًا**: قلّل ‎`ef_construct`‎ أو فعّل التكميم القياسي لتخفيض بصمة ‎RAM‎ للفهرس.","**بطء عند الإقلاع أو التحميل الأول**: فهرس ‎HNSW‎ يُحمَّل من القرص عند الوصول الأول؛ استخدم ‎SSD NVMe‎ وأجرِ استعلامًا تجريبيًا بعد التشغيل.","**‎Unauthorized 403‎**: المفتاح في ترويسة ‎`api-key`‎ لا يطابق ‎`QDRANT__SERVICE__API_KEY`‎؛ تحقق من غياب المسافات أو أحرف السطر الجديد.","**تراجع الاسترجاع بعد تفعيل التكميم الثنائي**: رفع ‎`oversampling`‎ إلى 3.0 أو 4.0 وتفعيل ‎`rescore=True`‎.",{"type":39,"title":163,"body":164},"اقتران ‎Qdrant‎ بـ‎Ollama‎ لمنظومة ‎RAG‎ قائمة بذاتها بالكامل","شغّل ‎Ollama‎ على الخادم نفسه لتوليد التضمينات (‎`ollama pull mxbai-embed-large`‎) وللاستدلال (‎`ollama pull llama3.1:8b`‎). عندئذٍ يعمل خط أنابيب ‎RAG‎ لديك من طرف إلى طرف دون أي استدعاء لواجهة خارجية: سؤال المستخدم ← تضمين ‎Ollama‎ ← بحث ‎Qdrant‎ ← أفضل المقاطع ← توليد ‎Ollama‎ ← إجابة مؤسَّسة.\n\nأضِف ‎LiteLLM‎ في المقدّمة لكشف نقطة نهاية موحّدة متوافقة مع ‎OpenAI‎ لتطبيقك. خادم ‎VPS‎ بذاكرة 8 غيغابايت يستضيف بيُسر ‎Qdrant‎ + ‎Ollama‎ (نموذج 7B مُكمَّم) + ‎LiteLLM‎ لمجموعة بيانات بضع مئات الآلاف من المتجهات.","أطلق قاعدة بياناتك المتجهية Qdrant للذكاء الاصطناعي","يوفّر خادم VPS Cloud من ServOrbit الذاكرة وأقراص SSD اللازمة لاستضافة Qdrant وتشغيل خطوط معالجة RAG ومحركات البحث الدلالي لديك، مع SSL ومصادقة تحت سيطرتك.","النشر على VPS Cloud","\u002Fvps-cloud",[170,188,206],{"id":171,"slug":172,"slugs":173,"title":177,"excerpt":178,"readTime":179,"views":18,"isPinned":19,"noindex":19,"publishedAt":180,"updatedAt":181,"category":182,"categories":183,"featuredImage":30,"bgImage":31,"posterImage":185,"relatedSolution":186},56,"postgresql-على-خادم-vps-قاعدة-بيانات-موثوقة-ومتحكم-بها",{"fr":174,"en":175,"ar":172,"es":176},"heberger-postgresql-vps","postgresql-on-a-vps-a-reliable-and-controlled-database","alojar-postgresql-en-un-vps","‎PostgreSQL على خادم VPS: قاعدة بيانات موثوقة ومتحكَّم بها","‎استضف PostgreSQL على VPS: إعداد الإنتاج، نسخ pgBackRest، HA بالبث، مقارنة RDS\u002FSupabase\u002FNeon واستكشاف أخطاء OOM.",9,"2026-04-25T00:00:00+00:00","2026-10-21T15:21:37+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[184],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-postgresql-vps-poster.svg",{"categorySlug":34,"appSlug":187},"postgresql-stack",{"id":189,"slug":190,"slugs":191,"title":195,"excerpt":196,"readTime":179,"views":197,"isPinned":19,"noindex":19,"publishedAt":198,"updatedAt":199,"category":200,"categories":201,"featuredImage":30,"bgImage":31,"posterImage":203,"relatedSolution":204},57,"استضافة-mysql-على-خادم-vps",{"fr":192,"en":193,"ar":190,"es":194},"heberger-mysql-vps","hosting-mysql-on-a-vps","alojar-mysql-en-un-vps","استضافة MySQL على خادم VPS: دليل شامل","ثبّت ‎MySQL 8.4 LTS‎ على خادم ‎VPS‎: المتطلبات، التأمين، أداء ‎InnoDB‎، الوصول عن بُعد الآمن، النسخ الاحتياطية التلقائية، واستكشاف الأخطاء.",0,"2026-04-24T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[202],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-mysql-vps-poster.svg",{"categorySlug":34,"appSlug":205},"mysql-stack",{"id":207,"slug":208,"slugs":209,"title":213,"excerpt":214,"readTime":215,"views":197,"isPinned":19,"noindex":19,"publishedAt":216,"updatedAt":217,"category":218,"categories":219,"featuredImage":30,"bgImage":31,"posterImage":221,"relatedSolution":222},58,"استضافة-redis-على-خادم-vps",{"fr":210,"en":211,"ar":208,"es":212},"heberger-redis-vps","hosting-redis-on-a-vps","alojar-redis-en-un-vps","استضافة ‎Redis‎ على خادم ‎VPS‎: الدليل الشامل","انشر ‎Redis‎ على خادم ‎VPS‎ السحابي: متطلبات ‎RAM‎ و‎CPU‎، الأمان (‎ACL‎ و‎TLS‎)، استمرارية ‎RDB\u002FAOF‎، استكشاف الأخطاء والتوافر العالي.",10,"2026-04-23T00:00:00+00:00","2026-09-08T21:59:59+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[220],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-redis-vps-poster.svg",{"categorySlug":34,"appSlug":223},"redis-stack",true,1794270239178]