Corrige acesso em produção: hosts permitidos, i18n do Devise e config do ambiente no compose

- production.rb (hosts): a linha que parecia só liberar o APP_HOST na verdade
  LIGAVA a verificação de Host e recusava todo o resto — o acesso pelo IP
  interno caía em 'Blocked hosts: 100.75.222.23:3001'. Agora entram também
  localhost/127.0.0.1 e a lista HOSTS_PERMITIDOS.
- production.rb (i18n): 'fallbacks = true' significa cair no default_locale,
  que aqui é o próprio pt-BR — o fallback apontava para si mesmo e chave
  ausente virava 'Translation missing' na tela do usuário. Agora [:en], igual
  ao application.rb.
- pt-BR.yml: traduções do Devise (failure/sessions/passwords). O projeto não
  usa devise-i18n; em development o texto vinha em inglês pelo fallback e o
  buraco passava despercebido.
- docker-compose.yml / .env.example: porta do host parametrizada
  (${PORTA_APP:-3001}) e APP_HOST/APP_NAME/WHATSAPP_URL/HOSTS_PERMITIDOS com
  padrão — essa configuração vivia só no .env do servidor e sumiu junto com ele.
This commit is contained in:
2026-08-27 18:30:17 -03:00
parent a06f93784c
commit 7fa2336b35
4 changed files with 115 additions and 11 deletions

View File

@@ -18,11 +18,11 @@ TZ=America/Sao_Paulo
# ── Porta publicada no host ───────────────────────────────
# A porta DENTRO do container é sempre 3000; esta é a do servidor.
# Só precisa mudar quando outro stack já ocupa a porta no mesmo host —
# é o caso do ambiente de TESTE, que usa 3001 (a 3000 está ocupada).
# Sem esta variável o compose assume 3000.
# Neste branch (teste) o padrão do docker-compose.yml JÁ É 3001, porque a 3000
# está ocupada por outro stack no mesmo NAS. Esta linha só é necessária para
# usar uma porta diferente da padrão.
# ⚠️ Tem que casar com o destino do proxy reverso (DSM / Cloudflare).
PORTA_APP=3000
PORTA_APP=3001
# ── Banco de dados (seu PostgreSQL já existente) ─────────────
# Aponte DB_HOST para o IP ou hostname do seu servidor PostgreSQL
@@ -91,9 +91,21 @@ SMTP_DOMAIN=gade.com.br
NOTIFICACAO_SECRET=
# ── App ───────────────────────────────────────────────────────
APP_HOST=localhost:3000
# ⚠️ SÓ O HOST, sem "https://". O código monta os links como
# "https://#{APP_HOST}/motorista" (consolidacao_mailer.rb,
# notificacao_service.rb, gatilhos.rb): com o esquema aqui sai
# "https://https://..." e todo link de e-mail e de WhatsApp quebra.
# O docker-compose.yml já traz o host do ambiente como padrão — esta linha só
# é necessária para apontar para outro endereço.
APP_HOST=teste.reemtransportes.com.br
APP_NAME=Reem Logística
# Hosts extras aceitos além do APP_HOST, separados por vírgula (só vale com
# RAILS_ENV=production, onde o Rails checa o cabeçalho Host).
# Use quando o sistema também for acessado por IP:porta na rede interna —
# sem isso o Rails responde "Blocked hosts: <ip>:<porta>".
HOSTS_PERMITIDOS=100.75.222.23
# ── WhatsApp (ponte própria — sessão pareada por QR code) ──────────────────
# Token compartilhado entre o Rails e o container `whatsapp`. Qualquer string
# longa e aleatória: `openssl rand -hex 32`. Sem ele a ponte recusa TUDO.