Installation¶
Mcaster installs on one machine and runs there: engine, control panel and API in a single process. This page is about what the package puts down, where the secrets live and what is opened outwards. The path from a clean machine to a signal on the network is in the Quick start.
The package¶
Mcaster ships as the mcaster deb package from the Flussonic repository:
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
The package owns the whole installation surface:
| What | Where |
|---|---|
| Unit | mcaster.service |
| Process settings | /etc/mcaster/ — what the process itself needs at start: the panel's port, the database address, the licence |
| Secrets | /etc/mcaster/secrets.env (owned by root, mode 0600) |
| Licence | /etc/mcaster/license.txt |
| State | /var/lib/mcaster — machine identity, activation cache, keys |
| Interface | /usr/share/mcaster/ui |
The package pulls in the streaming engine of exactly its own version and PostgreSQL. The base sapsan.service unit is taken off such a machine: exactly one process must run. The products are mutually exclusive — Mcaster and Catena do not share a machine.
Note
A package upgrade does not restart a running unit. The machine moves onto the new binary + interface pair with a manual systemctl restart mcaster, so the restart stays the operator's decision rather than a side effect of apt upgrade.
Licence¶
Without a valid key the process does not start. The key is asked for during installation and written to /etc/mcaster/license.txt; for unattended rollouts it is fed in through debconf-set-selections or the LICENSE_KEY variable.
A key is issued for a product: the box declares itself as mcaster, and a key issued for another product will not fit it — no activation is granted, and that is visible in the log immediately rather than through a feature that does not work.
Leaving the question empty is allowed: the package installs, but the service stays in failed. Put the key into the same file and run systemctl start mcaster.
PostgreSQL¶
Mcaster is a control installation, and it keeps its state (streams, machines, statistics, journal) in PostgreSQL. The post-install creates the mcaster role and database, generates the database and administrator passwords and writes them into /etc/mcaster/secrets.env:
DATABASE_URL=postgres://mcaster:...@127.0.0.1:5432/mcaster
EDIT_AUTH_PASSWORD=...
A package upgrade does not rotate the secrets. To move the database onto a managed cluster with backups, change DATABASE_URL and restart the service — Mcaster applies its schema itself at start, there is no separate migration step.
Ports¶
Out of the box HTTP port 80 comes up — an initial value that holds only until listeners are set in the panel. After that the ports belong to the machine's settings and are edited there.
| Port | Set by | What for |
|---|---|---|
| HTTP (initially 80) | INITIAL_HTTP_PORT, then the machine's settings |
Panel, API, HTTP output |
| UDP inputs | The port of each multicast source | MPEG-TS ingest |
| SRT (UDP) | The stream's SRT serving port or the shared listener | SRT ingest and output |
| RTMP (TCP) | A listener in the machine's settings | RTMP ingest and output |
Outgoing destinations occupy no ports: a push opens its socket itself.
Multicast needs attention to routes. Ingest is a group subscription (IGMP/MLD) on the interface where the group arrives; egress is the outgoing interface and TTL choice on the destination itself. On a machine with several network cards both choices are made explicitly, otherwise the packets leave into the wrong network.
Running in Docker¶
The product image is flussonic/mcaster: the shared runtime plus the Mcaster interface and the product tag. It needs PostgreSQL, a licence key and a persistent state directory:
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
The media protocol ports that the stream settings turn on are published here as well. The state directory must survive restarts: it holds the machine identity and the activation.
Check¶
systemctl status mcaster
journalctl -u mcaster -n 50
Next is the Quick start: logging into the panel, the first multicast taken in and the first delivery destination.