Estes guias mapeiam os conceitos de um setor para os objetos que a plataforma tem hoje (bouquets, lines, pacotes, contas de parceiro, nodes, a API). São mapeamentos conceituais, não recursos específicos de um setor, e uma conta de parceiro é uma conta delegada, não um tenant isolado.
Mapeamento conceitual
Nada no painel se chama curso ou aluno. A tabela diz qual objeto faz qual papel; os capítulos abaixo os configuram nessa ordem.
| No seu setor | Na plataforma | Onde no painel |
|---|---|---|
| Centro de treinamento ou parceiro de distribuição | Conta de parceiro (revendedor): um painel delegado com créditos, permissões e suas próprias lines | Users → adicionar um revendedor; Groups para suas permissões |
| Coleção de cursos | Bouquet: um conjunto nomeado de canais, filmes ou séries que um pacote concede | Bouquets, a partir de Streams e Movies / Series |
| Aulas gravadas | Catálogo de VOD: filmes e séries com temporadas e episódios, categorias e metadados | Movies e Series, ou a tarefa de ingestão de VOD |
| Aula ao vivo | Canal ao vivo: um stream com suas fontes, EPG e formatos de saída | Streams → adicionar um stream ao vivo (URL de origem ou envio por RTMP) |
| Acesso do aluno | Line: um acesso com seu pacote, bouquets, expiração, limite de conexões e saídas | Lines → adicionar, ou códigos de ativação, ou a Reseller API |
| Período de acesso ao curso | Data de expiração da line, renovada por um pacote, um crédito ou a API | A data de expiração da line e a duração do pacote |
| Limite de sessões simultâneas | Máximo de conexões da line: quantos dispositivos podem assistir ao mesmo tempo | O máximo de conexões da line |
| Integração com LMS ou plataforma de vendas | Reseller API e webhooks: as operações do painel a partir do seu próprio sistema | Chaves da Reseller API e webhooks no painel do revendedor |
Pré-requisitos
O que ter antes de instalar.
- Um servidor Linux (Ubuntu 22.04 ou 24.04) na rede do campus com Postgres, Redis e ffmpeg instalados pelo instalador, e um domínio ou um endereço interno para o painel e o player.
- As gravações que você vai publicar (arquivos ou um sistema de captura que consiga enviar RTMP) e, para aulas ao vivo, um encoder em cada sala que vai transmitir.
- Uma chave de licença: o plano Free não precisa de nenhuma; instituições elegíveis solicitam a chave Professional gratuita por e-mail, a partir do domínio acadêmico.
Implantação da infraestrutura
Instale o servidor de gerenciamento e depois um node por prédio.
- Execute o instalador no servidor de gerenciamento; ele instala o painel, a API, o worker e a origem como unidades systemd e cria o primeiro administrador.
- Defina a URL pública da API (API_PUBLIC_URL) e a base de reprodução para que os links do player apontem para o endereço do campus.
- Registre um node em Servers → adicionar um node para cada prédio cujas salas vão assistir; o painel o instala por SSH a partir do pacote do node.
- Confira a página Servers: o node reporta seu heartbeat e tráfego, e os espectadores desse prédio são direcionados a ele.
Organização do conteúdo
Cursos como séries, programas como bouquets e pacotes.
- Crie uma categoria por faculdade ou disciplina em Movies / Series.
- Adicione cada curso como uma série: uma temporada por módulo, um episódio por aula, com a gravação como fonte (envio ou a tarefa de ingestão de VOD).
- Crie um bouquet por coleção de cursos (por exemplo, os cursos de um programa em um período) a partir das séries adicionadas.
- Crie um pacote por programa: os bouquets que ele concede, o período de acesso como duração e o limite de sessões simultâneas.
Configuração de parceiros (revendedores)
Um centro de treinamento ou uma faculdade como conta delegada.
- Crie um grupo em Groups com as permissões de que o centro precisa (lines próprias, sem alterações no catálogo).
- Adicione o centro como revendedor em Users com esse grupo, um saldo de créditos e os pacotes que ele pode distribuir.
- Passe a ele o endereço do painel; é de lá que ele gerencia os próprios alunos, e o painel mantém o log de auditoria.
Configuração do acesso dos alunos
Uma line por aluno, criada na matrícula.
- Para turmas pequenas, adicione lines em Lines → adicionar com o pacote do programa; a expiração segue a duração do pacote.
- Para o dia da matrícula, gere códigos de ativação para o pacote; o aluno resgata um código no player e recebe uma line.
- Para um sistema acadêmico ou um LMS, crie uma chave da Reseller API e deixe o sistema criar lines com action=create_line e um ID de requisição por aluno.
- Defina o máximo de conexões como o número de dispositivos que um aluno pode usar ao mesmo tempo; o player recusa a conexão seguinte além do limite.
Configuração de VOD
Aulas gravadas sob demanda.
- Envie cada gravação como fonte de um episódio, ou aponte a tarefa de ingestão de VOD para o arquivo e deixe o worker baixá-lo e codificá-lo na raiz de mídia.
- Preencha os metadados (título, descrição, pôster) manualmente ou pelo TMDB para material público; as aulas geralmente precisam apenas de título e descrição.
- Confira a reprodução no player web com uma line de teste; o link é assinado e expira após o tempo configurado.
Streaming ao vivo de aulas
Uma palestra como canal ao vivo.
- Adicione um stream ao vivo em Streams com o encoder da sala como fonte (um endereço de envio RTMP ou uma URL de pull).
- Coloque o stream no bouquet do curso para que só os alunos matriculados o vejam; adicione-o ao EPG se você mantém uma grade de horários.
- Ative catch-up ou timeshift no stream quando os alunos puderem assistir a uma aula depois; a gravação também pode ser enviada como um episódio.
Assinatura e expiração do acesso
Um acesso que termina com o curso.
- Dê ao pacote o período de acesso como duração; uma line criada a partir dele expira ao fim desse período.
- Renove uma line para um novo período pelo painel, com um crédito do centro, ou pela API com action=renew_line.
- Inscreva seu sistema nos webhooks: ele é avisado quando uma line está para expirar, expirou ou foi desativada.
Integração com um LMS externo
O LMS controla o acesso; o player reproduz.
- Crie uma chave da Reseller API para o LMS; guarde-a nos segredos do LMS, nunca em uma página.
- Na matrícula, o LMS chama action=create_line com o pacote do programa e um ID de requisição; no cancelamento, action=disable_line.
- Aponte da página do curso no LMS para o player web ou entregue ao aluno as credenciais do player; não há single sign-on entre os dois.
Considerações de segurança
Mantenha o serviço dentro da instituição.
- Ative o login em duas etapas para todas as contas do painel e dê à equipe o menor grupo de permissões que funcione.
- Mantenha os dados pessoais dos alunos no sistema acadêmico; a line só precisa de um nome e de uma expiração.
- Mantenha o máximo de conexões baixo e considere vincular a reprodução ao endereço do espectador para evitar o compartilhamento.
- Ative o backup criptografado do banco de dados e, se você tem armazenamento compatível com S3, a cópia externa.
Solução de problemas
As primeiras verificações habituais.
- Um aluno não consegue entrar: verifique a expiração da line e se ela está ativada, depois o pacote e o bouquet do curso.
- Uma gravação não reproduz: verifique o resultado da tarefa de ingestão na página Jobs, depois o arquivo na raiz de mídia e a expiração do link assinado.
- Os espectadores de um prédio caem na origem: verifique o heartbeat do node e se o endereço do espectador está no roteamento do node.
- A API recusa uma chamada: verifique a chave, o método da ação (escritas são POST) e o ID de requisição de uma chamada repetida.