Base de Conhecimento

PostgreSQL na VPS: como instalar e proteger no Ubuntu

  • postgresql na vps, postgresql, pg_hba.conf, ubuntu, vps, tutorial
  • Usuários acharam útil: 0

Aprenda a instalar o PostgreSQL na VPS com Ubuntu, criar um usuário só para o app, usar scram-sha-256 e liberar o acesso externo com três travas, sem abrir a porta à toa.

Por Redação Eleven Host · @robson.direitodigital · 27 de outubro de 2026 · 8 min de leitura

Arte da Eleven Host: janela de terminal com o título: PostgreSQL na VPS: como instalar e proteger no Ubuntu

Capa da Redação Eleven Host para o guia: PostgreSQL na VPS: como instalar e proteger no Ubuntu Arte: Eleven Host

Para ter um PostgreSQL na VPS, rode sudo apt install postgresql, crie um usuário próprio para o app e deixe o banco só local. Só libere a rede com três travas: listen_addresses, uma linha no pg_hba.conf e o firewall.

PostgreSQL é um banco de dados relacional de código aberto: sistemas, lojas e ferramentas como o n8n guardam dados nele. Instalar na própria VPS dá controle sobre o banco, e a responsabilidade por atualizar, fazer backup e proteger fica com você. Neste guia, 203.0.113.10 é o servidor, 198.51.100.20 é a máquina do app, e app e meu_banco são nomes de exemplo. Troque pelos seus.

Instalar e conferir

No Ubuntu, a documentação oficial manda instalar o pacote do repositório da distribuição:

sudo apt install postgresql

O Ubuntu instala a versão que está no repositório dele, então o número varia conforme o seu sistema. Para ver qual ficou, rode:

psql --version

Os arquivos de configuração ficam em /etc/postgresql/<versão>/main, e os dois que importam aqui são o postgresql.conf e o pg_hba.conf. Para reiniciar o serviço, use:

sudo systemctl restart postgresql.service

E para ver se ele está rodando:

sudo systemctl status postgresql

Para entrar no banco como administrador, use o usuário postgres do sistema. Para sair do psql, digite \q:

sudo -u postgres psql

Criar usuário e banco para o app

Não use o usuário postgres dentro do app. Ele é o administrador do servidor de banco, e um app não precisa desse poder todo. Crie um usuário só para o app, dono de um banco só dele. O primeiro comando pede a senha do novo usuário e o segundo cria o banco:

sudo -u postgres createuser --pwprompt app

sudo -u postgres createdb -O app meu_banco

Se você prefere trabalhar dentro do psql, o resultado é o mesmo com estes dois comandos SQL:

CREATE ROLE app LOGIN PASSWORD 'senha-forte-aqui';

CREATE DATABASE meu_banco OWNER app;

Troque senha-forte-aqui por uma senha longa e única, guardada num gerenciador de senhas.

Senhas: use scram-sha-256

O método de senha padrão do PostgreSQL (a opção password_encryption) é o scram-sha-256. A documentação avisa que o suporte a senhas MD5 está obsoleto e será removido numa versão futura. Por isso, ao escrever linhas no pg_hba.conf, escolha scram-sha-256 e deixe o md5 de lado.

Precisa acessar de fora?

Primeiro, uma pergunta simples: o app roda na mesma VPS que o banco? Se sim, deixe como está. Segundo a documentação do PostgreSQL, o padrão de listen_addresses é localhost, que significa só conexões locais de loopback. O app conecta em localhost, porta 5432, e você não abre nada na rede. É o caso mais simples e seguro.

Se você só quer consultar o banco do seu computador, existe um caminho sem abrir a porta: o túnel SSH. Ele leva a porta do banco pelo SSH, e o guia Como criar chave SSH e entrar na VPS sem senha mostra como deixar o acesso ao servidor pronto. Este comando liga a porta 5433 do seu computador ao PostgreSQL do servidor:

ssh -L 5433:127.0.0.1:5432 usuario@203.0.113.10

Com o túnel aberto, o cliente conecta em 127.0.0.1, porta 5433. Se o app roda em outra máquina e precisa do banco ligado o tempo todo, siga para a próxima seção.

Escutar na rede não é o mesmo que estar liberado. Com o listen_addresses alterado, o banco só fica acessível a quem passar também pela linha do pg_hba.conf e pelo firewall. Faça as três travas antes de testar.

Quer o banco e o app em um servidor seu? Os planos de VPS começam em R$ 17,00/mês, no Plano Bronze; confira na loja o que cada plano inclui. Ver planos de VPS

Liberar para outro servidor com segurança

Se o app está em outra máquina, são três travas, na ordem a seguir.

Trava 1: o endereço em que o PostgreSQL escuta. Edite o postgresql.conf. A documentação do Ubuntu mostra listen_addresses = '*', que escuta em todas as interfaces, mas prefira listar só o IP do servidor:

listen_addresses = 'localhost,203.0.113.10'

