Installation

Instalar C21 Live Control y C21 Live Encoder en un único host

Ejecuta C21 Live Control y C21 Live Encoder en un único host — reparto de puertos, orden de instalación, paso del Control al puerto 9443, licencias, certificado, firewall e impacto de las actualizaciones.

Cuándo usar este despliegue

Un único host ejecuta C21 Live Control (un stack Docker compose) y C21 Live Encoder (el motor de codificación y su Apache, instalados en el host). Live Control gobierna el Encoder de su propio host desde la sección Devices, y puede gobernar además otros Encoders en otros hosts.

Este despliegue encaja cuando hay pocos hosts disponibles; por ejemplo, una VM cloud que tiene que aportar a la vez el plano de control y la primera capacidad de codificación. Si dispones de más de un host, el despliegue estándar — el Control y cada Encoder en su propio host — es más sencillo de operar: sigue Instalar C21 Live Control e Instalar C21 Live Encoder.

Actualizar Live Control interrumpe el Encoder local. Cada actualización de Live Control reinicia el servicio Docker, y el servicio del Encoder se para y arranca con él. Los Live streams del Encoder del mismo host se cortan entre uno y dos minutos y después se recuperan solos. Planifica cada actualización de Live Control en una ventana de mantenimiento — consulta Actualizaciones en un host compartido.

Cómo conviven los dos productos

Los dos productos sirven HTTPS en el puerto 443 por defecto, así que uno de ellos tiene que moverse. Todo lo demás convive sin cambios.

PuertoLive ControlLive EncoderEn un host compartido
443/tcpHTTPS — UI operador y API RESTHTTPS — API del Encoder y salidasConflicto. Live Control pasa a 9443.
80/tcp—HTTPSin cambios.
9080/tcpHTTP (redirige a HTTPS)—Sin cambios.
3100/tcpServidor MCP—Sin cambios.
8484/tcp—Entrega de salidasSin cambios.

Se mueve Live Control y no el Encoder porque:

  • Live Control llega a cada Encoder registrado en https://<ip-del-encoder>/ — el formulario del Device pide una IP, no un puerto.
  • Los players, CDNs y orígenes que recogen la salida local del Encoder la piden al puerto 443.

Los dos productos comparten además el fingerprint del host: la licencia de ambos queda ligada al mismo valor.

Antes de empezar

  • Un host que cumpla los prerrequisitos de los dos productos — consulta Preparar el host, Instalar C21 Live Control e Instalar C21 Live Encoder. Dimensiona CPU y RAM para la carga del Encoder más el stack del Control, que está limitado a 4 cores y 3 GiB de RAM.
  • Ubuntu 24.04 LTS (lo exige el Encoder) con IP fija.
  • El certificado de plataforma y su clave privada para el host, emitidos por Cires21 para la IP del host (cadena completa: leaf e intermedia). El certificado autofirmado que generan los instaladores no basta: Live Control tiene que poder validar el certificado del Encoder para registrarlo.
  • La misma versión de destino para los dos productos, y 6.12.0 o posterior en todos los Encoders que gobierne este Control — locales y remotos. Desde 6.12.0, Live Control entrega los logos y los ficheros de blackout al Encoder antes de cada orden. Los Encoders anteriores los descargan de Live Control en el puerto 443, que en este host responde como el Encoder, así que en ellos fallan los logos y los blackouts.
  • Una ventana de mantenimiento — el instalador del Encoder actualiza el servidor SSH y corta las sesiones SSH entre uno y dos minutos.
Lanza los dos instaladores desacoplados de la sesión SSH (por ejemplo con nohup) para que el reinicio de SSH no aborte la instalación, y sigue el progreso en el log.

Pasos

1. Prepara el host

Aplica Preparar el host — DNS, NTP, swap y política de actualizaciones del SO. Para el firewall, sigue el paso 8 de esta página en lugar de la sección ufw de aquella: en un host compartido los puertos del Control los publica Docker y necesitan otro juego de reglas.

2. Instala primero Live Control

Live Control va primero porque su instalador exige que el puerto 443 esté libre. Cuando pase a 9443 en el paso siguiente, el 443 queda libre para el Encoder.

sudo nohup bash -c "curl -fsSL https://get.cires21.com/livecontrol \
  | bash -s -- --version <X.Y.Z> --yes; echo INSTALL_EXIT=\$?" > /tmp/lc-install.log 2>&1 &
tail -f /tmp/lc-install.log      # Espera a INSTALL_EXIT=0

Guarda los datos de acceso y las credenciales iniciales que el instalador imprime al final del log.

A partir de aquí la UI operador y el servidor MCP son accesibles desde cualquier dirección que llegue al host, y admin conserva su contraseña inicial. En un host expuesto a Internet, aplica la parte del Control del firewall (paso 8) justo después del paso 3, antes de seguir.

3. Pasa el HTTPS de Live Control al puerto 9443

Crea un override de compose en el directorio de instalación de Live Control (/opt/livecontrol por defecto). El instalador solo regenera docker-compose.yml, así que este fichero sobrevive a las actualizaciones.

