pgAdmin¶
O pgAdmin é a interface web utilizada para administrar bancos PostgreSQL.
Nesta VPS, ele está conectado às redes proxy e n8n-net, permitindo acesso pelo Traefik e comunicação interna com o PostgreSQL do n8n.
Informações desta VPS¶
| Item | Valor |
|---|---|
| Stack | /opt/stacks/pgadmin/compose.yml |
| Serviço Compose | pgadmin |
| Container | pgadmin |
| Imagem configurada | dpage/pgadmin4:latest |
| Versão instalada | 9.9 |
| Versão mais recente verificada | 9.16 |
| Domínio | https://pgadmin.cloud.hometecseg.com |
| Porta interna usada | 80 |
| Portas expostas pela imagem | 80 e 443 |
| Rede externa | proxy |
| Rede do n8n | n8n-net |
| Volume | pgadmin_pgadmin-data |
| Diretório no container | /var/lib/pgadmin |
| E-mail administrativo | admin@cloud.hometecseg.com |
| Healthcheck | Não configurado |
Credenciais
A senha administrativa está no arquivo .env. Ela não deve ser escrita nesta documentação, enviada em mensagens ou publicada em repositórios.
Estado¶
Ver o estado do serviço¶
Ver o container em execução¶
Ver o estado detalhado¶
docker inspect pgadmin \
--format 'Status={{.State.Status}} ExitCode={{.State.ExitCode}} StartedAt={{.State.StartedAt}} FinishedAt={{.State.FinishedAt}} OOMKilled={{.State.OOMKilled}}'
Iniciar e parar¶
Iniciar o pgAdmin¶
Caso o container não exista:
Parar o pgAdmin¶
Reiniciar o pgAdmin¶
Recriar o container¶
Confirmar o estado¶
Acesso¶
Endereço:
Usuário administrativo:
Testar o domínio¶
Verificar o DNS¶
Ver detalhes da conexão¶
Logs¶
Ver os últimos 100 registros¶
Acompanhar os logs¶
Procurar erros¶
Procurar avisos¶
Versão¶
Ver a versão instalada¶
docker exec pgadmin sh -c \
"cd /pgadmin4 && python3 -c 'import version; print(version.APP_VERSION)'"
Resultado registrado:
Ver a imagem configurada¶
Ver a imagem usada pelo container¶
Ver o identificador da imagem usada¶
Versão mais recente disponível¶
Estado verificado ao criar esta documentação:
| Item | Versão |
|---|---|
| Instalada | 9.9 |
| Mais recente | 9.16 |
Existe uma atualização disponível.
Informação temporal
O número da versão mais recente muda. Verifique sempre a página oficial do pgAdmin antes de atualizar.
Verificar atualização disponível¶
Baixar a imagem mais recente¶
Esse comando baixa a imagem, mas não recria o container.
Ver o identificador da imagem baixada¶
Comparar com a imagem do container¶
CONTAINER_IMAGE="$(docker inspect pgadmin --format '{{.Image}}')" &&
LATEST_IMAGE="$(docker image inspect dpage/pgadmin4:latest --format '{{.Id}}')" &&
if [ "$CONTAINER_IMAGE" = "$LATEST_IMAGE" ]; then
echo "pgAdmin já utiliza a imagem mais recente baixada."
else
echo "Existe uma imagem diferente da usada pelo container."
fi
Fixar uma versão¶
Em vez de usar:
é possível fixar:
Isso evita atualizações inesperadas.
Tag fixa
Fixar uma versão melhora previsibilidade, mas exige atualização manual quando novas correções forem publicadas.
Backup¶
Criar diretório¶
Criar backup do Compose¶
Criar backup do .env¶
Arquivo sensível
O backup do .env contém credenciais. Restrinja as permissões desse arquivo.
Ajustar permissões do backup do .env¶
Parar o pgAdmin¶
Criar backup do volume¶
docker run --rm \
-v pgadmin_pgadmin-data:/source:ro \
-v /opt/backups/pgadmin:/backup \
alpine \
tar -czf "/backup/pgadmin-data-$(date +%Y%m%d-%H%M%S).tar.gz" \
-C /source .
Iniciar novamente¶
Listar backups¶
Atualização manual¶
Criar backup antes da atualização¶
docker run --rm \
-v pgadmin_pgadmin-data:/source:ro \
-v /opt/backups/pgadmin:/backup \
alpine \
tar -czf "/backup/pgadmin-data-pre-update-$(date +%Y%m%d-%H%M%S).tar.gz" \
-C /source .
Validar o Compose¶
Baixar a imagem¶
Recriar o serviço¶
Verificar o estado¶
Verificar os logs¶
Confirmar a versão¶
docker exec pgadmin sh -c \
"cd /pgadmin4 && python3 -c 'import version; print(version.APP_VERSION)'"
Testar o domínio¶
Atualização pelo script¶
Existe um script dedicado:
Ele será analisado posteriormente na página de scripts.
Visualizar o conteúdo¶
Verificar permissões¶
Revisão necessária
Antes de executá-lo, confirme se o script cria backup, valida o Compose, verifica a versão e preserva o estado do modo econômico.
Volume persistente¶
Ver as montagens¶
docker inspect pgadmin \
--format '{{range .Mounts}}{{println .Type "|" .Name "|" .Source "|" .Destination}}{{end}}'
Inspecionar o volume¶
Ver espaço utilizado¶
Listar arquivos persistentes¶
Não editar diretamente
Não altere manualmente os arquivos internos do volume enquanto o pgAdmin estiver ativo.
Redes¶
Ver as redes do container¶
Verificar a rede proxy¶
Verificar a rede n8n¶
O pgAdmin precisa da rede n8n-net para alcançar o PostgreSQL pelo nome interno do serviço.
Conectar ao PostgreSQL do n8n¶
No pgAdmin, cadastrar um servidor com:
| Campo | Valor |
|---|---|
| Nome | PostgreSQL n8n |
| Host | postgres |
| Porta | 5432 |
| Banco | n8n |
| Usuário | n8n |
A senha deve ser obtida no arquivo .env da stack do n8n.
Não expor a senha
Não copie a senha para documentação, prints ou mensagens.
Porta interna¶
A imagem expõe:
Nesta VPS, o Traefik encaminha para:
Confirmar as portas expostas¶
Confirmar a porta configurada no Traefik¶
Healthcheck¶
Atualmente não há healthcheck configurado:
Verificar diretamente¶
Exemplo de healthcheck futuro¶
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:80/misc/ping"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
Configuração sugerida
Esse healthcheck ainda não faz parte do Compose atual e deve ser testado antes da adoção.
Traefik¶
Ver as labels¶
Ver logs do Traefik¶
Troubleshooting¶
pgAdmin não inicia¶
Erro de permissão no volume¶
Erro 404¶
Erro 502 ou Gateway Timeout¶
A porta interna esperada é:
pgAdmin não conecta ao PostgreSQL¶
Verificar a rede:
Verificar se o PostgreSQL está ativo:
Testar resolução de nome dentro do pgAdmin:
Testar a porta:
docker exec pgadmin sh -c \
'python3 -c "import socket; s=socket.create_connection((\"postgres\",5432),5); print(\"Conexão TCP OK\"); s.close()"'
Login administrativo falha¶
Confirmar apenas o e-mail configurado:
Não exiba a senha.
Interface lenta¶
Boas práticas¶
- Fixar uma versão em vez de usar
latest. - Fazer backup do volume antes de atualizar.
- Proteger o arquivo
.env. - Não expor diretamente as portas
80ou443. - Usar o Traefik para acesso externo.
- Não remover o volume
pgadmin_pgadmin-data. - Não editar diretamente os arquivos persistentes.
- Revisar
update_pgadmin.shantes de executar. - Considerar adicionar healthcheck.