# ============================================================ # .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: :". 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