Skip to content

A arquitetura (o mapa)

Esta é a visão de engenharia do sistema. Se você só quer operar, a trilha Operar a rádio basta. Aqui a gente abre a caixa.

Tudo roda num único servidor (uma VPS Linux) que hospeda três camadas, mais alguns serviços de apoio na nuvem:

┌───────────────────────────────────────────┐
│ VPS (Linux, Docker) │
│ │
ouvinte ─────▶ │ AzuraCast ── motor de streaming (18) │
│ │ icecast + liquidsoap por rádio │
dono ─────▶ │ Painel InfoCel (Node) ── radio.infocel… │
│ │ API + banco SQLite (painel.db) │
│ Robôs (crons) ── conteúdo, hora, backup… │
│ Acervo BRLogic ── /opt/brlogic-content │
└───────────────┬───────────────────────────┘
Sites das rádios (Next.js) ──▶ Vercel (apelido.agoranoar.app.br)
Backups ─────────────────────▶ Google Drive (via rclone)
Alertas ─────────────────────▶ WhatsApp (via Ari)

É o software que toca as rádios. Cada rádio é uma station dentro dele, com dois componentes: Icecast (entrega o áudio pro ouvinte) e Liquidsoap (o “AutoDJ” que decide o que toca — música, vinheta, programete, hora certa). Roda em Docker. É o coração: se o AzuraCast está de pé, as rádios estão no ar.

Um servidor Node.js (serviço painel-infocel, gerenciado pelo systemd) que serve radio.infocelradios.com. É onde o dono de cada rádio entra e configura a dele. Guarda tudo num banco SQLite (painel.db): logins, planos, o conteúdo dos sites (CMS), locutores, chat, pedidos de música, hora certa. Também expõe a API que o site público consome.

Cada rádio tem um site público feito em Next.js, hospedado na Vercel, no endereço apelido.agoranoar.app.br. O conteúdo vem da API do painel (o que o dono preenche). Quando uma rádio nova é criada, o subdomínio é adicionado na Vercel automaticamente.

Uma pasta no servidor (/opt/brlogic-content) que guarda todo o conteúdo baixado do fornecedor: programas, programetes, campanhas, vinhetas, hora certa. Um catálogo em JSON lista tudo. É desse acervo que os robôs distribuem o conteúdo pra cada rádio.

Um conjunto de tarefas agendadas que rodam em horários certos: backup, download de conteúdo, distribuição, hora certa, e o vigia. Cada um está detalhado em As automações.

  • Google Drive — destino dos backups (banco, biblioteca de músicas, painel), via a ferramenta rclone.
  • Ari (WhatsApp) — o assistente da PSYCO que envia os alertas (rádio caiu, conteúdo vencido) pro grupo de WhatsApp.
  • Vercel — hospeda os sites das rádios.
  1. O ouvinte abre o site da rádio (Vercel) ou o player.
  2. O player aponta pro AzuraCast (Icecast), que entrega o áudio ao vivo.
  3. O que está tocando é decidido pelo Liquidsoap (AutoDJ) daquela rádio.
  1. O dono entra no painel (Node) e salva uma mudança.
  2. A mudança vai pro banco painel.db.
  3. O site (Next.js) lê a API do painel e reflete a mudança.

Pronto — esse é o mapa. Para o miolo das automações, siga para As automações (os crons).