pgAdmin com Docker: interface web para PostgreSQL
pgAdmin é o cliente gráfico mais completo para PostgreSQL — permite executar queries, visualizar schemas, monitorar conexões e gerenciar roles pelo browser. Com Docker, a instalação leva menos de 5 minutos e pode ser protegida com HTTPS e autenticação.
Instalar pgAdmin com Docker Compose
Adicione o pgAdmin ao docker-compose.yml do PostgreSQL ou em um stack separado:
services:
pgadmin:
image: dpage/pgadmin4:latest
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD}
PGADMIN_LISTEN_PORT: 80
volumes:
- pgadmin_data:/var/lib/pgadmin
ports:
- "5050:80" # acesso em http://IP_DA_VPS:5050
networks:
- db_network # mesma rede do PostgreSQL
volumes:
pgadmin_data:Conectar ao servidor PostgreSQL
Após o login no painel, adicione o servidor PostgreSQL. O hostname é o nome do serviço Docker, não localhost:
# No painel pgAdmin:
# Add New Server → General:
# Name: Produção
#
# Connection:
# Host name/address: postgres (nome do serviço no docker-compose)
# Port: 5432
# Maintenance database: postgres
# Username: postgres
# Password: sua_senha_postgres
# Save password: Yes
# Se o pgAdmin estiver em docker-compose separado,
# conecte o pgAdmin na rede do PostgreSQL:
# docker network connect nome_da_rede_do_postgres nome_do_container_pgadmin
# Testar conexão via linha de comando antes de configurar no painel:
docker run --rm --network nome_da_rede \
postgres:16-alpine psql -h postgres -U postgres -c "SELECT version();"Proteger com Nginx e HTTPS
A porta 5050 não deve ficar exposta na internet sem autenticação HTTPS. Configure o Nginx como proxy reverso:
# nginx.conf para pgAdmin
server {
listen 443 ssl;
http2 on;
server_name pgadmin.seudominio.com.br;
ssl_certificate /etc/letsencrypt/live/pgadmin.seudominio.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pgadmin.seudominio.com.br/privkey.pem;
# Restringir acesso por IP (recomendado para pgAdmin)
allow 201.X.X.X; # seu IP fixo
deny all;
location / {
proxy_pass http://pgadmin:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Alternativa: DBeaver via SSH tunnel
Para acesso eventual sem manter o pgAdmin rodando, use DBeaver ou psql local via SSH tunnel:
# Criar SSH tunnel (no seu computador local)
ssh -L 5432:localhost:5432 root@IP_DA_VPS -N
# A porta 5432 local agora aponta para o PostgreSQL da VPS
# Conecte o DBeaver ou qualquer cliente em:
# Host: localhost
# Port: 5432
# User: seu_usuario
# Password: sua_senha
# DBeaver: New Connection → PostgreSQL
# Host: localhost, Port: 5432
# (com o tunnel ativo)
# psql local:
psql -h localhost -p 5432 -U postgres -d meu_bancoBackup via pgAdmin (interface gráfica)
O pgAdmin tem interface para backup e restore sem precisar usar o terminal:
# Via pgAdmin:
# 1. Expandir servidor → Databases → meu_banco
# 2. Clique direito → Backup...
# 3. Configurar:
# Filename: /tmp/backup-20260607.dump
# Format: Custom
# Encoding: UTF8
# Blobs: Yes
# 4. Backup → Process watching
# 5. Copiar o arquivo do container:
docker cp nome_container_pgadmin:/tmp/backup-20260607.dump ./
# Restore:
# 1. Clique direito no banco → Restore...
# 2. Selecionar o arquivo .dump
# 3. Restore$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o PostgreSQL em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.