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 RAM, ב-postgresql.conf:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
הפעילו מחדש אחרי השינוי. לרוב האפליקציות הקטנות זה מספיק; כווננו בדיוק אחרי שתראו שאילתות אמיתיות.
6. גיבויים
dump כל לילה, נשמר שבוע:
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 יוצר dump דחוס שמשוחזר עם pg_restore. העתיקו את ה-dumps גם מחוץ לשרת; Managed Backups מוסיפים נקודות שחזור יומיות של כל המכונה.
תגובות
אין עדיין תגובות. היו הראשונים.