⚡ AutomationsAI|Portal de Cursos →

Verificando acesso...

MÓDULO 2.1

📋 Pré-requisitos

Tudo que você precisa ter pronto antes de subir o Postiz: VPS, Docker, domínio, e-mail transacional, storage e o terminal na ponta dos dedos.

6
Tópicos
30
Minutos
Intermediário
Nível
Prático
Tipo
1

🖥️ VPS recomendada

O Postiz roda confortavelmente em uma VPS pequena, mas não em um shared hosting. O processo Node + Postgres + Redis consomem RAM e exigem controle root para Docker. O mínimo viável é 2 GB de RAM, 2 vCPUs e 20 GB de disco — abaixo disso, OOM kill é questão de tempo.

Duas escolhas óbvias e baratas: Hetzner CX22 (€4/mês, datacenter na Alemanha/Finlândia) ou DigitalOcean Basic Droplet ($6/mês, várias regiões). Ambas dão Ubuntu 24.04 LTS em poucos cliques.

# Após criar a VPS, conectar via SSH (substitua o IP)
ssh root@198.51.100.42

# Atualizar o sistema antes de qualquer instalação
apt update && apt upgrade -y

# Criar usuário não-root (boa prática mínima)
adduser deploy
usermod -aG sudo deploy

# Verificar recursos disponíveis
free -h          # RAM
df -h            # disco
nproc            # vCPUs

✓ O que FAZER

  • Escolher provedor com snapshot/backup nativo (Hetzner, DO, Vultr).
  • Começar com Ubuntu LTS — 24.04 tem suporte até 2029.
  • Dimensionar com folga: 4 GB de RAM evita surpresas no primeiro mês.
  • Habilitar firewall do provedor (libere só 22, 80, 443).

✗ O que NÃO fazer

  • Usar shared hosting / cPanel — Docker não roda.
  • Escolher 1 GB de RAM "pra economizar" — Postgres + Node estouram.
  • Rodar tudo como root sem criar usuário deploy.
  • Esquecer de fechar a porta 5432 (Postgres) no firewall público.

Conceitos-chave

VPS

Servidor virtual privado com root e IP dedicado.

vCPU

Núcleo virtual mapeado a uma thread física.

Snapshot

Imagem do disco para restaurar em segundos.

LTS

Long Term Support — releases com 5+ anos de patches.

2

🐳 Docker e Docker Compose v2

O Postiz é distribuído como imagem Docker oficial. Você precisa do Docker Engine 24+ e do plugin Compose v2 (docker compose, sem hífen). Compose v1 está deprecado e falha em features novas como condition: service_healthy.

Não use o apt install docker.io dos repositórios padrão do Ubuntu — vem desatualizado e sem o plugin Compose. Instale pelo repositório oficial da Docker.

# Instalação oficial no Ubuntu 24.04
curl -fsSL https://get.docker.com | sh

# Adicionar usuário ao grupo docker (evita sudo)
sudo usermod -aG docker $USER
newgrp docker

# Verificar versão do engine
docker --version
# Docker version 27.3.1, build ce12230

# Verificar plugin Compose v2
docker compose version
# Docker Compose version v2.29.7

# Teste rápido (puxa imagem hello-world)
docker run --rm hello-world

💡 Dica prática

Se você vê docker-compose com hífen funcionando, é o legacy v1. Desinstale e use o plugin v2 — todo o Postiz e seus exemplos assumem docker compose (espaço).

Conceitos-chave

Docker Engine

Daemon que executa containers no host.

Compose v2

Plugin nativo escrito em Go, integrado ao CLI.

Imagem

Snapshot read-only com app + dependências.

Grupo docker

Permite rodar containers sem sudo.

3

🌐 Domínio próprio e DNS

Você precisa de um domínio para: (1) gerar certificado HTTPS, (2) registrar callback OAuth nas redes sociais (Twitter/X, LinkedIn etc. não aceitam IP cru) e (3) ter URL estável que não muda quando você recriar a VPS.

Compre em qualquer registrar barato — Cloudflare Registrar (preço de custo, sem markup), Namecheap ou Registro.br (.com.br). Use um subdomínio dedicado tipo postiz.seudominio.com em vez do apex.

# No painel de DNS, criar registro A:
#   Tipo: A
#   Nome: postiz
#   Valor: 198.51.100.42   (IP da sua VPS)
#   TTL:  300              (5 min, facilita ajustes)

# Confirmar propagação (pode levar até 30 min)
dig +short postiz.seudominio.com
# 198.51.100.42

# Alternativa rápida
nslookup postiz.seudominio.com

# Testar conectividade reversa
curl -I http://postiz.seudominio.com

Dica prática

Se usa Cloudflare, comece com proxy desligado (nuvem cinza) até o Postiz estar respondendo no domínio. Proxy ativo (nuvem laranja) pode mascarar erros de configuração e atrapalha o desafio HTTP-01 do Let's Encrypt no Traefik.

Conceitos-chave

Registro A

Mapeia nome → IPv4. Base de todo apontamento.

TTL

Tempo de cache no resolver — menor = mudanças rápidas.

Subdomínio

Prefixo (postiz.) que isola por serviço.

Propagação

Tempo até resolvers globais aprenderem o registro.

4

📧 E-mail transacional (Resend)

O Postiz envia e-mails de signup, reset de senha e notificações de falha de post. Sem provedor configurado, esses fluxos quebram silenciosamente. Resend é a escolha mais simples: 3 000 e-mails/mês grátis, API moderna, sem o pesadelo de configurar SMTP na mão.

Alternativas válidas: Postmark (excelente entregabilidade), Amazon SES (barato em volume) ou SMTP genérico. Em qualquer caso, você precisa verificar o domínio com SPF e DKIM, senão cai no spam.

# Passos no resend.com:
# 1. Criar conta (free tier, 3000 emails/mês)
# 2. Domains → Add Domain → seudominio.com
# 3. Copiar os 3 registros DNS que aparecem (SPF, DKIM, Return-Path)
# 4. Colar no seu provedor de DNS
# 5. Aguardar verificação automática (5-15 min)
# 6. API Keys → Create API Key → guardar como RESEND_API_KEY

# Testar a chave via curl
curl -X POST https://api.resend.com/emails \
  -H "Authorization: Bearer re_seu_token_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "postiz@seudominio.com",
    "to": "voce@gmail.com",
    "subject": "Teste Resend",
    "text": "Funcionou!"
  }'

📨 Dica prática

Antes de migrar para produção, mande 2-3 e-mails de teste e cheque os cabeçalhos do destinatário: spf=pass, dkim=pass, dmarc=pass. Qualquer fail = e-mails indo para spam.

Conceitos-chave

Transacional

E-mail acionado por evento (não marketing).

SPF

Autoriza IPs que podem enviar pelo seu domínio.

DKIM

Assinatura criptográfica que prova autenticidade.

API key

Token secreto para autenticar chamadas HTTP.

5

📦 Storage S3-compatible (R2 / MinIO)

O Postiz precisa guardar imagens e vídeos que você anexa aos posts. Salvar no disco da VPS funciona em dev, mas em produção você quer storage S3-compatible: sobrevive a reboots, cresce sem refazer partição e serve direto via CDN.

Duas opções pragmáticas: Cloudflare R2 (10 GB grátis, zero egress fee — o killer feature) ou MinIO self-hosted (roda no mesmo Docker Compose, dado fica em casa). AWS S3 funciona mas cobra egress, evita.

# Opção A: Cloudflare R2
# 1. dash.cloudflare.com → R2 → Create bucket → "postiz-uploads"
# 2. Manage R2 API Tokens → Create token → permission "Object Read & Write"
# 3. Anotar:
#    - Account ID
#    - Access Key ID
#    - Secret Access Key
#    - Endpoint: https://.r2.cloudflarestorage.com

