Η 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 προσθέτουν ημερήσια σημεία επαναφοράς ολόκληρου του μηχανήματος.
Σχόλια
Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.