OpenCall

Configurar o Discord

Criar o App OAuth (login e NextAuth), configurar o redirect URI, virar o primeiro admin e, se quiser, o bot de alertas de canal.

O Discord é o único jeito de logar no OpenCall — não tem cadastro por email/senha. Isso é o NextAuth por baixo dos panos: o provider de login é o DiscordProvider, e as duas únicas coisas que o NextAuth precisa de você são um segredo de sessão (NEXTAUTH_SECRET) e a URL pública do app (NEXTAUTH_URL) — sem conta ou dashboard separado pra "configurar o NextAuth", é tudo resolvido aqui.

Qualquer conta Discord consegue entrar; quem de fato ganha acesso aos canais é controlado depois, dentro do próprio app.

1. Criar a Application (login)

New Application → dê um nome (ex: o nome da sua comunidade).

Vá em OAuth2 (menu lateral). Copie:

  • Client ID → vira DISCORD_CLIENT_ID
  • Client Secret → vira DISCORD_CLIENT_SECRET (clique em "Reset Secret" se não aparecer de cara)

Tela de OAuth2 do Discord Developer Portal com Client ID e Client Secret em destaque

2. Configurar o Redirect URI

Ainda em OAuth2Redirects, adicione:

https://SEU-DOMINIO/api/auth/callback/discord

Campo de Redirect URI preenchido e botão Adicionar em destaque

Troque SEU-DOMINIO pelo domínio onde o Next.js vai ficar (ver Deploy do Next.js). Se você ainda não tem domínio definido, volte aqui depois — sem essa URL exata cadastrada, o login falha com redirect_uri_mismatch.

Ambiente local

Pra testar em pnpm dev, adicione também http://localhost:3000/api/auth/callback/discord como um segundo redirect.

3. Pegar seu Discord user ID

Isso vira o primeiro admin da instalação:

Discord → ConfiguraçõesAvançado → ative Modo desenvolvedor.

Clique com o botão direito no seu próprio nome/avatar em qualquer lugar do Discord → Copiar ID do usuário.

Guarde esse número — ele vai na variável BOOTSTRAP_ADMIN_DISCORD_IDS.

Como o acesso funciona (importante entender antes de configurar)

O login pelo Discord não é restrito por servidor/guild — qualquer pessoa com conta Discord consegue autenticar. O controle de acesso real é um allowlist manual dentro do próprio OpenCall: só quem tem a role ADMIN ou CANAL_ACCESS no banco consegue entrar nos canais.

Isso cria um problema óbvio numa instalação nova: ninguém tem ADMIN pra conceder acesso a ninguém. É pra isso que serve BOOTSTRAP_ADMIN_DISCORD_IDS — uma env var com o(s) Discord ID(s) que devem nascer já como ADMIN no primeiro login. Depois do primeiro login desses IDs, a variável pode ser removida sem efeito (só importa na criação do usuário).

Com o ADMIN logado, o resto do time ganha acesso em /admin/channels.

4. Bot do Discord (opcional — alertas de canal)

Passo separado do login — só necessário se você quiser que o OpenCall poste no seu servidor Discord quando alguém entra num canal de voz vazio ("bora participar? 🎙️"), e para o botão de "Convidar pro canal". Sem isso configurado, o resto do OpenCall funciona normalmente, só sem esses avisos.

O bot vive dentro da mesma Application criada no passo 1 — não é um app separado.

Na mesma Application, vá em Bot (menu lateral) → Add Bot.

Em Token, clique Reset Token e copie — vira DISCORD_BOT_TOKEN.

Seção Token na aba Bot com o botão Redefinir token em destaque

Nenhum Privileged Gateway Intent é necessário

O bot do OpenCall só faz chamadas REST pontuais (abrir DM, postar e apagar mensagem) — ele nunca mantém uma conexão de Gateway aberta. Pode deixar todos os "Privileged Gateway Intents" dessa página desligados.

Seção Intenções de gateway privilegiadas com as três chaves desligadas

Vá em OAuth2URL Generator. Em Scopes, marque bot. Em Bot Permissions, marque:

  • View Channel
  • Send Messages
  • Embed Links

Checkboxes de Ver canais, Enviar mensagens e Inserir links marcados no gerador de URL

Copie a URL gerada no fim da página, abra num navegador logado no Discord, e selecione o servidor da sua comunidade pra adicionar o bot.

No servidor, ative o Modo desenvolvedor (se ainda não fez no passo 3), clique com o botão direito no canal de texto onde os avisos devem aparecer → Copiar ID do canal → vira DISCORD_CHAT_CHANNEL_ID.

Variáveis desta etapa

VariávelValor
DISCORD_CLIENT_IDClient ID do passo 1
DISCORD_CLIENT_SECRETClient Secret do passo 1
BOOTSTRAP_ADMIN_DISCORD_IDSSeu Discord user ID (ou vários, separados por vírgula)
NEXTAUTH_SECRETGerado por você — openssl rand -base64 32
NEXTAUTH_URLhttps://SEU-DOMINIO (o mesmo domínio do redirect URI)
DISCORD_BOT_TOKEN(opcional) Token do passo 4
DISCORD_CHAT_CHANNEL_ID(opcional) Id do canal do passo 4

On this page