sudo tee /opt/livecontrol/docker-compose.override.yml >/dev/null <<'EOF'
# Host compartido Control + Encoder: el Encoder sirve HTTPS en 443.
services:
  livecontrol:
    ports: !override
      - "9080:80"
      - "9443:443"
EOF
sudo systemctl restart livecontrol   # Recrea los contenedores con los puertos nuevos

livecontrol restart no basta aquí: reinicia los contenedores sin aplicar el nuevo mapeo de puertos. La etiqueta !override requiere Docker Compose 2.24.4 o posterior — compruébalo con docker compose version. Verifica que Live Control responde en 9443 y que el 443 está libre:

curl -sk -o /dev/null -w "%{http_code}\n" https://127.0.0.1:9443/   # 200
sudo ss -ltnp | grep ':443 '                                         # Sin salida

A partir de aquí la UI operador está en https://<host>:9443/.

4. Instala Live Encoder

sudo nohup bash -c "curl -fsSL https://get.cires21.com/liveencoder \
  | bash -s -- --version <X.Y.Z> --yes; echo INSTALL_EXIT=\$?" > /tmp/le-install.log 2>&1 &
tail -f /tmp/le-install.log      # Espera a INSTALL_EXIT=0; SSH se corta 1–2 minutos durante la ejecución

En una VM cloud sin tarjetas de captura ni GPU, añade --skip-drivers a los flags del instalador. Live Control sigue en marcha durante la instalación del Encoder.

5. Instala las licencias

Los dos productos muestran el mismo fingerprint:

sudo livecontrol license info
sudo liveencoder license info

Envía ese único valor a tu representante de Cires21 junto con los slots de producto que cubre tu contrato. Cires21 devuelve un fichero de licencia por producto; instala cada uno con su propia CLI:

sudo livecontrol license install /ruta/a/licencia-control.txt
sudo livecontrol restart
sudo livecontrol license verify

sudo liveencoder license install /ruta/a/licencia-encoder.txt
sudo liveencoder restart
sudo liveencoder license verify

Consulta Licencias para ver los slots de cada producto.

6. Instala el certificado en los dos productos

Los dos productos presentan el mismo certificado: el Encoder a través de su Apache en 443, Live Control en 9443.

# Live Encoder
sudo install -m 644 <host>.crt /etc/ssl/certs/cert.pem
sudo install -m 600 <host>.key /etc/ssl/private/private-key.pem
sudo apache2ctl configtest && sudo systemctl reload apache2

# Live Control
sudo livecontrol ssl import <host>.crt <host>.key

Comprueba que Live Control valida el certificado del Encoder. Live Control llega al Encoder por la IP del host, igual que llegaría a un Encoder remoto:

sudo docker exec livecontrol curl -s -o /dev/null -w "%{ssl_verify_result}\n" https://<ip-del-host>/   # 0

Cualquier valor distinto de 0 indica que la cadena del certificado o la IP del certificado no coinciden, y el registro del Encoder del paso 9 fallará.

7. Primer acceso y rotación de la contraseña de admin

Abre https://<host>:9443/ y entra como admin con la contraseña inicial que imprimió el instalador. La UI te pide rotar la contraseña antes de cualquier otra operación. Mientras no se rote, la API REST y el servidor MCP rechazan todas las peticiones hechas con la cuenta admin.

livecontrol security password reset no sustituye este paso: fija una contraseña nueva, pero deja la cuenta pendiente de rotación.

Servidor MCP incluido. El servidor MCP que se instala con Live Control se autentica con la cuenta admin, usando la contraseña guardada en el directorio de instalación (/opt/livecontrol por defecto). Tras la rotación, sustituye la contraseña de admin por la nueva en los ficheros .env y .credentials de ese directorio, y recrea el servicio MCP con cd /opt/livecontrol && sudo docker compose up -d livecontrol-mcp.

8. Configura el firewall

Los dos productos necesitan dos juegos de reglas distintos, porque sus puertos llegan al host por caminos distintos:

ProductoCómo se exponen sus puertosDónde filtrar
Live EncoderDirectamente en el host: 80, 443, 8484 y los puertos de ingesta de tus Channels (SRT, RTMP, UDP…).El firewall del host (ufw o la cadena INPUT), como siempre.
Live ControlPublicados por Docker: 9443, 9080, 3100.La cadena DOCKER-USER. Los puertos que publica Docker no pasan por la cadena INPUT, así que las reglas de ufw no se les aplican.

Sin reglas en DOCKER-USER, los puertos del Control — servidor MCP incluido — quedan abiertos a cualquier dirección que llegue al host.

Encoder. Mantén la política de tu despliegue: permite los puertos de ingesta que usan tus fuentes y restringe 80 / 443 / 8484 a los clientes que recogen la salida del Encoder y a cualquier otro Live Control que gobierne este Encoder. Si restringes el 443, repite después la comprobación del certificado del paso 6 para confirmar que el Live Control local sigue llegando al Encoder.

