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 — UI operador + API + relay WebSocket + servidor MCP
sudo ufw allow 9080/tcp comment 'Control HTTP (redirige a HTTPS)'
sudo ufw allow 9443/tcp comment 'Control HTTPS UI'
sudo ufw allow 3000/tcp comment 'Control NOC WebSocket relay'
sudo ufw allow 3100/tcp comment 'Control MCP server'

# 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 --force enable
sudo ufw status verbose

Para deploys donde quieras un reverse-proxy público delante de Control, termina TLS en el proxy y reenvía a 127.0.0.1:9443. Las reglas ufw anteriores cubren la ruta de fallback a nivel 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