Deploy demo (Render)
Subir uma instância pra experimentar, sem cartão e sem domínio próprio.
Caminho grátis pra experimentar o OpenCall. Não é o caminho pra uma comunidade de verdade — ver Limites reais no fim.
| Peça | Serviço | Custo |
|---|---|---|
| Hospedagem do Next.js | Render, instância Free | US$ 0 |
| Postgres | Neon, plano Free | US$ 0 |
| LiveKit | LiveKit Cloud, plano Build | US$ 0 |
| Domínio | nenhum | *.onrender.com e *.livekit.cloud já vêm com TLS |
| Armazenamento de anexos (opcional) | Neon Object Storage | US$ 0 — dá pra pular, ver passo 5 |
Leia os limites antes de investir tempo
O teto que aperta primeiro é LiveKit Cloud Build: 5 conexões WebRTC simultâneas no projeto inteiro. Seis pessoas numa call não entram.
Comandos no terminal
Alguns passos aqui são digitados num terminal e precisam do Node.js instalado. Se você nunca abriu um, veja "Antes de começar" em Requisitos.
1. App: Render
O Render é onde o app roda, e ele vem primeiro de propósito. É ele que gera o
endereço https://SEU-SERVICO.onrender.com, do qual três variáveis dependem,
e é onde todas as outras variáveis vão ser coladas. Criando o serviço agora,
você preenche cada variável na hora que ela aparece, em vez de guardar tudo
num bloco de notas até o fim.
Antes de começar você precisa de um fork do repo do OpenCall na sua conta — ver Criar conta no GitHub e fazer fork.
2. Discord
O Discord é como as pessoas entram — o OpenCall não tem cadastro por email/senha.
Siga Configurar o Discord. Como o serviço do passo 1 já tem endereço, dá pra cadastrar o Redirect URI definitivo de primeira:
https://SEU-SERVICO.onrender.com/api/auth/callback/discordO NEXTAUTH_SECRET sai de Gerar o segredo de
sessão — um comando, sem conta pra criar.
Cole no Render: DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET,
NEXTAUTH_SECRET.
3. Voz: LiveKit Cloud
O LiveKit é o servidor que de fato carrega o áudio e o vídeo.
Siga LiveKit: Cloud no plano Build (sem cartão).
Não existe comando que crie um projeto no LiveKit Cloud — esse passo acontece no navegador, mesmo quando uma IA está fazendo o resto.
Cole no Render: LIVEKIT_URL, LIVEKIT_API_KEY, LIVEKIT_API_SECRET.
4. Banco de dados: Neon
O Neon é onde o app guarda usuários, mensagens e configurações.
Siga a seção Opção B: Neon (grátis) do Banco de
dados. Plano Free, sem cartão, e o projeto inteiro sai pela linha de comando
com o neonctl.
Use a connection string pooled — o host dela tem o sufixo -pooler.
Cole no Render: DATABASE_URL.
5. Armazenamento de anexos (opcional)
Dá pra subir a demo sem ele: voz, vídeo, compartilhamento de tela e chat de texto funcionam. O que falta é anexar imagem no chat — o botão de anexo não aparece.
Pra ter, siga Neon Object Storage — a mesma conta e a mesma API key do passo 4, então não entra provedor novo nem cartão.
O Cloudflare R2 também funciona e é o que o caminho de produção usa, mas pede método de pagamento pra habilitar, mesmo dentro do free — que é exatamente a fricção que esta página existe pra evitar.
As imagens dividem a cota de tráfego do banco
Os 5 GB/mês de tráfego de rede do Neon valem pro projeto inteiro, imagem e banco juntos, e estourar suspende o compute até o próximo ciclo. Pra uma demo sobra.
Cole no Render: R2_BUCKET, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY,
NEXT_PUBLIC_R2_PUBLIC_BASE_URL, R2_ENDPOINT, R2_REGION.
6. Criar as tabelas
O banco existe, mas ainda está vazio. Este comando cria as tabelas que o app espera.
A instância Free do Render não tem acesso a terminal, então rode da sua própria máquina, na pasta onde você clonou o repo do OpenCall.
DATABASE_URL="COLE_A_STRING_POOLED" pnpm prisma db pushAo terminar ele imprime algo como Your database is now in sync with your Prisma schema. Depois siga a Verificação
final.
Limites reais
| Limite | Valor | Consequência |
|---|---|---|
| Conexões WebRTC simultâneas (LiveKit Build) | 5 | teto de participantes em call, somando todos os canais |
| Minutos WebRTC/mês (LiveKit Build) | 5.000 | 5 pessoas × 3h já são 900 min |
| Banda de saída (LiveKit Build) | 50 GB/mês | |
| Ociosidade (Render Free) | dorme em 15 min | o primeiro acesso depois disso leva ~1 min |
| Instância (Render Free) | 512 MB RAM, 0.1 CPU | o build do Next.js é o mais provável de estourar |
| Horas/mês (Render Free) | 750 h por workspace | |
| Banco (Neon Free) | 0,5 GB, 100 CU-h/mês | estourada a cota, o compute fica suspenso até o próximo ciclo |
| Armazenamento de anexos (Neon Free) | 5 GB por projeto | durante o beta |
| Tráfego de rede (Neon Free) | 5 GB/mês por projeto | dividido entre banco e imagens; estourar suspende o compute |
| Ociosidade (Neon Free) | suspende em 5 min | soma ~1s na primeira query |
Presença, chat ao vivo e o aviso de chamada vivem na memória do processo: quando o Render derruba a instância por ociosidade, quem estava numa call é desconectado e esse estado zera.
Quando sair daqui
Na hora que 5 pessoas simultâneas virarem pouco: Deploy produção (Railway) mais LiveKit Cloud pago ou LiveKit self-host. Mesmas variáveis, apontando pra outro lugar.