Installation

Preparar el host

Lleva un host Linux al estado conocido que esperan los instaladores de C21 Live Control y C21 Live Encoder.

Los instaladores esperan que el host esté en un estado de partida conocido. Esta página describe los prerrequisitos y entrega comandos copy-paste para satisfacerlos en un Ubuntu 24.04 LTS estándar.

Ejecuta cada paso en cada host antes del instalador. Ambos productos comparten la mayoría de prerrequisitos; las diferencias se marcan cuando aplican.

1. Plataforma

ControlEncoder
Sistema operativoUbuntu 22.04 LTS o 24.04 LTSUbuntu 24.04 LTS
Kernelcualquiera≥ 6.8
Arquitecturax86_64x86_64
CPU2 cores mínimo, 4+ recomendados4 cores mínimo, 8+ recomendados
RAM4 GiB mínimo, 8+ GiB recomendados8 GiB mínimo, 16+ GiB recomendados
Disco libre en /20 GiB50 GiB (más si las grabaciones permanecen en local)
Swaprecomendado ≥ 4 GiB en hosts con < 8 GiB de RAMrecomendado ≥ 4 GiB en hosts con < 16 GiB de RAM

Ambos productos funcionan sobre Ubuntu Pro sin cambios si tu política de seguridad lo requiere.

2. Red saliente

El instalador descarga desde CloudFront y Docker Hub. El host necesita salida HTTPS a:

  • https://get.cires21.com/*
  • https://hub.docker.com/*, https://registry-1.docker.io/*, https://auth.docker.io/*, https://production.cloudflare.docker.com/*

Si operas detrás de un proxy corporativo, añade los anteriores al allow-list y configura https_proxy / http_proxy para tu shell interactivo y para sudo -E.

3. DNS — resolver público

Añade un resolver público para que el host pueda llegar al Docker registry y al CDN de bootstrap.

sudo mkdir -p /etc/systemd/resolved.conf.d
sudo tee /etc/systemd/resolved.conf.d/google.conf >/dev/null <<EOF
[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=
DNSStubListener=yes
EOF
sudo systemctl restart systemd-resolved
getent hosts get.cires21.com
getent hosts hub.docker.com

Sustituye por tus propios resolvers si tu red tiene una política más estricta. Las VMs cloud suelen requerir este drop-in porque vienen configuradas solo contra el resolver del VPC.

4. NTP — hora precisa

Los handshakes TLS contra el Docker registry fallan con desviación de reloj. Configura NTP antes del instalador.

Las imágenes Ubuntu Server cloud traen chrony activo por defecto. Añade el pool NTP de Cires21 a la configuración existente:

sudo timedatectl set-timezone Europe/Madrid
sudo tee /etc/chrony/sources.d/cires21.sources >/dev/null <<EOF
pool hora.cires21.com iburst maxsources 4
EOF
sudo systemctl restart chrony
chronyc sources -v

En hosts que traen systemd-timesyncd en vez de chrony, el drop-in equivalente es /etc/systemd/timesyncd.conf.d/cires21.conf con NTP=hora.cires21.com. El host debe estar dentro de unos pocos segundos del tiempo real antes de ejecutar el instalador.

5. Firewall — ufw

Aplica las reglas en este orden para no quedarte sin acceso SSH:

sudo apt-get update -qq
sudo apt-get install -y ufw

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH'

# Host de Control — 9080 / 443 / 3100 no necesitan regla ufw: los publica Docker (consulta la nota de abajo)

# Host de Encoder — restringe al host de Control o a su subnet del VPC
sudo ufw allow from <ip-o-subnet-de-control> to any port 80 proto tcp comment 'Encoder HTTP desde Control'
sudo ufw allow from <ip-o-subnet-de-control> to any port 443 proto tcp comment 'Encoder HTTPS desde Control'
sudo ufw allow from <ip-o-subnet-de-control> to any port 8484 proto tcp comment 'Encoder c21publisher desde Control'
sudo ufw allow in on <interfaz-wan> from <ip-del-host> to 224.0.0.0/4 proto udp comment 'Encoder internal multicast'   # Imprescindible: sin ella los Live streams se paran

sudo ufw --force enable
sudo ufw status verbose
ufw no filtra los puertos del Control. Live Control publica 9080 (HTTP), 443 (HTTPS) y 3100 (servidor MCP) a través de Docker, y los puertos que publica Docker no pasan por la cadena INPUT que gestiona ufw — siguen accesibles diga lo que diga la política de ufw. Para restringir quién llega a ellos, añade reglas a la cadena DOCKER-USER: consulta el paso 8 de Control y Encoder en un único host, que aplica sin cambios a un host solo de Control. Si este Control gobierna Encoders anteriores a 6.12.0, añade sus IPs a la lista permitida: esas versiones descargan los logos y los ficheros de blackout de Live Control en su puerto HTTPS.

Para deploys donde quieras un reverse-proxy público delante de Control, termina TLS en el proxy y reenvía al puerto HTTPS del Control (127.0.0.1:443 por defecto). Si el propio proxy escucha en 443 en el mismo host, mueve antes el puerto HTTPS del Control con el override de compose descrito en el paso 3 de Control y Encoder en un único host.

6. Swap

Si el host tiene menos RAM de la recomendada, añade swap:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

El instalador descarga varios GB de imágenes Docker. Sin swap en hosts pequeños, apt install y los docker pull simultáneos pueden agotar la memoria.

7. Siguiente paso

Con el host preparado, sigue la página de instalación del producto correspondiente:

Copyright © 2026