[{"data":1,"prerenderedAt":221},["ShallowReactive",2],{"seo-verification":3,"blog-postgresql-على-خادم-vps-قاعدة-بيانات-موثوقة-ومتحكم-بها-ma-ar":6,"promo-bar-likely":220},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-postgresql-على-خادم-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":163,"ctaBody":164,"ctaButton":165,"ctaUrl":166,"relatedPosts":167},56,"postgresql-على-خادم-vps-قاعدة-بيانات-موثوقة-ومتحكم-بها",{"fr":12,"en":13,"ar":10,"es":14},"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,1,false,"2026-04-25T00:00:00+00:00","2026-10-21T15:21:37+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-postgresql-vps-poster.svg",{"categorySlug":34,"appSlug":35},"قواعد-البيانات","postgresql-stack","‎غالباً ما يكون PostgreSQL قاعدة البيانات الموثوقة للتطبيقات المهنية ووجهات برمجة التطبيقات وأدوات التحليل. على خادم VPS من ServOrbit، تتحكّم في الإصدار والتخزين والنسخ الاحتياطية والوصول بدلاً من دفع رسوم قاعدة بيانات مُدارة بحسب الجيجابايت. يغطّي هذا الدليل القرارات المهمّة — البقاء والمستخدمون والشبكة والاستعادة — فضلاً عن ضبط postgresql.conf الدقيق، والنسخ الاحتياطية التلقائية مع اختبار الاستعادة، والتوافر العالي بالبثّ عبر خادمَي VPS، واستكشاف أكثر الأعطال شيوعاً في بيئة الإنتاج.",[38,42,52,55,80,95,98,101,154,157,160],{"type":39,"title":40,"body":41},"h2","‎لماذا الاستضافة الذاتية لـ PostgreSQL على خادم VPS","‎تفرض قواعد البيانات المُدارة (RDS وCloud SQL) رسوماً بحسب الجيجابايت المخزّن وبحسب IOPS وبحسب الاتصال، وغالباً ما تحدّ من الامتدادات المتاحة. بنشر PostgreSQL على خادم VPS خاص بك، تُفعّل `pg_stat_statements` و`PostGIS` و`pgvector` أو `TimescaleDB` دون قيود، وتختار إصدارك المحدّد (15 و16 و17) وتُبقي بيانات\"ك في نطاق قضائي تتحكّم فيه. يوفّر خادم VPS بقرص SSD أزمنة كمون I\u002FO منخفضة جداً، مثالية لأحمال العمل المعاملاتية لتطبيق في بيئة الإنتاج. تدفع اشتراكاً ثابتاً وقابلاً للتوقّع، وتقرّر وحدك استراتيجيتك في التماثل والتشفير والاحتفاظ بالنسخ الاحتياطية.",{"type":43,"title":44,"items":45},"ul","‎الفوائد الملموسة لـ PostgreSQL مستضاف ذاتياً",[46,47,48,49,50,51],"‎تكلفة ثابتة وقابلة للتوقّع: لا فوترة بحسب الجيجابايت أو IOPS أو عدد الاتصالات النشطة.","‎امتدادات حرّة: `pgvector` للذكاء الاصطناعي، و`PostGIS` للبيانات الجغرافية المكانية، و`TimescaleDB` للسلاسل الزمنية.","‎تحكّم كامل في النسخ الاحتياطية: `pg_dump` مجدول، أو `pg_basebackup`، أو تماثل فيزيائي نحو خادم VPS ثانٍ.","‎ضبط دقيق لـ `postgresql.conf` (shared_buffers وwork_mem وWAL) مستحيل لدى معظم العروض المُدارة.","‎سيادة البيانات: تبقى بيانات\"ك على بنية تحتية تختارها أنت.","‎وصول فعلي بصلاحيات المستخدم الأعلى (superuser) للتدقيق والتنمية والتحسين دون تذكرة دعم.",{"type":39,"title":53,"body":54},"‎المتطلّبات العتادية والبرمجية","‎لنسخة PostgreSQL للتطوير أو لمشروع إنتاج صغير، جهّز خادم VPS بمعالجين افتراضيين (2 vCPU) و4 جيجابايت من الذاكرة و40 جيجابايت من قرص SSD بنوع NVMe: يحبّ PostgreSQL الذاكرة لتخزين صفحاته المؤقّت. أمّا لحمل أكثر كثافةً (عدّة مئات من الاتصالات أو مجموعات بيانات بعشرات الجيجابايتات)، فاستهدف 4 vCPU و8 جيجابايت من الذاكرة. أمّا من جهة البرمجيات: Ubuntu 22.04 أو 24.04 LTS، وDocker Engine وإضافة Docker Compose v2، واسم نطاق يشير إلى خادم VPS إذا كشفت الوصول عن بُعد، وجدار حماية `ufw` مُعدّ للسماح بمرور الحدّ الأدنى الصارم فقط. احجز أيضاً وحدة تخزين Docker مخصّصة لـ `PGDATA` لفصل البيانات عن الحاوية.",{"type":56,"title":57,"steps":58},"steps","‎نشر PostgreSQL باستخدام Docker في بيئة الإنتاج",[59,62,65,68,71,74,77],{"title":60,"body":61},"‎تجهيز خادم VPS وجدار الحماية","‎اتّصل عبر SSH، وحدّث النظام باستخدام `apt update && apt upgrade -y`، وثبّت Docker عبر `curl -fsSL https:\u002F\u002Fget.docker.com | sh`. احظر المنفذ 5432 من الخارج باستخدام `ufw deny 5432`: يجب ألّا تُكشف قاعدة البيانات مباشرةً للإنترنت أبداً.",{"title":63,"body":64},"‎كتابة ملفّ docker-compose.yml","‎أنشئ خدمة `postgres:17`، وركّب وحدة تخزين مُسمّاة على `\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata`، وعرّف `POSTGRES_PASSWORD` و`POSTGRES_DB` و`POSTGRES_USER` عبر ملفّ `.env` لا يُودَع (commit) أبداً. أضف `shm_size: 256mb` لعمليات الفرز الكبيرة و`healthcheck` باستخدام `pg_isready`.",{"title":66,"body":67},"‎تشغيل قاعدة البيانات وتهيئتها","‎ابدأ بـ `docker compose up -d`، وتحقّق من السجلّات عبر `docker compose logs -f postgres`، ثمّ اتّصل باستخدام `docker compose exec postgres psql -U app -d mabase`. أنشئ أدوار التطبيقية بصلاحيات دنيا بدلاً من استخدام المستخدم الأعلى.",{"title":69,"body":70},"‎كشف الوصول عبر نفق أو وكيل TLS","‎للوصول الآمن عن بُعد، لا تفتح المنفذ 5432 بنصّ صريح أبداً: استخدم نفق SSH (`ssh -L 5432:localhost:5432`) أو ضع `pgbouncer` خلف وكيل عكسي. فعّل SSL من جهة PostgreSQL بشهادة Let's Encrypt مُركّبة في الحاوية (`ssl = on` في `postgresql.conf`).",{"title":72,"body":73},"‎ضبط الإعدادات","‎اضبط `shared_buffers` عند نحو 25% من الذاكرة، و`effective_cache_size` عند 50-75%، و`work_mem` بحسب استعلاماتك. فعّل `pg_stat_statements` لتحديد الاستعلامات البطيئة. استخدم أداة PGTune كنقطة انطلاق.",{"title":75,"body":76},"‎أتمتة النسخ الاحتياطية","‎جدول `pg_dump` يومياً عبر مهمّة cron على المضيف، واضغط بتنسيق `.dump` المخصّص، وانسخ الأرشيفات إلى تخزين خارجي. اختبر الاستعادة بانتظام باستخدام `pg_restore`: النسخة الاحتياطية غير المختبرة غير موجودة.",{"title":78,"body":79},"‎أول تسجيل دخول","‎لا يُنشر pgAdmin على الإنترنت: افتح نفقاً من جهازك بالأمر ssh -L 5050:127.0.0.1:5050 root@\u003CIP> ثم انتقل إلى http:\u002F\u002F127.0.0.1:5050 وسجّل الدخول بالبريد admin@local.host وكلمة المرور المزوّدة. بعد ذلك أضف خادمك عبر «Add New Server» مع المضيف db والمنفذ 5432 والمستخدم postgres وكلمة المرور نفسها.",{"type":56,"title":81,"steps":82},"‎ضبط postgresql.conf للإنتاج",[83,86,89,92],{"title":84,"body":85},"‎shared_buffers: ذاكرة التخزين المؤقّت في PostgreSQL","‎اضبط `shared_buffers = 25%` من إجمالي ذاكرة RAM على خادم VPS. على 8 جيجابايت من الذاكرة، يُعطي ذلك 2 جيجابايت. يتحكّم هذا المعامل في حجم ذاكرة التخزين المؤقّت للصفحات المشتركة بين جميع عمليات PostgreSQL — وهو أهمّ رافعة لعمليات القراءة المتكرّرة. يتيح ملفّ `postgresql.conf` مخصّص مُركّب عبر Docker تطبيق هذه الإعدادات عند بدء تشغيل الحاوية.",{"title":87,"body":88},"‎work_mem وmax_connections","‎اضبط `work_mem` بناءً على استعلامات الفرز والضمّ: 4 إلى 16 ميجابايت معقول لأعباء العمل المختلطة. انتبه: يمكن لكل اتصال تخصيص `work_mem` عدة مرات في وقت واحد، لذا اضرب في `max_connections` لتقدير ذروة استهلاك الذاكرة. لـ 100 اتصال تطبيقي، يكفي `max_connections = 150`؛ وما فوق ذلك استخدم `pgbouncer` في وضع المعاملات لتوحيد الاتصالات.",{"title":90,"body":91},"‎التسجيل واكتشاف الاستعلامات البطيئة","‎فعّل `logging_collector = on` و`log_min_duration_statement = \u003Cseuil_ms>` (ms) لتسجيل جميع الاستعلامات التي تتجاوز 200 مللي ثانية. يرفق ربط هذا الإعداد بـ `pg_stat_statements` (امتداد يُفعَّل في `shared_preload_libraries`) عرضاً مجمّعاً للاستعلامات الأكثر تكلفةً دون فحص كل ملفّ سجلّ.",{"title":93,"body":94},"‎WAL ونقاط التفتيش","‎زد `wal_buffers` إلى 16 ميجابايت واضبط `checkpoint_completion_target` على 0.9 لتوزيع كتابات نقاط التفتيش على مدار الوقت. على SSD بواجهة NVMe، يشجّع `random_page_cost = 1.1` (عوضاً عن الافتراضي 4.0) المخطّط على اختيار فحص الفهارس بدلاً من المسح التسلسلي.",{"type":39,"title":96,"body":97},"‎النسخ الاحتياطية التلقائية واستراتيجية الاستعادة","‎النسخة الاحتياطية غير المختبرة غير موجودة. ثلاثة نُهُج تكميلية تغطّي احتياجات مختلفة.\n\n**`pg_dump` + cron** هو نقطة البداية: سهل الإعداد، ينتج ملفاً منطقياً بصيغة SQL قابلاً للاستعادة على أي إصدار متوافق. جدوله في الساعة الثالثة صباحاً، اضغط باستخدام `--format=custom`، وانسخ الأرشيف إلى تخزين خارجي باستخدام `rclone` أو `scp`. احتفظ بـ 7 أيام محلياً و30 يوماً عن بُعد.\n\n**`pgBackRest`** يذهب أبعد: يدعم النسخ الاحتياطية التزايدية والتفاضلية والاستعادة في الوقت المحدّد (PITR) من أرشيفات WAL. وهو الحلّ الموصى به متى تجاوزت قاعدة بياناتك بضعة جيجابايتات أو احتجت إلى الرجوع إلى دقيقة بعينها بعد حذف عرضي.\n\n**اختبار الاستعادة الشهري**: نفّذ `pg_restore -d test_restore \u003Cdump>` بانتظام على خادم VPS اختباري للتحقّق من سلامة الأرشيفات.",{"type":39,"title":99,"body":100},"‎التوافر العالي الخفيف بدون Kubernetes","‎لا يستلزم التوافر العالي لـ PostgreSQL على خادم VPS بالضرورة Patroni أو مجموعة Pacemaker معقّدة. تغطّي التماثل بالبثّ الأصلي معظم الاحتياجات بأدنى قدر من الإعداد.\n\n**التماثل بالبثّ اليدوي**: على خادم VPS الأساسي، فعّل `wal_level = replica`، أضف مستخدماً مخصّصاً `replicator` في `pg_hba.conf`، واضبط `max_wal_senders = 3`. على خادم VPS الثانوي (standby)، شغّل `pg_basebackup` لتهيئة نسخة فيزيائية، أنشئ ملفّ `standby.signal`، وعدّل `primary_conninfo` في `postgresql.conf`. يبدأ التماثل تلقائياً عند إعادة التشغيل. مع `hot_standby = on`، يقبل الخادم الاحتياطي استعلامات القراءة فقط.\n\n**Patroni** يضيف التحويل التلقائي للفشل: يراقب الخادم الأساسي عبر مفتاح في `etcd` أو `Consul`، ويرقّي الخادم الاحتياطي تلقائياً إذا أصبح الأساسي غير متاح لأكثر من 30 ثانية.\n\n**مراقبة تأخّر التماثل**: `SELECT pg_wal_lsn_diff(pg_current_wal_lsn(), sent_lsn) AS lag_bytes FROM pg_stat_replication` على الخادم الأساسي يُعطيك التأخّر الفوري بالبايت.",{"type":102,"title":103,"columns":104,"rows":110},"comparison","‎PostgreSQL المستضاف ذاتياً مقابل RDS مقابل Supabase مقابل Neon",[105,106,107,108,109],"‎المعيار","‎VPS ServOrbit (مستضاف ذاتياً)","‎AWS RDS PostgreSQL","‎Supabase (سحابي)","‎Neon (بدون خادم)",[111,117,123,129,134,140,145,150],[112,113,114,115,116],"‎التكلفة الشهرية (صغير)","‎99 درهم\u002Fشهر (سعر ثابت)","‎~35-70 $\u002Fشهر (db.t3.medium)","‎~25 $\u002Fشهر (Pro)","‎~19 $\u002Fشهر (Launch)",[118,119,120,121,122],"‎التحكّم في postgresql.conf","‎كامل","‎جزئي (مجموعات المعاملات)","‎محدود","‎الحدّ الأدنى",[124,125,126,127,128],"‎الامتدادات المخصّصة","‎الكلّ (pgvector وPostGIS…)","‎قائمة مقيّدة","‎pgvector وPostGIS","‎محدودة",[130,131,132,133,132],"‎PITR","‎نعم مع pgBackRest","‎نعم (أصلي)","‎نعم (Pro+)",[135,136,137,138,139],"‎التوافر العالي","‎تماثل يدوي أو Patroni","‎Multi-AZ أصلي","‎أصلي","‎متعدّد المناطق أصلي",[141,142,143,144,144],"‎عبء الصيانة","‎مرتفع (يتطلّب DBA)","‎منخفض","‎منخفض جداً",[146,147,148,148,149],"‎البيانات خارج الولايات المتحدة","‎نعم (VPS مغربي)","‎حسب المنطقة","‎الولايات المتحدة\u002Fأوروبا فقط",[151,152,153,153,153],"‎Superuser \u002F الامتدادات","‎نعم","‎لا",{"type":39,"title":155,"body":156},"‎استكشاف أخطاء الإنتاج الشائعة","‎**قاتل OOM يوقف PostgreSQL**: إشارة `OOM` في `\u002Fvar\u002Flog\u002Fsyslog` تعني نفاد الذاكرة. الأسباب الرئيسية: `shared_buffers` مرتفع جداً، أو `work_mem` مُعايَر بشكل سيئ مقارنةً بعدد الاتصالات. التشخيص: `cat \u002Fproc\u002Fmeminfo | grep -E 'MemFree|Cached|Buffers'`. الحلّ: تقليل `work_mem`، تفعيل `huge_pages = try` في `postgresql.conf`، أو ترقية خادم VPS.\n\n**نفاد الاتصالات** (`FATAL: sorry, too many clients already`): وُصل إلى `max_connections`. على المدى القصير: `SELECT count(*), state FROM pg_stat_activity GROUP BY state` لتحديد الاتصالات الخاملة. على المدى البعيد: انشر `pgbouncer` في وضع المعاملات أمام PostgreSQL.\n\n**تشبّع الـ autovacuum**: الجداول التي تحتوي على عمليات `UPDATE` أو `DELETE` كثيرة تراكم صفوفاً ميتة. `SELECT relname, n_dead_tup, last_autovacuum FROM pg_stat_user_tables ORDER BY n_dead_tup DESC LIMIT 10` يكشف الجداول الإشكالية. سرّع autovacuum بتقليل `autovacuum_vacuum_scale_factor` إلى 0.01 للجداول الحرجة.\n\n**نقاط تفتيش متكرّرة جداً** (`LOG: checkpoint occurring too frequently`): زد `max_wal_size` إلى 2-4 جيجابايت و`checkpoint_timeout` إلى 15-30 دقيقة لتوزيع نقاط التفتيش.",{"type":158,"body":159},"tip","‎لتحقيق التوافر العالي، انشر خادم VPS ثانياً في تماثل فيزيائي بالبثّ (`primary_conninfo` + فتحة تماثل). تحصل على نسخة احتياطية ساخنة (standby) جاهزة للتبديل، ويمكنك تحويل استعلامات القراءة الثقيلة إليها (`hot_standby = on`) لتخفيف العبء عن الخادم الأساسي. واختزنه مع `pgBackRest` لنسخ احتياطية تزايدية تفاضلية، تبلغ نقطة هدف الاستعادة (RPO) قدره بضع دقائق دون الاعتماد على خدمة مُدارة.",{"type":158,"title":161,"body":162},"‎الوثائق الرسمية","‎للإعداد المتقدّم والخيارات الخاصة بالأداة وتغييرات الإصدار، ارجع إلى \u003Ca href=\"https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">الوثائق الرسمية لـ ‎PostgreSQL\u003C\u002Fa>. يغطّي هذا الدليل النشر المباشر على خادم VPS من ServOrbit؛ وتبقى وثائق الناشر المرجع للضبط الدقيق.","انشر PostgreSQL الخاص بك في بضع دقائق","أطلق خادم VPS Cloud من ServOrbit بقالب Docker مُعدّ مسبقًا وقرص SSD: البيئة المثالية لاستضافة PostgreSQL دون فوترة بحسب الجيجابايت.","أعدّ خادم VPS Cloud الخاص بي","\u002Fvps-cloud",[168,186,204],{"id":169,"slug":170,"slugs":171,"title":175,"excerpt":176,"readTime":17,"views":177,"isPinned":19,"noindex":19,"publishedAt":178,"updatedAt":179,"category":180,"categories":181,"featuredImage":30,"bgImage":31,"posterImage":183,"relatedSolution":184},57,"استضافة-mysql-على-خادم-vps",{"fr":172,"en":173,"ar":170,"es":174},"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},[182],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-mysql-vps-poster.svg",{"categorySlug":34,"appSlug":185},"mysql-stack",{"id":187,"slug":188,"slugs":189,"title":193,"excerpt":194,"readTime":195,"views":177,"isPinned":19,"noindex":19,"publishedAt":196,"updatedAt":197,"category":198,"categories":199,"featuredImage":30,"bgImage":31,"posterImage":201,"relatedSolution":202},58,"استضافة-redis-على-خادم-vps",{"fr":190,"en":191,"ar":188,"es":192},"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},[200],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-redis-vps-poster.svg",{"categorySlug":34,"appSlug":203},"redis-stack",{"id":205,"slug":206,"slugs":207,"title":211,"excerpt":212,"readTime":213,"views":177,"isPinned":19,"noindex":19,"publishedAt":214,"updatedAt":215,"category":216,"categories":217,"featuredImage":30,"bgImage":31,"posterImage":219,"relatedSolution":30},59,"استضافة-mongodb-على-خادم-vps",{"fr":208,"en":209,"ar":206,"es":210},"heberger-mongodb-vps","hosting-mongodb-on-a-vps","alojar-mongodb-en-un-vps","استضافة MongoDB على خادم VPS","استضِف MongoDB على خادم VPS السحابي الخاص بك: نشر عبر Docker، وreplica set، ومصادقة، وفهرسة، ونسخ احتياطية محكمة.",3,"2026-04-22T00:00:00+00:00","2026-09-08T22:00:02+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[218],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-mongodb-vps-poster.svg",true,1794270357233]