- 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.
123 lines
6.7 KiB
Plaintext
123 lines
6.7 KiB
Plaintext
# ============================================================
|
|
# .env.example — COPIE PARA .env E PREENCHA OS VALORES REAIS
|
|
# NUNCA versione o arquivo .env no Git!
|
|
# ============================================================
|
|
|
|
# Ambiente Rails
|
|
# ⚠️ NO SERVIDOR DE PRODUÇÃO use `production` (modo development expõe páginas de
|
|
# erro com código-fonte/stack, o rack-mini-profiler e desliga otimizações).
|
|
# Use `development` só na sua máquina local.
|
|
RAILS_ENV=production
|
|
|
|
# Fuso horário do sistema operacional dentro dos containers.
|
|
# Já é o padrão no Dockerfile — só mexa se a operação mudar de estado.
|
|
# ⚠️ Isto define o FUSO, não a HORA. Se a data/hora do servidor está errada
|
|
# (atrasa, ou volta errada depois de reboot/deploy), o problema é o relógio
|
|
# do HOST: rode uma vez `sudo bash deploy/ntp-seguro.sh`.
|
|
TZ=America/Sao_Paulo
|
|
|
|
# ── Porta publicada no host ───────────────────────────────
|
|
# A porta DENTRO do container é sempre 3000; esta é a do servidor.
|
|
# 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=3001
|
|
|
|
# ── Banco de dados (seu PostgreSQL já existente) ─────────────
|
|
# Aponte DB_HOST para o IP ou hostname do seu servidor PostgreSQL
|
|
DATABASE_URL=postgresql://postgres:senha_segura@SEU_IP:5432/logistica_db
|
|
DB_HOST=SEU_IP # ex: 192.168.1.100 ou db.gade.com.br
|
|
DB_PORT=5432
|
|
DB_NAME=logistica_db # nome do banco NOVO que o sistema vai criar
|
|
DB_USER=postgres
|
|
DB_PASSWORD=senha_segura
|
|
|
|
# ── SimpliRoute — API de escrita (edição de lançamentos pelo ADM) ─────
|
|
# A base de rastreio (DB_EXISTING_TABLE) é só LEITURA e sincroniza a partir
|
|
# do SimpliRoute. Para CORRIGIR um lançamento (status/motivo/comentário) o
|
|
# sistema grava direto na API do SimpliRoute usando este token.
|
|
# Pegue em: SimpliRoute → Configurações → API. NUNCA versione o token real.
|
|
SIMPLIROUTE_TOKEN=
|
|
SIMPLIROUTE_BASE_URL=https://api.simpliroute.com
|
|
|
|
# ── Tabela existente (apenas leitura — NÃO modificar) ────────
|
|
DB_EXISTING_TABLE=db_reem_simplerout_2026
|
|
DB_EXISTING_SCHEMA=public
|
|
# Conta(s) consideradas. A coluna account_id é texto e pode vir vazia.
|
|
# 95907 → só essa conta
|
|
# 95907,12345 → várias contas
|
|
# 95907, → essa conta + os registros de conta vazia
|
|
# all (ou vazio)→ NÃO filtra por conta (conta tudo da tabela) ← recomendado aqui
|
|
DB_EXISTING_ACCOUNT_ID=all
|
|
|
|
# ── Rails Security ────────────────────────────────────────────
|
|
# Gere com: docker-compose exec app bundle exec rails secret
|
|
SECRET_KEY_BASE=gere_com_rails_secret_e_cole_aqui
|
|
|
|
# Força HTTPS: redireciona HTTP→HTTPS e marca cookies como "Secure".
|
|
# Deixe "true" no servidor (atrás do Cloudflare). Em desenvolvimento local
|
|
# deixe vazio/false para não forçar https em localhost.
|
|
FORCE_SSL=true
|
|
|
|
# ══════════════════════════════════════════════════════════════
|
|
# NOTIFICAÇÕES (WhatsApp e e-mail)
|
|
#
|
|
# ⚠️ Estas variáveis são apenas FALLBACK. A configuração preferencial fica no
|
|
# BANCO e é editada pelo ADM em Configurações → Notificações e E-mail
|
|
# (/admin/configuracao_notificacao), valendo sem reiniciar o container.
|
|
# Enquanto a tela não for preenchida e ativada, valem os valores abaixo.
|
|
# ══════════════════════════════════════════════════════════════
|
|
|
|
# ── Twilio — WhatsApp (opcional, Fase 8) ─────────────────────
|
|
TWILIO_ACCOUNT_SID=
|
|
TWILIO_AUTH_TOKEN=
|
|
TWILIO_WHATSAPP_FROM=whatsapp:+14155238886
|
|
|
|
# ── E-mail (opcional, Fase 8) ────────────────────────────────
|
|
SMTP_ADDRESS=smtp.gmail.com
|
|
SMTP_PORT=587
|
|
SMTP_USERNAME=
|
|
SMTP_PASSWORD=
|
|
SMTP_DOMAIN=gade.com.br
|
|
|
|
# ── Criptografia dos segredos gravados pela tela (opcional) ──
|
|
# A senha do SMTP e o token do Twilio salvos no banco são cifrados com uma
|
|
# chave derivada do SECRET_KEY_BASE. Se você trocar o SECRET_KEY_BASE, esses
|
|
# dois valores viram ilegíveis (o sistema volta a usar o .env e a tela avisa
|
|
# para redigitar). Defina NOTIFICACAO_SECRET com uma string longa e FIXA para
|
|
# desacoplar os segredos da rotação do SECRET_KEY_BASE.
|
|
# ⚠️ Se mudar depois de já ter salvo, os valores gravados também se perdem.
|
|
NOTIFICACAO_SECRET=
|
|
|
|
# ── App ───────────────────────────────────────────────────────
|
|
# ⚠️ 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.
|
|
WHATSAPP_TOKEN=troque_por_uma_string_aleatoria_longa
|
|
# URL da ponte dentro da rede do compose (não mexa, a menos que troque o nome
|
|
# do serviço no docker-compose.yml).
|
|
# (o nome antigo `BAILEYS_URL` ainda é aceito, para .env já em produção)
|
|
WHATSAPP_URL=http://whatsapp:3001
|
|
|
|
# ── Erros na tela ────────────────────────────────────────────────────────
|
|
# Mostra a página de debug do Rails (parâmetros, SESSÃO, cookies, IP, trace).
|
|
# Deixe SEMPRE vazia/false em qualquer servidor: esse painel vai para a tela de
|
|
# quem provocou o erro. Ligue só na sua máquina, quando estiver depurando.
|
|
ERROS_DETALHADOS=false
|