−25%

στα Windows με ετήσια χρέωση, έως 31/10. Δείτε τα πακέτα

EQVPS

Πώς να εγκαταστήσετε PostgreSQL σε VPS και να συνδέεστε με ασφάλεια

Εγκαταστήστε PostgreSQL 16 σε Ubuntu, δημιουργήστε βάση και χρήστη και συνδεθείτε απομακρυσμένα χωρίς να εκθέσετε τη θύρα 5432 στο διαδίκτυο: με τούνελ SSH ή λίστα επιτρεπόμενων.

Η PostgreSQL εγκαθίσταται με μία εντολή. Εκεί που κάνει λάθος ο κόσμος είναι η απομακρυσμένη πρόσβαση: ανοίγουν τη θύρα 5432 σε όλο τον κόσμο, βάζουν έναν κωδικό και μετά απορούν γιατί τα logs είναι γεμάτα απόπειρες σύνδεσης. Αυτός ο οδηγός εγκαθιστά την 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

Οι εφαρμογές στον ίδιο server συνδέονται με postgresql://app:PASSWORD@localhost:5432/appdb.

3. Συνδεθείτε από το laptop σας: τούνελ SSH (προτείνεται)

Τίποτα για άνοιγμα, τίποτα για ρύθμιση στον server. Το τούνελ προωθεί μια τοπική θύρα μέσω 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

Όσο το τούνελ είναι ανοιχτό, στρέψτε τον client της βάσης στο localhost:5433. Το SSH κρυπτογραφεί τα πάντα και η θύρα 5432 μένει κλειστή προς το διαδίκτυο. Γραφικά εργαλεία όπως το DBeaver και το pgAdmin έχουν καρτέλα «SSH tunnel» που κάνει το ίδιο.

4. Άμεση πρόσβαση για άλλον server (λίστα επιτρεπόμενων)

Αν ένας server εφαρμογής κάπου αλλού πρέπει να συνδέεται απευθείας, επιτρέψτε μόνο τη δική του IP. Αυτό απαιτεί ο server της βάσης να είναι σε πακέτο με αποκλειστικό 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

Ανοίξτε το firewall μόνο για αυτή τη διεύθυνση και κάντε επανεκκίνηση:

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

Το hostssl επιβάλλει κρυπτογραφημένες συνδέσεις· το πακέτο του Ubuntu έρχεται με self-signed πιστοποιητικό, οπότε οι clients πρέπει να συνδέονται με sslmode=require.

5. Λογικές αρχικές ρυθμίσεις

Για server με 2 GB RAM, στο postgresql.conf:

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

Κάντε επανεκκίνηση μετά την αλλαγή. Για τις περισσότερες μικρές εφαρμογές αυτό αρκεί· κάντε λεπτές ρυθμίσεις αφού δείτε πραγματικά queries.

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 και εκτός server· τα Managed Backups προσθέτουν ημερήσια σημεία επαναφοράς ολόκληρου του μηχανήματος.

Σχετικά

Συχνές ερωτήσεις

Πρέπει να ανοίξω τη θύρα 5432 στο διαδίκτυο;

Καλύτερα όχι. Οι ανοιχτές θύρες βάσεων σαρώνονται συνεχώς και δέχονται επιθέσεις μαντέματος κωδικών. Συνδεθείτε μέσω τούνελ SSH, ή αν ένας server εφαρμογής πρέπει να συνδέεται απευθείας, επιτρέψτε μόνο τη δική του IP, και στο pg_hba.conf και στο firewall.

Μπορώ να χρησιμοποιήσω PostgreSQL σε πακέτο NAT;

Ναι. Οι εφαρμογές στον ίδιο server συνδέονται τοπικά, κι εσείς φτάνετε τη βάση από το laptop σας μέσω τούνελ SSH στην προσωπική σας θύρα SSH. Αυτό που δεν μπορεί ένα πακέτο NAT είναι να δεχτεί άμεσες εισερχόμενες συνδέσεις στην 5432 από άλλους servers.

Πόση RAM χρειάζεται η PostgreSQL;

Τρέχει με μερικές εκατοντάδες megabytes και χρησιμοποιεί ό,τι της δώσετε ως cache. Ένα συνηθισμένο σημείο εκκίνησης είναι το shared_buffers στο περίπου 25% της RAM. Για τη βάση μιας μικρής εφαρμογής, ένας server με 2 GB RAM είναι υπεραρκετός.

Πώς κρατώ αντίγραφα ασφαλείας της βάσης;

Χρησιμοποιήστε το pg_dump σε προσαρμοσμένη μορφή ('pg_dump -Fc') και τρέξτε το από cron. Κρατάτε αντίγραφα και εκτός server. Τα Managed Backups προσθέτουν ημερήσια σημεία επαναφοράς ολόκληρου του server.

Ποια έκδοση της PostgreSQL θα πάρω;

Το Ubuntu 24.04 έρχεται με PostgreSQL 16 και το Debian 12 με 15. Για νεότερη κύρια έκδοση, προσθέστε το επίσημο apt repository της PostgreSQL (apt.postgresql.org).

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.

Αφήστε ένα σχόλιο

Τα σχόλια ελέγχονται πριν εμφανιστούν.