Runbook para IA
Provisionamento por CLI, pra colar numa sessão do Claude Code (ou similar).
Cole este runbook numa sessão de IA com acesso ao terminal. A IA executa o máximo possível por CLI, parando só nos pontos que exigem um humano (login/2FA, pagamento, propriedade de domínio).
Instrução pra IA que está executando
Siga os passos na ordem. Antes de qualquer comando que crie recurso cobrado ou seja difícil de reverter, confirme com o humano. Depois de cada passo marcado, mostre o resultado antes de seguir. O host do app precisa rodar um processo Node persistente — nunca sugira Vercel ou qualquer plataforma serverless.
Escolhendo o caminho
Os três caminhos usam as mesmas variáveis de ambiente — muda só onde cada peça roda.
| Local | Demo (grátis) | Produção | |
|---|---|---|---|
| App | pnpm dev na sua máquina | Render Free | Railway Hobby |
| Postgres | container Docker | Neon Free | Addon do Railway |
| LiveKit | container Docker | Cloud (plano Build) | Cloud pago ou self-host em VPS |
| Armazenamento | container MinIO | Neon Object Storage | Cloudflare R2 |
| Domínio | localhost:3000 | nenhum (*.onrender.com) | próprio |
| Custo | US$ 0 | US$ 0 | ~US$ 10-15/mês |
| Teto | só a sua máquina | 5 pessoas simultâneas em call | o que você pagar |
Pré-requisitos que só o humano resolve
- Conta no Discord Developer Portal
- Docker Desktop instalado e aberto — o daemon não sobe sozinho
- Node.js instalado
- Um fork do repositório do OpenCall, ou o repositório original clonável
Nenhuma conta de nuvem, nenhum cartão, nenhum domínio. A versão clicável deste caminho é Rodar localmente (Docker).
1. Conferir a máquina
docker info > /dev/null && echo "docker ok"
node --version
pnpm --version || npm install -g pnpmSe o docker info falhar, o Docker Desktop não está rodando: pausa pra ação
humana, não tente subir o daemon por conta própria.
2. Clonar e instalar
git clone https://github.com/SEU-USUARIO/OpenCall.git
cd OpenCall
pnpm installO postinstall do repositório roda prisma generate. Se ele falhar, pare aqui
e mostre a saída antes de seguir.
3. Application do Discord
Não existe CLI oficial — 100% manual (ver Configurar o Discord). Peça ao humano pra criar a aplicação com a Redirect URI local:
http://localhost:3000/api/auth/callback/discordDepois peça DISCORD_CLIENT_ID e DISCORD_CLIENT_SECRET.
4. Variáveis de ambiente
cp .env.docker.example .envO arquivo já vem com todos os valores batendo com o docker-compose.yml
(Postgres na 5433, MinIO na 9000, LiveKit na 7880) e com um NEXTAUTH_SECRET
de desenvolvimento. Preencha só as duas linhas do Discord:
DISCORD_CLIENT_ID=...
DISCORD_CLIENT_SECRET=...Tem que ser .env, não .env.local: a CLI do Prisma só lê o .env, e a
migration do passo 5 quebra com Environment variable not found: DATABASE_URL.
5. Subir a infra e o app
pnpm dev:dockerO script encadeia três coisas: pnpm docker:up (Postgres + MinIO + LiveKit),
prisma migrate dev (cria as tabelas) e pnpm dev (Next.js na 3000).
O pnpm dev não termina — é processo de longa duração. Rode em background
ou num terminal separado, senão a sessão trava esperando ele.
O container minio-init terminar com exited (0) é sucesso: ele cria o bucket,
libera leitura pública, roda uma vez e para.
Aqui o comando é prisma migrate dev, não db push: o repositório versiona
prisma/migrations/.
6. Validação final
- Peça ao humano pra abrir
http://localhost:3000e logar com o Discord — é esse primeiro login que cria oADMIN. - Confirme o acesso a
/admin/channels. - Teste uma chamada de voz no canal
Geral, nessa mesma máquina. - Mande uma mensagem com imagem anexada — o MinIO está no lugar do R2.
Avise o humano de um limite estrutural: voz e vídeo só funcionam nessa
máquina. O container do LiveKit anuncia 127.0.0.1 como candidato ICE, então
outro aparelho na mesma rede abre a página mas nunca entra na chamada. Pra
testar com outras pessoas, o caminho é a aba Demo grátis.
Encerrar
pnpm docker:down # para os containers e mantém os dados
docker compose down -v # para e APAGA banco e uploadsCheckpoints humanos (resumo)
- Abrir o Docker Desktop antes de começar
- Criar a Application do Discord e colar client id/secret (não tem API)
- Registrar
http://localhost:3000/api/auth/callback/discordcomo Redirect URI - Ser o primeiro a logar, pra virar
ADMIN