Como instalar o PostgreSQL 16 em uma VPS Ubuntu
O PostgreSQL é o banco de dados relacional open-source mais avançado do mundo. Para servidores de banco de dados de produção, a instalação nativa (sem Docker) oferece melhor performance e controle. Este guia usa o repositório oficial PGDG (PostgreSQL Global Development Group) para instalar o PostgreSQL 16 no Ubuntu 24.04.
Antes de começar
- VPS mínima
- 2 vCPU · 2 GB RAM · 20 GB SSD (Runstack Basic ou superior)
- Sistema
- Ubuntu 24.04 LTS
- Também
- Acesso root ou usuário com sudo
- Porta 5432 liberada no firewall apenas para IPs específicos (não expor publicamente)
Instalação passo a passo
- 1
Atualizar o sistema
Sincronize os repositórios e aplique atualizações.
bashapt update && apt upgrade -y apt install -y curl ca-certificates - 2
Adicionar o repositório oficial PGDG
O repositório oficial do PostgreSQL garante acesso às versões mais recentes e patches de segurança antes do Ubuntu.
bash# Instalar o helper de configuração do repositório apt install -y postgresql-common # Executar o script de configuração do repositório PGDG /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh - 3
Instalar o PostgreSQL 16
Instale o PostgreSQL 16 com os pacotes principais.
bashapt update apt install -y postgresql-16 - 4
Verificar a instalação e o serviço
Confirme que o PostgreSQL está rodando como serviço systemd.
bashsystemctl status postgresql systemctl is-enabled postgresql # Verificar a versão instalada psql --version # Verificar que o cluster está ativo pg_lsclusters - 5
Configurar o usuário administrador
Defina uma senha segura para o superusuário `postgres`.
bash# Acessar o PostgreSQL como usuário postgres do sistema sudo -u postgres psql -- No prompt do psql: ALTER USER postgres PASSWORD 'troque_por_senha_muito_forte'; \q - 6
Criar banco de dados e usuário de aplicação
Boa prática: nunca conecte aplicações com o usuário `postgres`. Crie um usuário e banco dedicados.
bashsudo -u postgres psql << 'SQLEOF' -- Criar usuário de aplicação CREATE USER meu_app WITH PASSWORD 'senha_app_forte'; -- Criar banco de dados CREATE DATABASE meu_banco OWNER meu_app; -- Verificar \du \l \q SQLEOF - 7
Configurar acesso remoto (opcional)
Por padrão, o PostgreSQL só aceita conexões locais. Para permitir conexões de outros servidores (ex.: sua aplicação em outro VPS), edite as configurações de rede.
bash# Editar postgresql.conf para escutar em todas as interfaces nano /etc/postgresql/16/main/postgresql.conf # Localizar e alterar a linha: # listen_addresses = 'localhost' # Para: # listen_addresses = '*' # Editar pg_hba.conf para permitir conexões do IP da aplicação nano /etc/postgresql/16/main/pg_hba.conf # Adicionar no final (substitua pelo IP real da aplicação): # host meu_banco meu_app 10.0.0.5/32 scram-sha-256 # Reiniciar para aplicar systemctl restart postgresql - 8
Configurar firewall UFW
Libere a porta 5432 apenas para os IPs que precisam de acesso ao banco.
bashufw allow 22/tcp comment 'SSH' # Liberar PostgreSQL APENAS para IP específico da aplicação ufw allow from 10.0.0.5 to any port 5432 comment 'PostgreSQL - app server' # NÃO faça: ufw allow 5432/tcp (expõe para todos os IPs) ufw --force enable ufw status verbose - 9
Testar a conexão
Confirme que o banco está acessível com as credenciais criadas.
bash# Teste de conexão local psql -U meu_app -d meu_banco -c "SELECT version();" # Teste de conexão remota (do servidor de aplicação) # psql -h IP-DO-POSTGRES -U meu_app -d meu_banco -c "SELECT version();"
Não quer configurar manualmente?
Implante o PostgreSQL em menos de 5 minutos com a Runstack. Infraestrutura da OPEN Datacenter, com servidores em São Paulo.
Se der problema
Verifique os logs para identificar conflito de porta ou erro de permissão.
journalctl -u postgresql -n 50 --no-pager
pg_lsclustersA senha está incorreta ou o método de autenticação no pg_hba.conf não corresponde. Verifique o método configurado (scram-sha-256 é o padrão seguro).
cat /etc/postgresql/16/main/pg_hba.conf | grep -v "^#"Certifique-se de ter reiniciado o PostgreSQL e de que a regra no pg_hba.conf para o IP remoto está correta.
systemctl restart postgresql
# Verificar que está escutando em todas as interfaces:
ss -tlnp | grep 5432Ajuste os parâmetros de memória no postgresql.conf. Valores básicos para 2 GB de RAM: shared_buffers=512MB, effective_cache_size=1536MB, work_mem=4MB.
nano /etc/postgresql/16/main/postgresql.conf
systemctl restart postgresqlConfigure a retenção de logs no postgresql.conf (log_rotation_age, log_rotation_size) ou use logrotate.
# Verificar tamanho dos logs:
du -sh /var/log/postgresql/Perguntas frequentes
Para servidores dedicados de banco de dados em produção, a instalação nativa oferece melhor performance (sem overhead de containerização) e acesso direto a ferramentas do sistema como pg_dump, pg_restore e pg_upgrade. Docker é mais conveniente em ambientes de desenvolvimento ou quando PostgreSQL é um componente de uma stack maior.
Use pg_dump para backup lógico: `pg_dump -U meu_app -d meu_banco > backup_$(date +%Y%m%d).sql`. Para backup de todos os bancos: `pg_dumpall -U postgres > full_backup.sql`. Automatize com cron para backups regulares.
Sim. O PostgreSQL 16 tem suporte até novembro de 2028. O repositório PGDG garante atualizações de segurança independente do ciclo do Ubuntu.
Acesse como usuário do sistema: `sudo -u postgres psql` e execute `ALTER USER postgres PASSWORD 'nova_senha';`. Também é possível usar `sudo -u postgres pg_ctlcluster 16 main reload` após alterar pg_hba.conf.
Sim. O PostgreSQL no Ubuntu usa o conceito de clusters. Use `pg_createcluster <versão> <nome>` para criar clusters adicionais em portas diferentes.