Skip to content

install.sh exige chave de IA real e validada, contra o que docs/deploy-selfhost promete #670

Description

@paulolimajr77

O que aconteceu?

docs/deploy-selfhost/README.md diz, na lista de campos do .env:

IA: ANTHROPIC_API_KEY (ou deixe vazio e cadastre a chave depois em /app/ai/credentials — fica cifrada no banco)

O install.sh não permite isso. Ele exige uma chave que passe numa chamada real ao provedor, e a instalação inteira para sem ela.

O runtime concorda com a doc, não com o instalador: em lib/env.ts:165,175,176 as três chaves são z.string().optional().default(""), e faltar todas gera apenas um warn (lib/env.ts:380), não um erro.

Na prática isso significa que não dá para instalar o produto sem antes abrir conta num provedor de IA, mesmo o produto subindo perfeitamente sem ela.

Passos para reproduzir

  1. cp .env.hostgator.example .env e preencher tudo menos a chave de IA
  2. bash hostgator-setup-kit/install.sh --yes
  3. A instalação para na Fase 2/4

Com um marcador no lugar da chave, o erro é:

▶ Configuração
✓ .env existente carregado
✖ ANTHROPIC_API_KEY inválido:
A chave da Anthropic começa com 'sk-ant-'. Pegue em console.anthropic.com > API Keys.
✖ Corrija o .env e rode de novo.

Com o campo vazio, o erro é outro e igualmente terminal:

Falta ANTHROPIC_API_KEY (modo --yes exige .env preenchido).

Sem --yes, o modo interativo responde "Esse campo é obrigatório" e fica em laço.

Ambiente

DeskcommCRM 1.17.0 (ghcr.io/melgarafael/deskcommcrm:stable)
Self-host em VPS Ubuntu 24.04 · Docker Compose v5.5.1
Supabase SELF-HOSTED (supabase/docker self-hosted/v0.8.1), Postgres 17.6
Instalado por: bash hostgator-setup-kit/install.sh --yes

Logs / screenshot

O campo é montado sem a marca opcional (install.sh:1165-1167):

openrouter) CAMPO_IA="OPENROUTER_API_KEY|Chave da OpenRouter ...||v_openrouter|secret|";;
openai)     CAMPO_IA="OPENAI_API_KEY|Chave da OpenAI ...||v_openai|secret|";;
*)          CAMPO_IA="ANTHROPIC_API_KEY|Chave da Anthropic ...||v_anthropic|secret|";;

E ask_one mata a execução quando o campo não tem default nem opcional:

if [ "$NONINTERACTIVE" = 1 ]; then
    if [ -n "$default" ]; then printf -v "$var" '%s' "$default"; return 0; fi
    [ -n "$optional" ] && return 0
    die "Falta $var (modo --yes exige .env preenchido)."
fi

Os validadores fazem chamada de rede: v_anthropic bate em api.anthropic.com/v1/models e recusa em 401; v_openrouter idem em openrouter.ai/api/v1/key. Ou seja: não existe caminho suportado para instalar sem uma chave que funcione.

Para contraste, a chave extra da OpenAI (usada para Whisper e embeddings) é marcada opcional no mesmo bloco — o que mostra que o mecanismo existe e só não foi aplicado ao campo principal.

Correção sugerida

Marcar o campo do provedor como opcional, como já é o CAMPO_OPENAI_EXTRA, e imprimir no fim o lembrete de cadastrar em IA › Credenciais (que é o caminho que o produto realmente usa: credencial cifrada em ai_provider_credentials).

Se a intenção for mesmo exigir, então o certo é corrigir docs/deploy-selfhost/README.md — mas aí vale registrar que a primeira instalação passa a depender de uma conta em provedor de IA, o que muda a primeira impressão do produto.

Posso abrir o PR se ajudar.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions