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
cp .env.hostgator.example .env e preencher tudo menos a chave de IA
bash hostgator-setup-kit/install.sh --yes
- 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.
O que aconteceu?
docs/deploy-selfhost/README.mddiz, na lista de campos do.env:O
install.shnã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,176as três chaves sãoz.string().optional().default(""), e faltar todas gera apenas umwarn(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
cp .env.hostgator.example .enve preencher tudo menos a chave de IAbash hostgator-setup-kit/install.sh --yesCom um marcador no lugar da chave, o erro é:
Com o campo vazio, o erro é outro e igualmente terminal:
Sem
--yes, o modo interativo responde "Esse campo é obrigatório" e fica em laço.Ambiente
Logs / screenshot
O campo é montado sem a marca
opcional(install.sh:1165-1167):E
ask_onemata a execução quando o campo não tem default nemopcional:Os validadores fazem chamada de rede:
v_anthropicbate emapi.anthropic.com/v1/modelse recusa em 401;v_openrouteridem emopenrouter.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
opcionalno 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á é oCAMPO_OPENAI_EXTRA, e imprimir no fim o lembrete de cadastrar em IA › Credenciais (que é o caminho que o produto realmente usa: credencial cifrada emai_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.