Instalação¶
O Mcaster se instala numa máquina e nela mesma roda: motor, painel de controle e API num único processo. Esta página é sobre o que o pacote instala, onde vivem os segredos e o que fica aberto para fora. O caminho de uma máquina limpa até um sinal na rede está no Início rápido.
O pacote¶
O Mcaster é distribuído como pacote deb mcaster do repositório da Flussonic:
curl -L http://apt.flussonic.com/repo/master/dev.key > /etc/apt/trusted.gpg.d/dev.gpg
echo "deb http://apt.flussonic.com/branch/sapsan/master repo/" > /etc/apt/sources.list.d/flussonic.list
apt update
apt install --install-recommends mcaster
O pacote cuida de toda a superfície da instalação:
| O quê | Onde |
|---|---|
| Unidade | mcaster.service |
| Configurações do processo | /etc/mcaster/ — o que o próprio processo precisa ao iniciar: a porta do painel, o endereço do banco, a licença |
| Segredos | /etc/mcaster/secrets.env (proprietário root, modo 0600) |
| Licença | /etc/mcaster/license.txt |
| Estado | /var/lib/mcaster — identidade da máquina, cache de ativação, chaves |
| Interface | /usr/share/mcaster/ui |
O pacote instala automaticamente o motor de streaming exatamente na sua própria versão, junto com o PostgreSQL. A unidade base sapsan.service é retirada de uma máquina assim: deve rodar exatamente um processo. Os produtos são mutuamente exclusivos — Mcaster e Catena não dividem a mesma máquina.
Note
A atualização do pacote não reinicia uma unidade em execução. A máquina passa para o novo par «binário + interface» com um systemctl restart mcaster manual — assim o reinício continua sendo uma decisão do operador, e não um efeito colateral do apt upgrade.
Licença¶
Sem uma chave válida o processo não inicia. A chave é pedida durante a instalação e gravada em /etc/mcaster/license.txt; para implantações não assistidas ela é fornecida por meio de debconf-set-selections ou da variável LICENSE_KEY.
A chave é emitida para um produto: a máquina se declara como mcaster, e uma chave emitida para outro produto não serve — nenhuma ativação é concedida, e isso aparece no log imediatamente, e não por meio de uma função que não funciona.
Deixar a pergunta vazia é permitido: o pacote instala, mas o serviço fica em failed. Coloque a chave no mesmo arquivo e execute systemctl start mcaster.
PostgreSQL¶
O Mcaster é uma instalação de controle e mantém seu estado (streams, máquinas, estatísticas, registro) no PostgreSQL. O pós-instalação cria a role e o banco de dados mcaster, gera as senhas do banco e do administrador e as grava em /etc/mcaster/secrets.env:
DATABASE_URL=postgres://mcaster:...@127.0.0.1:5432/mcaster
EDIT_AUTH_PASSWORD=...
A atualização do pacote não rotaciona os segredos. Para mover o banco de dados para um cluster gerenciado com backups, troque o DATABASE_URL e reinicie o serviço — o Mcaster aplica seu esquema sozinho ao iniciar, não há uma etapa de migração separada.
Portas¶
Logo após a instalação, sobe a porta HTTP 80 — um valor inicial que vale só até os listeners serem definidos no painel. Depois disso as portas pertencem às configurações da máquina e são editadas lá.
| Porta | Quem define | Para quê |
|---|---|---|
| HTTP (inicialmente 80) | INITIAL_HTTP_PORT, depois as configurações da máquina |
Painel, API, saída por HTTP |
| Entradas UDP | A porta de cada fonte multicast | Captura de MPEG-TS |
| SRT (UDP) | A porta de serviço SRT do stream ou o listener compartilhado | Captura e saída por SRT |
| RTMP (TCP) | Um listener nas configurações da máquina | Captura e saída por RTMP |
Os destinos de saída não ocupam portas: um push abre o próprio socket.
O multicast exige atenção às rotas. A captura é uma assinatura do grupo (IGMP/MLD) na interface por onde o grupo chega; a saída é a escolha da interface de saída e do TTL no próprio destino. Numa máquina com várias placas de rede, as duas escolhas são feitas explicitamente; caso contrário, os pacotes saem pela rede errada.
Execução em Docker¶
A imagem de produto é flussonic/mcaster: o runtime compartilhado mais a interface do Mcaster e a tag de produto. Ela precisa do PostgreSQL, de uma chave de licença e de um diretório de estado persistente:
docker run -d --name mcaster \
-e DATABASE_URL=postgres://mcaster:mcaster@db:5432/mcaster \
-e EDIT_AUTH_LOGIN=admin -e EDIT_AUTH_PASSWORD=secret \
-e LICENSE_KEY="$LICENSE_KEY" \
-p 8081:80 \
-v mcaster-state:/var/lib/sapsan \
flussonic/mcaster:latest
As portas de protocolos de mídia que as configurações dos streams ativarem são publicadas aqui também. O diretório de estado precisa sobreviver a reinícios: ele guarda a identidade da máquina e a ativação.
Verificação¶
systemctl status mcaster
journalctl -u mcaster -n 50
Em seguida vem o Início rápido: entrar no painel, o primeiro multicast capturado e o primeiro destino de entrega.