يُثبَّت 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 تضيف نقاط استعادة يومية للجهاز كله.
التعليقات
لا تعليقات بعد. كن الأول.