OpenCall

Deploy do Next.js

Onde rodar o app — e por que Vercel não é uma opção aqui.

A restrição que decide tudo

Chat, presença (quem está online, quem está em qual canal) e o aviso de "fulano está te chamando" são entregues em tempo real via Server-Sent Events, e o pub/sub por trás disso é em memória, dentro do próprio processo Node — não usa Redis nem nenhum broker externo hoje.

Na prática isso significa: o app precisa rodar como um único processo Node persistente. Se duas requisições caem em duas instâncias diferentes (dois containers, duas funções serverless), cada uma tem sua própria memória — um evento publicado numa não chega na outra, e presença/chat/chamada param de funcionar de forma confiável.

Por isso Vercel não funciona

Vercel roda cada rota como função serverless: sem processo persistente, sem memória compartilhada entre invocações, e com timeout de execução nas funções. As três rotas de Server-Sent Events do OpenCall dependem de manter uma conexão aberta indefinidamente com estado em memória — isso quebra o modelo do Vercel de raiz, não é só "vai ser lento". Adaptar pra Vercel exigiria trocar o pub/sub por Redis (Upstash, por exemplo) e não é algo coberto por esta documentação hoje.

Qualquer host que rode um container/processo de longa duração funciona: Railway, Fly.io, Render, um VPS com Docker — inclusive a mesma VPS do LiveKit self-host.

Opção recomendada: Railway

Cobra por uso real (CPU/RAM/rede), não por instância reservada. O plano Hobby (US$5/mês, esse valor já vira crédito de uso) cobre confortavelmente um app + Postgres de comunidade pequena/média — normalmente fica entre US$5-25/mês total.

Por que Railway e não outro host de container: a CLI (railway) é scriptável de ponta a ponta — criar projeto, setar env var, subir deploy, tudo por comando, sem navegar em dashboard. Isso é o que permite que uma IA provisione a infra inteira sozinha a partir do runbook para IA. Deploy automático a cada push do GitHub também vem de graça.

Passos

Crie conta em railway.com, conecte o GitHub.

New ProjectDeploy from GitHub repo → selecione o repo do OpenCall.

Menu de novo projeto no Railway com GitHub Repository em destaque

Lista de repositórios do GitHub pra selecionar

Adicione o Postgres (ver Banco de dados).

Menu de escolha de banco de dados com PostgreSQL em destaque

Na aba Variables do serviço do app, cole todas as variáveis desta documentação (ver Variáveis de ambiente).

SettingsNetworking → gere um domínio (*.up.railway.app) ou conecte um domínio próprio.

Volte no Discord Developer Portal e complete o Redirect URI com esse domínio definitivo.

O build usa o Dockerfile do repo automaticamente a cada push.

Opção: mesma VPS do LiveKit self-host

Só relevante se você já optou por self-host (ver LiveKit self-host). Economiza o custo de um segundo serviço, mas acopla deploy do app à manutenção do servidor de voz e exige você mesmo cuidar de process manager e deploy — ver a seção "Rodar o Next.js na mesma VPS?" naquela página antes de escolher esse caminho.

Custo de referência (verifique valores atuais)

On this page