# Opção B: MinIO self-hosted (adiciona ao docker-compose.yml depois)
docker run -d --name minio \
  -p 9000:9000 -p 9001:9001 \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=senha_forte_aqui \
  -v minio-data:/data \
  quay.io/minio/minio server /data --console-address ":9001"

# Testar credenciais com mc (MinIO Client)
mc alias set r2 https://acc.r2.cloudflarestorage.com ACCESS_KEY SECRET_KEY
mc ls r2/postiz-uploads

✓ Quando usar R2

  • Você quer simplicidade e free tier generoso.
  • Mídia é servida ao público (zero egress).
  • Não quer pensar em backup do storage.
  • Já usa Cloudflare para DNS/CDN.

✓ Quando usar MinIO

  • Política interna exige dado on-premise.
  • Volume alto (TB) onde free tier não cobre.
  • Quer evitar dependência de cloud externa.
  • Você está disposto a cuidar de backup do volume.

Conceitos-chave

S3-compatible

API igual à AWS S3 — drivers reaproveitáveis.

Bucket

Container lógico que agrupa objetos (arquivos).

Egress

Tráfego de saída — onde S3 cobra caro, R2 não.

Endpoint

URL base para chamadas API do storage.

6

💻 Conhecimento mínimo de terminal

Você não precisa ser sysadmin sênior, mas tem que sobreviver no SSH sem GUI. Editar arquivo de config, ler log, mover arquivo, reiniciar serviço — tudo via teclado. Se cada um desses comandos exige Google, o módulo 2.2 vai ser doloroso.

Use tmux (ou screen) para que sessões SSH sobrevivam a desconexão — fundamental quando o boot do Postiz leva 1-2 min e você fecha o laptop sem querer.

# Conexão SSH com chave (gere uma se não tiver: ssh-keygen -t ed25519)
ssh -i ~/.ssh/id_ed25519 deploy@postiz.seudominio.com

# Comandos de sobrevivência
ls -la                    # listar com permissões
cd ~/postiz               # navegar
nano docker-compose.yml   # editar (ou vim, se conhecer)
cat .env                  # ver conteúdo
grep -r "DATABASE" .      # buscar
tail -f /var/log/syslog   # log ao vivo
ps aux | grep postiz      # processos

# tmux: sessão que sobrevive ao SSH cair
tmux new -s postiz        # criar sessão chamada "postiz"
# Ctrl+B depois D          → detach (sai sem fechar)
tmux attach -t postiz     # reconectar
tmux ls                   # listar sessões

# Transferir arquivo do seu laptop para a VPS
scp ./backup.sql deploy@postiz.seudominio.com:~/postiz/

🔑 Dica prática

Configure SSH por chave pública e desabilite login por senha em /etc/ssh/sshd_config (PasswordAuthentication no). Bots escaneiam a porta 22 24/7 — sem senha como vetor, eles vão embora.

Conceitos-chave

SSH

Shell remoto criptografado — porta 22 padrão.

Chave pública

Par cripto — login sem senha, muito mais seguro.

tmux

Multiplexador de terminal — sessões persistentes.

scp / rsync

Cópia de arquivos sobre SSH, com ou sem delta.

🎯 Resumo do Módulo

VPS provisionada — mínimo 2 GB RAM, Ubuntu 24.04 LTS, usuário deploy criado.
Docker pronto — Engine 24+ e Compose v2 instalados via script oficial.
Domínio apontado — registro A do subdomínio resolvendo para o IP da VPS.
E-mail transacional — conta Resend criada, domínio verificado, API key na mão.
Storage decidido — R2 ou MinIO com bucket criado e credenciais salvas.
Terminal afiado — SSH por chave, tmux configurado, comandos básicos memorizados.

Próximo Módulo:

2.2 — Setup com Docker Compose: subir o Postiz do zero