Con una política que deniega por defecto, permite también el tráfico multicast propio del Encoder. El Encoder se lo envía a sí mismo y llega por la interfaz WAN con la IP del host como origen; si el firewall lo descarta, los Live streams en marcha se paran:

sudo ufw allow in on <interfaz-wan> from <ip-del-host> to 224.0.0.0/4 proto udp comment 'Encoder internal multicast'

El Live Control local se ejecuta en un contenedor, así que sus peticiones llegan al Encoder desde la red Docker de Live Control, no desde la IP del host. Permite esa subred en el 443 — Live Control no usa el 80 ni el 8484 del Encoder:

sudo docker network inspect livecontrol_network -f '{{(index .IPAM.Config 0).Subnet}}'   # Por ejemplo 172.18.0.0/16
sudo ufw allow from <subred-docker-control> to any port 443 proto tcp comment 'Encoder HTTPS desde el Control local'

Control. El script siguiente permite los orígenes indicados y descarta todo lo demás que entra por la interfaz WAN. Las respuestas a conexiones iniciadas desde el host y el tráfico entre contenedores no se ven afectados.

#!/usr/bin/env bash
# /usr/local/sbin/c21-docker-user-fw.sh
set -euo pipefail
WAN_IF="<interfaz-wan>"                          # Por ejemplo eth0
ALLOW_SRC="<ip-oficina>/32 <subred-vpn>"         # Orígenes con acceso a 9443, 9080 y 3100

for ipt in iptables ip6tables; do                # Docker también publica en IPv6
  $ipt -N DOCKER-USER 2>/dev/null || true
  $ipt -F DOCKER-USER
  $ipt -A DOCKER-USER -i "$WAN_IF" -m conntrack --ctstate RELATED,ESTABLISHED -j RETURN
done
for src in $ALLOW_SRC; do
  case "$src" in *:*) ipt=ip6tables ;; *) ipt=iptables ;; esac
  $ipt -A DOCKER-USER -i "$WAN_IF" -s "$src" -j RETURN
done
for ipt in iptables ip6tables; do
  $ipt -A DOCKER-USER -i "$WAN_IF" -j DROP
  $ipt -A DOCKER-USER -j RETURN
done

Las reglas de iptables solo viven en memoria y se pierden al reiniciar el host, así que aplica el script desde una unit de systemd ligada a Docker: se ejecuta cada vez que arranca Docker, también tras un reinicio y tras una actualización de Live Control.

# /etc/systemd/system/c21-docker-user-fw.service
[Unit]
Description=DOCKER-USER rules for C21 Live Control
After=docker.service
PartOf=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/sbin/c21-docker-user-fw.sh

[Install]
WantedBy=docker.service
sudo chmod 755 /usr/local/sbin/c21-docker-user-fw.sh
sudo systemctl daemon-reload
sudo systemctl enable --now c21-docker-user-fw.service
sudo iptables -S DOCKER-USER

Desde una dirección fuera de la lista permitida, los puertos 9443, 9080 y 3100 deben aparecer cerrados.

9. Registra el Encoder en Live Control

En la UI de Live Control abre Devices → Add device y registra el Encoder de este host como registrarías cualquier otro — consulta Instalar C21 Live Encoder, paso 4:

  • Server IP — la IP del host, la misma para la que se emitió el certificado. Sin puerto: Live Control llega al Encoder en el 443.
  • Register username / Register password — las credenciales admin del Encoder (sudo liveencoder credentials show / credentials reset).

La fila del Device debe mostrar registration_status: registered. Los demás Encoders, en otros hosts, se registran de la misma forma.

10. Verifica

curl -sk -o /dev/null -w "%{http_code}\n" https://127.0.0.1:9443/   # UI de Live Control: 200
sudo livecontrol status                                             # Servicios de Live Control sanos
sudo liveencoder status                                             # Servicio del Encoder en marcha
sudo iptables -S DOCKER-USER                                        # Firewall del Control aplicado

Después lanza un Live stream de prueba en el Encoder local y comprueba que su salida se sirve desde https://<host>/.

Actualizaciones en un host compartido

Actualiza los dos productos en la misma ventana de mantenimiento, con la operación parada:

ActualizaciónEfecto en el host compartido
Live ControlLa actualización reconfigura y reinicia el servicio Docker. El servicio del Encoder depende de Docker, así que se para y arranca con él: los Live streams locales se cortan entre uno y dos minutos y se recuperan solos. El override de puertos y las reglas de DOCKER-USER se mantienen.
Live EncoderLive Control no se ve afectado. Las sesiones SSH pueden cortarse mientras se actualiza el servidor SSH.

Sigue el orden recomendado en Actualizaciones — primero el Encoder, después Live Control — y tras actualizar Live Control comprueba:

curl -sk -o /dev/null -w "%{http_code}\n" https://127.0.0.1:9443/   # Live Control sigue en 9443
sudo liveencoder status                                             # Encoder de vuelta
sudo iptables -S DOCKER-USER                                        # Reglas de firewall en su sitio

Enlaces relacionados

Copyright © 2026