Skip to main content

Implementar PostgreSQL en servidor Windows

· 3 min read
Héctor Mansilla Arias
Artesano Digital

Puede parecer ilógico hacer esta entrada, pero entre la fragilidad de la memoria y algunos pasos adicionales realizados en la instalación ameritan estas líneas. El escenario: Un servidor Windows 2019 sin acceso a Internet y con sus actualizaciones al día vía WSUS, nada extraño ¿o me equivoco? El punto es que nos enfrentábamos a una conexión vía VPN que sólo tiene abierto algunos puertos conocidos y claramente el puerto de Pg por defecto no es de aquellos (5432)... Así comenzó la triste historia jajaja

  1. Descargar el instalador de Pg en su versión actual (17 al momento de escribir esta entrada).
  2. Transferir el instalador al servidor, RDP/SFTP/Etc.
  3. Determinar la unidad donde se instalará Pg, en nuestro caso teníamos 7 discos a disposición y todos estaban hasta más arriba del paracaídas con cosas así es que escogimos el que tenía más espacio disponible. Para efectos pedagógicos, le llamaremos U:\
  4. Se instala normalmente Pg, con las opciones por defecto. Atención a las credenciales ingresadas, es común poner cualquier cosa y luego olvidarlas
  5. Entramos a Pg Admin para confirmar la correcta instalación.
  6. Ahora, intentamos ingresar desde nuestro equipo, vía VPN a Pg utilizando DBeaver CE. El primer problema es que Pg tiene por política definir las IP remotas en un archivo para aceptarlas y hacer un mapeo entre la IP, la BD y el usuario lo cual es fantástico pero complejo por el detalle que las IP's que accederán serían dinámicas.
  7. Acá el primer trucazo (lo usamos sólo porque hay una VPN y muchísimos servicios de seguridad perimetral, IDS, Antimalware y otras yerbas)... Editamos el archivo pg_hba.conf agregando la siguiente línea al final del archivo host all all 0.0.0.0/0 md5, esto en definitiva acepta cualquier IP a cualquier usuario en cualquier base de datos, obviamente los usuarios pasan el tema de autentificación y autorización para acceder a los recursos de Pg.
  8. Ahora editamos el archivo postgresql.conf y añadimos lo siguiente listen_addresses = '*' con ello nos aseguramos que Pg escuche a todo el mundo mundial.
  9. Reiniciamos el servicio y no pasó nada! pero ahora el tema era que la conexión caía por Timeout, Así es que decidimos cambiar de puerto y para ello volvimos al archivo y modificamos el parámetro port = 5432 por el puerto que utilizamos (un puerto conocido, tan conocido que no estaba bloqueado por el sistema de seguridad y milagrosamente no estaba siendo utilizado en ese servidor).
  10. Reiniciamos varias veces el servicio de Pg y nada pasaba!
  11. Entramos localmente a Pg Admin y ejecutamos el siguiente SQL: SELECT pg_reload_conf()con ello, recargamos la configuración.
  12. Probamos la conexión remota y funcionó!

Dejo este paso a paso para la posterioridad y como el recuerdo de una jornada de trabajo de aquellas de grandes oportunidades y aprendizajes.