PostgreSQL en un VPS Ubuntu paso a paso
Montar PostgreSQL en un servidor Ubuntu es cuestión de minutos, pero hay detalles de configuración que conviene entender desde el principio para no llevarte sorpresas cuando intentes conectar desde otra máquina.
1. Instalación desde los repositorios
Ubuntu incluye PostgreSQL en sus repos oficiales. Actualiza el índice y lanza la instalación:
sudo apt update
sudo apt install postgresql postgresql-contrib -y
El paquete postgresql-contrib trae módulos extra muy útiles como pg_trgm para búsquedas de texto. Al terminar, PostgreSQL arranca automáticamente y crea un usuario del sistema llamado postgres.
2. Acceder al shell psql
PostgreSQL usa "peer authentication" por defecto: el usuario del sistema se mapea al usuario de la base. Para entrar:
sudo -u postgres psql
Verás el prompt postgres=#. Estás dentro. Prueba \l para listar bases, \du para listar usuarios y \q para salir.
3. Crear un usuario y una base
Dentro de psql:
CREATE USER miapp WITH PASSWORD 'clave_segura_aqui';
CREATE DATABASE tienda OWNER miapp;
GRANT ALL PRIVILEGES ON DATABASE tienda TO miapp;
Con esto tienes un usuario propio de la aplicación y una base suya. Nunca uses el superusuario postgres para tu app en producción.
4. Permitir conexiones externas
Por defecto PostgreSQL solo escucha en localhost. Edita el archivo principal:
sudo nano /etc/postgresql/16/main/postgresql.conf
Busca la línea listen_addresses y déjala así:
listen_addresses = '*'
Ahora ajusta las reglas de autenticación en pg_hba.conf:
sudo nano /etc/postgresql/16/main/pg_hba.conf
Añade al final una línea del estilo:
host tienda miapp 192.168.1.0/24 scram-sha-256
Esto permite al usuario miapp conectarse a la base tienda desde tu red local con contraseña. Ajusta el rango de IPs a tu caso real. Nunca abras 0.0.0.0/0 sin antes poner un firewall delante.
5. Reiniciar y probar
sudo systemctl restart postgresql
sudo ufw allow 5432/tcp
Desde otra máquina:
psql -h IP_DEL_SERVIDOR -U miapp -d tienda
Te pedirá la clave y entrarás. Si falla, revisa los logs en /var/log/postgresql/: PostgreSQL es muy claro al explicar por qué rechaza una conexión.
Consejos finales
Cambia el puerto 5432 si vas a exponer el servicio a Internet, configura backups automáticos con pg_dump y considera montar un usuario específico de solo lectura para reportes. Una buena configuración inicial te ahorra problemas por años.