Tutoriais/PostgreSQL

    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.

    ~25 minjunho/2026 · Ubuntu 24.04 LTS

    Pré-requisitos

    • VPS mínima: 2 vCPU · 2 GB RAM · 20 GB SSD (Runstack Basic ou superior)
    • Sistema: Ubuntu 24.04 LTS
    • 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. 1

      Atualizar o sistema

      Sincronize os repositórios e aplique atualizações.

      bash
      apt update && apt upgrade -y
      apt install -y curl ca-certificates
    2. 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
      Dica
      O script detecta automaticamente a versão do Ubuntu (noble para 24.04) e configura o repositório correto. Pressione Enter para confirmar quando solicitado.
    3. 3

      Instalar o PostgreSQL 16

      Instale o PostgreSQL 16 com os pacotes principais.

      bash
      apt update
      apt install -y postgresql-16
    4. 4

      Verificar a instalação e o serviço

      Confirme que o PostgreSQL está rodando como serviço systemd.

      bash
      systemctl status postgresql
      systemctl is-enabled postgresql
      
      # Verificar a versão instalada
      psql --version
      
      # Verificar que o cluster está ativo
      pg_lsclusters
      Dica
      O PostgreSQL é instalado e iniciado automaticamente como serviço systemd. O cluster padrão é `main` rodando na porta 5432.
    5. 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
      Atenção
      Defina uma senha forte para o usuário postgres antes de configurar qualquer acesso de rede.
    6. 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.

      bash
      sudo -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. 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
      Atenção
      NUNCA configure listen_addresses = '*' sem também configurar regras específicas no pg_hba.conf e no firewall. Expor o PostgreSQL publicamente sem restrições é uma vulnerabilidade crítica.
    8. 8

      Configurar firewall UFW

      Libere a porta 5432 apenas para os IPs que precisam de acesso ao banco.

      bash
      ufw 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
      Atenção
      Substitua 10.0.0.5 pelo IP real do servidor de aplicação. Nunca abra a porta 5432 para 0.0.0.0.
    9. 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();"

    $ 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.

    Troubleshooting

    Perguntas frequentes

    [VERIFICAR antes de publicar]

    • 1. Confirme a versão estável atual do PostgreSQL em postgresql.org — em 2026 pode ser a versão 17.
    • 2. Verifique o caminho do arquivo de configuração (/etc/postgresql/16/main/) — muda conforme a versão instalada.