Instalar PostgreSQL en Ubuntu y crear tu primera base de datos
Dedicated & VPS
24

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.