PostgreSQL por sí solo no incluye un panel de control web
Para administrarlo desde el navegador, se necesita desplegar un gestor web como Adminer (muy ligero) o pgAdmin 4 en Docker, y luego crear el túnel SSH
obviamente hay que tener postgres instalado en un container https://leibnix.com/crear-container-de-postgres-en-docker/
hay primero que crear una docker network (mi-red):
docker network create mi-red
agregar a la red (postgres a mi-red):
docker network connect mi-red postgres_db
el comando para adminer es:
docker run -d \
--name adminer \
--network mi-red \
-p 8085:8080 \
--restart always
adminer
no usar un comando con la opción –link, está deprecado, osea:
docker run -d \
--name adminer \
--link postgres_db:db \
-p 8085:8080 \
--restart always \
adminer
No se indica el puerto 5432 en el comando de Adminer porque el 5432 es un puerto de comunicación interna entre contenedores, mientras que 8085:8080 es para acceder desde tu navegador web local

Adminer es una página web. Necesitas exporner su servidor web interno (puerto 8080) hacia tu servidor Ubuntu (puerto 8085) para que puedas abrir el panel de control en Chrome o Firefox desde tu PC.
--network mi-red: Conecta Adminer a la red virtual que creaste. Esto permite que Adminer encuentre a PostgreSQL simplemente escribiendo el nombre de su contenedor (postgres_db).
--restart always: Si el servidor Ubuntu se reinicia o el contenedor falla, Docker lo volverá a encender automáticamente.

luego hacer el túnel ssh: (en tu pc local, no enn el servidor):
ssh -L 8085:localhost:8085 USUARIO@IP
el mapeo es 8085:localhost:8085
osea 8085 de la pc local a 8085 de localhost de la pc remota
Adminer no necesita exponer el puerto 5432 al exterior
Al estar ambos contenedores conectadas a la misma red de Docker (--network mi-red), Adminer habla directamente con PostgreSQL de contenedor a contenedor
-p (Puertos) solo se utiliza cuando un contenedor necesita hablar con el mundo exterior
Entre contenedores de la misma red, todos los puertos internos (como el 5432 de Postgres) están abiertos y accesibles entre sí automáticamente sin necesidad de indicarlos en el comando docker run
eso te logea al servidor (mantener esa sesión abierta para que esté abierto el túnel SSH)
luego, entrar a ‘localhost:8085’ en tu pc local, no en el servidor:

ingresar los datos, e ingresar:
Datos de inicio de sesión en Adminer: (los datos de postgres el container de docker)
- Sistema: PostgreSQL
- Servidor: db
- Usuario: admin
- Contraseña: abc
- Base de datos: mi_base_de_datos
si lo ejecutas sin –link, poné el nombre del contenedor, osea postgres_db en vez de db
ahí pusse postgresdb en vez de postgres_db, faltó el _

si todo va bien, vas a ver: (vas a poder ingresar)

y a la derecha hay acciones, como crear tablas:

osea:


1 thought on “postgres: acceder remotamente por web y configurarlo (tunel ssh)”
Comments are closed.