PostgreSQL se instala con un solo comando. Donde la gente se equivoca es con el acceso remoto: abre el puerto 5432 al mundo, pone una contraseña y luego se pregunta por qué los registros están llenos de intentos de inicio de sesión. Esta guía instala Postgres en Ubuntu 24.04, crea una base de datos y muestra dos formas seguras de conectarse desde fuera.
1. Instalación
apt update && apt install -y postgresql
systemctl status postgresql --no-pager
En Ubuntu 24.04 es PostgreSQL 16. Por defecto solo escucha en localhost; déjalo así salvo que tengas un motivo.
2. Crea un usuario y una base de datos
sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL
Las aplicaciones del mismo servidor se conectan con postgresql://app:PASSWORD@localhost:5432/appdb.
3. Conectarte desde tu portátil: túnel SSH (recomendado)
Nada que abrir, nada que configurar en el servidor. El túnel redirige un puerto local a través de SSH:
ssh -N -L 5433:localhost:5432 root@203.0.113.10
En un plan NAT, añade tu puerto SSH personal del panel:
ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host
Mientras el túnel está activo, apunta tu cliente de base de datos a localhost:5433. SSH lo cifra todo y el puerto 5432 sigue cerrado a internet. Herramientas gráficas como DBeaver y pgAdmin tienen una pestaña de «túnel SSH» que hace lo mismo.
4. Acceso directo para otro servidor (lista de permitidos)
Si un servidor de aplicaciones en otro lugar debe conectarse directamente, permite solo su IP. Para ello, el servidor de base de datos debe estar en un plan con IP dedicada, porque los planes NAT no aceptan conexiones entrantes salvo SSH.
En /etc/postgresql/16/main/postgresql.conf:
listen_addresses = '*'
Al final de /etc/postgresql/16/main/pg_hba.conf:
hostssl appdb app 198.51.100.20/32 scram-sha-256
Abre el cortafuegos para esa única dirección y reinicia:
ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql
hostssl obliga a usar una conexión cifrada; el paquete de Ubuntu trae un certificado autofirmado, así que los clientes deben conectarse con sslmode=require.
5. Primeros ajustes sensatos
Para un servidor con 2 GB de RAM, en postgresql.conf:
shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB
Reinicia tras el cambio. Basta para la mayoría de apps pequeñas; afina cuando veas consultas reales.
6. Copias de seguridad
Un volcado nocturno, conservado una semana:
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 genera un volcado comprimido que se restaura con pg_restore. Copia también los volcados fuera del servidor; Managed Backups añaden puntos de restauración diarios de toda la máquina.
Comentarios
Aún no hay comentarios. Sé el primero.