PostgreSQL si installa con un solo comando. Dove si sbaglia è l'accesso remoto: si apre la porta 5432 al mondo, si mette una password e poi ci si chiede perché i log siano pieni di tentativi di accesso. Questa guida installa Postgres su Ubuntu 24.04, crea un database e mostra due modi sicuri per collegarsi dall'esterno.
1. Installazione
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
Su Ubuntu 24.04 è PostgreSQL 16. Di default ascolta solo su localhost; lascialo così a meno che tu non abbia un motivo.
2. Crea un utente e un database
sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL
Le app sullo stesso server si collegano con postgresql://app:PASSWORD@localhost:5432/appdb.
3. Collegarti dal portatile: tunnel SSH (consigliato)
Niente da aprire, niente da configurare sul server. Il tunnel inoltra una porta locale attraverso SSH:
ssh -N -L 5433:localhost:5432 root@203.0.113.10
Su un piano NAT, aggiungi la tua porta SSH personale dal pannello:
ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host
Finché il tunnel è attivo, punta il tuo client del database su localhost:5433. SSH cifra tutto e la porta 5432 resta chiusa verso internet. Strumenti grafici come DBeaver e pgAdmin hanno una scheda «tunnel SSH» che fa la stessa cosa.
4. Accesso diretto per un altro server (allowlist)
Se un server applicativo altrove deve collegarsi direttamente, consenti solo il suo IP. Per questo il server del database deve stare su un piano con IP dedicato, perché i piani NAT non accettano connessioni in entrata oltre a SSH.
In /etc/postgresql/16/main/postgresql.conf:
listen_addresses = '*'
In fondo a /etc/postgresql/16/main/pg_hba.conf:
hostssl appdb app 198.51.100.20/32 scram-sha-256
Apri il firewall per quell'unico indirizzo e riavvia:
ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql
hostssl impone una connessione cifrata; il pacchetto di Ubuntu include un certificato autofirmato, quindi i client devono collegarsi con sslmode=require.
5. Prime impostazioni sensate
Per un server con 2 GB di RAM, in postgresql.conf:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
Riavvia dopo la modifica. Basta per la maggior parte delle piccole app; affina quando vedi le query reali.
6. Backup
Un dump notturno, conservato per una settimana:
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 produce un dump compresso che si ripristina con pg_restore. Copia i dump anche fuori dal server; i Managed Backups aggiungono punti di ripristino giornalieri dell'intera macchina.
Commenti
Ancora nessun commento. Sii il primo.