−25%

no Windows com pagamento anual, até 31/10. Ver planos

EQVPS

Como instalar o PostgreSQL num VPS e se conectar com segurança

Instale o PostgreSQL 16 no Ubuntu, crie um banco e um usuário e conecte-se remotamente sem expor a porta 5432 à internet: por túnel SSH ou lista de permissões.

O PostgreSQL se instala com um comando. Onde as pessoas erram é no acesso remoto: abrem a porta 5432 para o mundo, colocam uma senha e depois se perguntam por que os logs estão cheios de tentativas de login. Este guia instala o Postgres no Ubuntu 24.04, cria um banco de dados e mostra duas formas seguras de se conectar de fora.

1. Instalação

apt update && apt install -y postgresql
systemctl status postgresql --no-pager

No Ubuntu 24.04 é o PostgreSQL 16. Por padrão ele só escuta em localhost; deixe assim, a menos que tenha um motivo.

2. Crie um usuário e um banco de dados

sudo -u postgres psql <<'SQL'
CREATE USER app WITH PASSWORD 'use-a-long-random-password';
CREATE DATABASE appdb OWNER app;
SQL

Apps no mesmo servidor se conectam com postgresql://app:PASSWORD@localhost:5432/appdb.

3. Conectar a partir do notebook: túnel SSH (recomendado)

Nada para abrir, nada para configurar no servidor. O túnel encaminha uma porta local através do SSH:

ssh -N -L 5433:localhost:5432 root@203.0.113.10

Num plano NAT, adicione a sua porta SSH pessoal do painel:

ssh -N -p 20123 -L 5433:localhost:5432 root@your-nat-host

Enquanto o túnel estiver ativo, aponte o seu cliente de banco de dados para localhost:5433. O SSH criptografa tudo e a porta 5432 continua fechada para a internet. Ferramentas gráficas como DBeaver e pgAdmin têm uma aba de «túnel SSH» que faz o mesmo.

4. Acesso direto para outro servidor (lista de permissões)

Se um servidor de aplicação em outro lugar precisa se conectar diretamente, libere só o IP dele. Para isso, o servidor do banco precisa estar num plano com IP dedicado, porque planos NAT não aceitam conexões de entrada além do SSH.

Em /etc/postgresql/16/main/postgresql.conf:

listen_addresses = '*'

No fim de /etc/postgresql/16/main/pg_hba.conf:

hostssl  appdb  app  198.51.100.20/32  scram-sha-256

Abra o firewall para esse único endereço e reinicie:

ufw allow from 198.51.100.20 to any port 5432 proto tcp
systemctl restart postgresql

hostssl exige uma conexão criptografada; o pacote do Ubuntu vem com um certificado autoassinado, então os clientes devem se conectar com sslmode=require.

5. Primeiros ajustes sensatos

Para um servidor com 2 GB de RAM, no postgresql.conf:

shared_buffers = 512MB
effective_cache_size = 1536MB
work_mem = 8MB

Reinicie depois da mudança. Isso basta para a maioria dos apps pequenos; ajuste melhor quando vir consultas reais.

6. Backups

Um dump noturno, guardado por uma semana:

mkdir -p /var/backups/pg && chown postgres /var/backups/pg
cat > /etc/cron.d/pg-backup <<'EOF'
30 3 * * * postgres pg_dump -Fc appdb > /var/backups/pg/appdb-$(date +\%u).dump
EOF

-Fc gera um dump compactado que se restaura com pg_restore. Copie os dumps também para fora do servidor; os Managed Backups acrescentam pontos de restauração diários da máquina inteira.

Relacionados

Perguntas frequentes

Devo abrir a porta 5432 para a internet?

Melhor não. Portas de banco de dados expostas são varridas e atacadas por força bruta o tempo todo. Conecte-se por um túnel SSH ou, se um servidor de aplicação precisa se conectar diretamente, libere só o IP dele tanto no pg_hba.conf quanto no firewall.

Posso usar PostgreSQL num plano NAT?

Sim. Apps no mesmo servidor se conectam localmente, e você alcança o banco a partir do notebook por um túnel SSH na sua porta SSH pessoal. O que um plano NAT não consegue é aceitar uma conexão direta de entrada na 5432 vinda de outro servidor.

Quanta RAM o PostgreSQL precisa?

Ele roda com algumas centenas de megabytes e usa como cache tudo o que você der. Um ponto de partida comum é shared_buffers em torno de 25% da RAM. Para o banco de um app pequeno, 2 GB de RAM no servidor são folgados.

Como faço backup do banco?

Use o pg_dump no formato personalizado ('pg_dump -Fc') e rode-o pelo cron. Guarde cópias também fora do servidor. Os Managed Backups acrescentam pontos de restauração diários do servidor inteiro.

Qual versão do PostgreSQL eu recebo?

O Ubuntu 24.04 traz o PostgreSQL 16 e o Debian 12 traz o 15. Para uma versão principal mais nova, adicione o repositório apt oficial do PostgreSQL (apt.postgresql.org).

Comentários

Nenhum comentário ainda. Seja o primeiro.

Deixe um comentário

Os comentários são moderados antes de aparecerem.