−25%

su Windows con pagamento annuale, fino al 31/10. Vai ai piani

EQVPS
Inizia

Come installare PostgreSQL su un VPS e collegarsi in sicurezza

Installa PostgreSQL 16 su Ubuntu, crea un database e un utente, e collegati da remoto senza esporre la porta 5432 a internet: con tunnel SSH o allowlist.

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.

Correlati

FAQ

Devo aprire la porta 5432 a internet?

Meglio di no. Le porte dei database esposte vengono scansionate e attaccate a forza bruta di continuo. Collegati tramite tunnel SSH oppure, se un server applicativo deve collegarsi direttamente, consenti solo il suo IP sia in pg_hba.conf sia nel firewall.

Posso usare PostgreSQL su un piano NAT?

Sì. Le app sullo stesso server si collegano in locale, e tu raggiungi il database dal portatile tramite un tunnel SSH sulla tua porta SSH personale. Quello che un piano NAT non può fare è accettare una connessione diretta in entrata sulla 5432 da un altro server.

Quanta RAM serve a PostgreSQL?

Gira con qualche centinaio di megabyte e usa come cache tutto quello che gli dai. Un punto di partenza comune è shared_buffers intorno al 25% della RAM. Per il database di una piccola app, 2 GB di RAM sul server sono abbondanti.

Come faccio il backup del database?

Usa pg_dump nel formato personalizzato ('pg_dump -Fc') ed eseguilo da cron. Tieni copie anche fuori dal server. I Managed Backups aggiungono punti di ripristino giornalieri dell'intero server.

Quale versione di PostgreSQL ottengo?

Ubuntu 24.04 include PostgreSQL 16 e Debian 12 la 15. Per una versione maggiore più recente, aggiungi il repository apt ufficiale di PostgreSQL (apt.postgresql.org).

Commenti

Ancora nessun commento. Sii il primo.

Lascia un commento

I commenti sono moderati prima di comparire.