O que acontece ao criar uma rádio
Do lado operacional, “criar rádio” é um passo + esperar 10 min. Aqui está o que realmente acontece por baixo.
Passo 1 — nasce no AzuraCast (manual)
Section titled “Passo 1 — nasce no AzuraCast (manual)”Uma station nova é criada no AzuraCast, via API de administração
(POST /api/admin/stations) ou pela tela de admin. No corpo vão os dados básicos:
{ "name": "Rádio Nova", "short_name": "radionova", "frontend_type": "icecast", "backend_type": "liquidsoap", "timezone": "America/Sao_Paulo", "enable_public_page": true, "enable_requests": true, "enable_streamers": true}Isso cria o par Icecast + Liquidsoap da rádio e o mount de áudio. O short_name
(apelido/shortcode) é a chave que amarra tudo daqui pra frente.
Passo 2 — o robô provisiona (automático, ≤10 min)
Section titled “Passo 2 — o robô provisiona (automático, ≤10 min)”O cron provision-radios.mjs (a cada 10 min) lê as estações direto da API pública do
AzuraCast e, pra cada uma que ainda não existe no painel:
- Cria a rádio no painel (
createRadionopainel.db): usuário = shortcode, senha inicial =<shortcode>2026, vinculada aostation_ide ao nome reais. - Adiciona o subdomínio na Vercel (projeto
sites):<slug>.agoranoar.app.br, com emissão de certificado (http-01). O seed do site é gerado on-the-fly pelo app.
Resultado: “criou no AzuraCast → em até 10 min o site está no ar sozinho”. O robô é idempotente — as rádios que já existem são puladas (não mexe nas antigas).
Passo 3 — entra na rotina dos robôs
Section titled “Passo 3 — entra na rotina dos robôs”A partir daí, a rádio nova é tratada como qualquer outra pelos demais crons:
- Hora certa passa a atualizar o áudio dela (se ligada);
- Distribuição de conteúdo (programas/programetes; campanhas e vinhetas conforme o plano) já a inclui;
- Regra de fade é aplicada nela no próximo ciclo;
- O vigia passa a monitorá-la;
- Ela entra nos backups.
Passo 4 — plano e qualidade (manual)
Section titled “Passo 4 — plano e qualidade (manual)”Aqui está o vão do processo. Duas coisas não são automáticas:
- O tier (plano). A rádio nasce Essencial (o campo
radios.tierfica vazio, e o código trata vazio =essencial). Pra mudar, usa-se o endpoint adminPOST /api/admin/tiercom{ station_id, tier }. - O bitrate. A qualidade do mount (128/192/256) é alinhada ao plano por um passo à parte — hoje um ajuste manual/script, não parte da criação.
Resumo do fluxo
Section titled “Resumo do fluxo”[Admin] cria station no AzuraCast │ (shortcode = chave) ▼[Cron 10min] provision-radios: ├─ cria rádio no painel (senha <shortcode>2026) └─ cria subdomínio na Vercel (site no ar) │ ▼[Automático] entra em: hora certa · conteúdo · fade · vigia · backup │ ▼[Plano] o admin escolhe o tier na criação → tier + bitrate aplicados (alvo: campo no AzuraCast lido pelo provision-radios; ver caution acima)