Essa mudança só vale depois de reiniciar o serviço (sudo systemctl restart postgresql.service). Depois, confira onde ele escuta:

sudo ss -tlnp | grep 5432

Trava 2: uma linha no pg_hba.conf só para o IP do app. Esse arquivo diz quem pode entrar, em qual banco e com qual método. Para um único host, a documentação manda usar a máscara 32 em IPv4, o /32. Acrescente esta linha:

hostssl meu_banco app 198.51.100.20/32 scram-sha-256

O tipo hostssl só aceita a conexão se ela vier com SSL, enquanto o tipo host aceita com ou sem. Depois de editar o pg_hba.conf, recarregue a configuração, sem reiniciar:

sudo systemctl reload postgresql

Dentro do psql, o comando SELECT pg_reload_conf(); faz o mesmo.

Trava 3: o firewall. Abra a 5432 só para o IP do app, e não para a internet inteira:

sudo ufw allow from 198.51.100.20 to any port 5432 proto tcp

Se o ufw ainda não está configurado no servidor, o guia Firewall para VPS: como proteger seu servidor explica como começar. A lógica das três travas é a mesma do acesso remoto ao MySQL, só com outros nomes de arquivo.

Uma regra do pg_hba.conf merece atenção: o PostgreSQL lê as linhas de cima para baixo, e a primeira que bate com o tipo de conexão, o endereço, o banco e o usuário decide. Se a autenticação falhar nessa linha, as de baixo não são testadas. Se nenhuma linha bater, o acesso é negado. Por isso a ordem importa. Também não use trust para conexões de rede: segundo a documentação, ele deixa quem alcançar o servidor entrar como outro usuário, sem senha.

Testar a conexão

Na máquina do app (o IP que você usou no pg_hba.conf), instale o cliente e conecte:

sudo apt install postgresql-client

psql --host 203.0.113.10 --username app --password --dbname meu_banco

Digite a senha quando o cliente pedir. Se aparecer o prompt meu_banco=>, a conexão funcionou.

Backup com pg_dump

A documentação do Ubuntu lembra que os bancos PostgreSQL devem ter backup regular. Com a ferramenta pg_dump, você gera um arquivo do banco, e o pg_restore devolve os dados:

pg_dump -Fc -U app -h localhost meu_banco > meu_banco.dump

pg_restore -U app -h localhost -d meu_banco meu_banco.dump

Proteja o arquivo com chmod 600 meu_banco.dump e guarde uma cópia fora da VPS. Para rodar o backup em horário marcado, o guia Como usar crontab: agende tarefas na VPS Linux mostra como agendar.

Erros comuns

  • Conexão recusada: olhe primeiro as duas travas de rede, o listen_addresses e o firewall. Rode o ss e o ufw status e veja se a porta 5432 aparece no endereço e no IP esperados.
  • Erro de que não há linha no pg_hba.conf para a sua conexão: nenhuma linha bateu com o IP, o banco, o usuário ou o tipo SSL. Revise a linha hostssl e recarregue a configuração.
  • Falha de senha: confira o usuário, o banco e a senha.
  • A mudança no listen_addresses não pegou: essa opção exige reiniciar o serviço. O reload não aplica essa mudança.

Checklist do PostgreSQL seguro

  • Instalei com sudo apt install postgresql e conferi a versão com psql --version.
  • Criei um usuário e um banco só para o app, e o app não usa o postgres.
  • A senha é longa, única e está num gerenciador de senhas.
  • As linhas do pg_hba.conf usam scram-sha-256, sem md5 e sem trust.
  • Se o app está na mesma VPS, o banco ficou em localhost.
  • Se precisei de acesso externo, uso o túnel SSH ou as três travas.
  • O listen_addresses lista só o IP do servidor, e o serviço foi reiniciado.
  • A linha hostssl usa o IP do app com /32.
  • O ufw abre a 5432 só para o IP do app.
  • O teste com psql conectou.
  • Tenho backup com pg_dump guardado fora da VPS, com chmod 600.

Tem um app para colocar no ar? Os planos de VPS começam em R$ 17,00/mês, no Plano Bronze; confira na loja o que cada plano inclui. Conhecer os planos

Perguntas frequentes

Como instalar o PostgreSQL na VPS?

No Ubuntu, rode sudo apt install postgresql. A versão instalada é a do repositório da distribuição, e o comando psql --version mostra qual ficou.

O PostgreSQL aceita conexões de fora logo após a instalação?

Não. Segundo a documentação, o padrão do listen_addresses é localhost, então o banco só atende conexões locais. Para liberar outro servidor, siga as três travas deste guia.

Posso usar o usuário postgres no meu app?

Evite. Crie um usuário próprio para o app, dono de um banco só dele, com createuser e createdb.

Qual método de senha usar no pg_hba.conf?

Use scram-sha-256. A documentação avisa que o suporte a senhas MD5 está obsoleto e será removido numa versão futura.

Esta resposta lhe foi útil?

Artigos Relacionados