−25%

على الدفع السنوي لـ Windows حتى 31 أكتوبر. عرض الخطط

EQVPS

كيف تثبّت PostgreSQL على VPS وتتصل به بأمان

ثبّت PostgreSQL 16 على Ubuntu، وأنشئ قاعدة بيانات ومستخدمًا، واتصل عن بُعد دون كشف المنفذ 5432 للإنترنت: عبر نفق SSH أو قائمة سماح.

يُثبَّت PostgreSQL بأمر واحد. أين يخطئ الناس هو الوصول عن بُعد: يفتحون المنفذ 5432 للعالم كله، ويضعون كلمة مرور، ثم يتساءلون لماذا تمتلئ السجلات بمحاولات تسجيل الدخول. هذا الدليل يثبّت Postgres على Ubuntu 24.04، وينشئ قاعدة بيانات، ويعرض طريقتين آمنتين للاتصال من الخارج.

1. التثبيت

apt update && apt install -y postgresql
systemctl status postgresql --no-pager

على Ubuntu 24.04 هذا هو PostgreSQL 16. افتراضيًا يستمع فقط على localhost؛ أبقِه كذلك ما لم يكن لديك سبب.

2. أنشئ مستخدمًا وقاعدة بيانات

sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL

التطبيقات على الخادم نفسه تتصل بـ postgresql://app:PASSWORD@localhost:5432/appdb.

3. اتصل من حاسوبك المحمول: نفق SSH (مُوصى به)

لا شيء تفتحه، ولا شيء تضبطه على الخادم. النفق يعيد توجيه منفذ محلي عبر SSH:

ssh -N -L 5433:localhost:5432 root@203.0.113.10

على خطة NAT أضف منفذ SSH الشخصي الخاص بك من اللوحة:

ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host

ما دام النفق مفتوحًا، وجّه عميل قاعدة البيانات إلى localhost:5433. يشفّر SSH كل شيء ويبقى المنفذ 5432 مغلقًا أمام الإنترنت. الأدوات الرسومية مثل DBeaver وpgAdmin فيها تبويب «SSH tunnel» يفعل الشيء نفسه.

4. وصول مباشر لخادم آخر (قائمة سماح)

إن كان خادم تطبيق في مكان آخر يحتاج إلى الاتصال مباشرة، فاسمح لعنوان IP الخاص به فقط. هذا يتطلب أن يكون خادم قاعدة البيانات على خطة بعنوان IP مخصّص، لأن خطط NAT لا تقبل اتصالات واردة سوى SSH.

في /etc/postgresql/16/main/postgresql.conf:

listen_addresses = '*'

في نهاية /etc/postgresql/16/main/pg_hba.conf:

hostssl  appdb  app  198.51.100.20/32  scram-sha-256

افتح جدار الحماية لذلك العنوان وحده وأعد التشغيل:

ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql

‏hostssl يفرض اتصالات مشفّرة؛ وحزمة Ubuntu تأتي بشهادة موقّعة ذاتيًا، لذا يجب أن تتصل العملاء بـ sslmode=require.

5. إعدادات أولية معقولة

لخادم بذاكرة 2 GB، في postgresql.conf:

shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB

أعد التشغيل بعد التغيير. لمعظم التطبيقات الصغيرة هذا يكفي؛ اضبط بدقة بعد أن ترى الاستعلامات الحقيقية.

6. النسخ الاحتياطي

تفريغ كل ليلة، يُحتفظ به أسبوعًا:

mkdir -p /var/backups/pg && chown postgres /var/backups/pg
cat > /etc/cron.d/pg-backup <<'EOF'
30 3 * * * postgres pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%u).dump
EOF

‏-Fc ينتج تفريغًا مضغوطًا يُستعاد باستخدام pg_restore. انسخ التفريغات خارج الخادم أيضًا؛ وManaged Backups تضيف نقاط استعادة يومية للجهاز كله.

ذو صلة

الأسئلة الشائعة

هل يجب أن أفتح المنفذ 5432 للإنترنت؟

الأفضل ألّا تفعل. منافذ قواعد البيانات المفتوحة تتعرض لمسح مستمر وهجمات تخمين. اتصل عبر نفق SSH، أو إن كان خادم تطبيق يحتاج إلى الاتصال مباشرة، فاسمح لعنوان IP الخاص به فقط، في pg_hba.conf وفي جدار الحماية معًا.

هل يمكنني استخدام PostgreSQL على خطة NAT؟

نعم. التطبيقات على الخادم نفسه تتصل محليًا، وأنت تصل إلى قاعدة البيانات من حاسوبك المحمول عبر نفق SSH على منفذ SSH الشخصي الخاص بك. ما لا تستطيعه خطة NAT هو قبول اتصالات مباشرة واردة إلى 5432 من خوادم أخرى.

كم RAM يحتاج PostgreSQL؟

يعمل على بضع مئات من الميغابايتات ويستخدم كل ما تمنحه كذاكرة تخزين مؤقت. نقطة بداية شائعة هي ضبط shared_buffers على نحو 25% من RAM. لقاعدة بيانات تطبيق صغير، خادم بـ 2 GB RAM أكثر من كافٍ.

كيف آخذ نسخة احتياطية من قاعدة البيانات؟

استخدم pg_dump بالتنسيق المخصّص ('pg_dump -Fc') وشغّله من cron. احتفظ بنسخ خارج الخادم أيضًا. ‏Managed Backups تضيف نقاط استعادة يومية للخادم كله.

أي إصدار من PostgreSQL سأحصل عليه؟

‏Ubuntu 24.04 يأتي مع PostgreSQL 16، وDebian 12 مع 15. لإصدار رئيسي أحدث، أضف مستودع PostgreSQL الرسمي لـ apt ‏(apt.postgresql.org).

التعليقات

لا تعليقات بعد. كن الأول.

اترك تعليقًا

تُراجَع التعليقات قبل ظهورها.