−25%

על Windows בתשלום שנתי, עד 31.10. לחבילות

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 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 מוסיפים נקודות שחזור יומיות של כל המכונה.

קשור

שאלות נפוצות

האם לפתוח את פורט 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. לגרסה ראשית חדשה יותר, הוסיפו את מאגר ה-apt הרשמי של PostgreSQL ‏(apt.postgresql.org).

תגובות

אין עדיין תגובות. היו הראשונים.

השאירו תגובה

התגובות עוברות מודרציה לפני שהן מופיעות.