Loading...
Instalar CCcam Server en Ubuntu: Guía Completa de Configuración

Instalar CCcam Server en Ubuntu: Guía de Configuración Completa

Si está intentando hacer una instalación de servidor cccam en ubuntu y se encuentra con obstáculos — bibliotecas faltantes, bloqueos silenciosos, clientes que no se conectan — no está solo. Esta es una de esas configuraciones donde la documentación está dispersa, desactualizada o escrita para Debian Lenny. Esta guía cubre el proceso completo desde cero: dependencias, ubicación binaria, servicio systemd, sintaxis del archivo de configuración, reglas del firewall y endurecimiento. Comandos reales, rutas de archivo reales, sin rodeos.

Requisitos Previos Antes de Instalar CCcam en Ubuntu

Antes de tocar el binario, prepare su sistema. Omitir esta parte es el motivo por el cual la mayoría de las instalaciones fallan silenciosamente.

Versiones de Ubuntu Compatibles (18.04, 20.04, 22.04)

Ubuntu 20.04 LTS es el punto óptimo en este momento. 18.04 llegó al final de su vida útil en abril de 2023, así que no lo use para nada que le importe. 22.04 funciona pero introduce un problema de multiarch con libssl — más sobre eso abajo. Si está en 22.04, espere pasar tiempo extra en compatibilidad de bibliotecas. Cualquier cosa más antigua que 18.04 es un callejón sin salida.

Hardware Requerido: Lectores de Tarjetas Inteligentes y Tarjetas CAM

Necesita un lector de tarjetas inteligentes físico que Linux reconozca. Los lectores USB (como Omnikey 3121 o Gemalto PC Twin) son el camino más fácil. Las ranuras CI+ internas aparecen como /dev/ci0 o similar — la ruta del dispositivo difiere, y deberá verificarla manualmente con ls /dev/ci*. Si tiene varios lectores conectados, CCcam intentará captar el primero que encuentre, así que sepa qué ruta de dispositivo corresponde a qué lector antes de configurar nada.

¿Ejecutándose en una Raspberry Pi? Deténgase aquí. CCcam es un binario x86 — no se ejecutará en ARM. Use OScam en su lugar, que tiene compilaciones ARM nativas.

Paquetes Requeridos: libssl, libpcsclite, pcscd

Primero, agregue soporte de arquitectura i386. En un sistema Ubuntu de 64 bits esto es innegociable:

sudo dpkg --add-architecture i386
sudo apt update

Luego instale los paquetes requeridos:

sudo apt install pcscd libpcsclite1 libpcsclite-dev \ libssl-dev libc6:i386 libstdc++6:i386 libpcsclite1:i386

En Ubuntu 22.04, libssl1.0 se ha ido. Necesita libssl1.1:i386 en su lugar. Si eso tampoco está disponible en los repositorios, puede que necesite extraer el .deb del grupo de Ubuntu 20.04 e instalarlo manualmente con dpkg -i. Es molesto pero funciona.

Verificar Módulo del Kernel para Lector de Tarjetas Inteligentes (pcsc_scan)

Instale y ejecute pcsc_scan antes de hacer cualquier cosa con CCcam:

sudo apt install pcsc-tools
sudo systemctl start pcscd
pcsc_scan

Si su lector de tarjetas aparece y la tarjeta se detecta, está bien. Si pcsc_scan se cuelga o reporta que no hay lectores, el problema está a nivel del sistema operativo y CCcam no puede arreglarlo. Compruebe dmesg | grep -i usb para ver si el lector fue reconocido cuando lo conectó. El p

daemon cscd debe estar ejecutándose antes de que CCcam inicie — si no lo está, CCcam registrará can't open /dev/pcsc y tu tarjeta no irá a ningún lado.

Descargar e Instalar el Binario de CCcam en Ubuntu

CCcam no tiene canal de distribución oficial — los desarrolladores cerraron hace años. Las versiones comunes que aún circulan son 2.1.4, 2.2.1 y 2.3.0. La versión 2.3.0 tiene la mejor compatibilidad de cliente. Obtén el binario de una fuente en la que confíes (foros de satélite, archivos de la comunidad). No nombres, enlaces ni dependas de sitios de revendedores aleatorios — algunos distribuyen binarios modificados.

Dónde Obtener el Binario de CCcam (versión 2.1.4, 2.2.1, 2.3.0)

Las diferencias de versión importan para la compatibilidad de cliente. Algunos decodificadores antiguos solo hablan la versión de protocolo 2.1.x. Si los clientes se desconectan o fallan en la autenticación sin razón obvia, verifica si el firmware del cliente espera una versión específica de CCcam. La versión 2.3.0 es generalmente la más permisiva y compatible hacia atrás.

Hacer el Binario Ejecutable: chmod y Colocación en /usr/local/bin

Una vez que tengas el binario:

chmod +x CCcam
sudo mv CCcam /usr/local/bin/CCcam

Eso es todo para la colocación. /usr/local/bin lo mantiene limpio y en tu PATH del sistema.

Manejo de Dependencias de 32 bits en Ubuntu de 64 bits

Este es el punto de fallo de instalación número uno y la mayoría de guías ni siquiera lo mencionan. CCcam es un binario de 32 bits. En Ubuntu de 64 bits, ejecutarlo sin las bibliotecas i386 te da esto:

bash: /usr/local/bin/CCcam: No such file or directory

El archivo existe. El error es engañoso. Lo que realmente falta es el intérprete ELF de 32 bits. Arréglalo:

sudo apt install libc6:i386 libstdc++6:i386 libssl1.1:i386 libpcsclite1:i386

Si estás en 22.04 y libssl1.1:i386 no se instala correctamente, descarga el paquete directamente:

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_i386.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_i386.deb

Verificar que el Binario se Ejecuta: ./CCcam --version

Pruébalo antes de construir un servicio a su alrededor:

CCcam --version

Deberías ver una cadena de versión. Si falla inmediatamente, aún tienes bibliotecas de 32 bits faltantes. Ejecuta ldd /usr/local/bin/CCcam y busca cualquier línea que diga not found — esas son tus dependencias faltantes.

Configurar CCcam como Servicio systemd

Olvida los scripts init.d antiguos. Crea una unidad systemd adecuada en /etc/systemd/system/cccam.service:

[Unit]
Description=CCcam Card Sharing Server
After=network.target pcscd.service
Requires=pcscd.service
[Service]
Type=simple
User=cccam
Group=cccam
WorkingDirectory=/etc/cccam
ExecStart=/usr/local/bin/CCcam
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target

```html

Luego habilítalo e inicia:

sudo systemctl daemon-reload
sudo systemctl enable cccam
sudo systemctl start cccam

La línea Requires=pcscd.service asegura que pcscd esté activo antes de que CCcam intente acceder al lector de tarjetas. Sin esto, obtendrás una condición de carrera al iniciar donde CCcam se inicia primero y no encuentra nada.

Configurando CCcam: El Archivo CCcam.cfg Explicado

El archivo de configuración es donde la mayoría de las personas pasan la mayor parte del tiempo. La sintaxis es inflexible y los mensajes de error no son útiles.

Ubicación del Archivo de Configuración Predeterminado: /etc/CCcam.cfg y ~/.CCcam/CCcam.cfg

CCcam busca su configuración en /etc/CCcam.cfg por defecto cuando se ejecuta como servicio del sistema. Si se ejecuta como usuario, verifica ~/.CCcam/CCcam.cfg. Para un servicio systemd ejecutado como el usuario cccam, coloca tu configuración en /etc/CCcam.cfg y asegúrate de que los permisos del archivo permitan al usuario cccam leerlo. Además: no hagas este archivo escribible por todos. CCcam se negará a iniciar si /etc/CCcam.cfg tiene permisos más amplios que 640.

Directivas Principales: PORT, SERVERIP, LOGFILE, CLIENTMAXHOPS

Aquí hay un ejemplo de configuración completamente anotado:

# CCcam.cfg - Archivo de configuración principal
# Puerto en el que CCcam escucha las conexiones de clientes (predeterminado 12000)
PORT = 12000
# Vincular a todas las interfaces (usar IP específica por seguridad)
SERVERIP = 0.0.0.0
# Configuración de registro
LOGFILE = /var/log/cccam.log
LOG LEVEL = 1
# Limitar el conteo de saltos para reducir la latencia y el abuso
CLIENTMAXHOPS = 1
# Nivel de recompartición: 0 = sin recompartición, 1 = recompartir a clientes, 2 = recompartir tarjetas recibidas
RESHARE = 1
# Almacenar en caché respuestas ECM (milisegundos)
CACHEEX = 0

LOG LEVEL 0 es silencioso, 1 es normal, 3 es depuración detallada. En producción, usa 1. El nivel 3 escribirá gigabytes en disco rápidamente e incapacitará el rendimiento de E/S.

Definiendo Lectores de Tarjetas Locales: Líneas DEVICE y SMARTCARD

Para un lector USB:

DEVICE = /dev/ttyUSB0

Para un lector basado en pcsc:

DEVICE = /dev/pcsc/1

Si tienes varios lectores, especifica cada uno en una línea DEVICE separada. CCcam los inicializará en orden. Para una ranura CI+ interna, usa /dev/ci0. Verifica la ruta del dispositivo actual con ls -la /dev/pcsc/ o pcsc_scan antes de ponerla en la configuración.

Añadiendo Usuarios Clientes: Sintaxis de Línea C: y F:

Aquí es donde casi todas las guías se equivocan o no lo explican en absoluto. Hay dos tipos de línea completamente diferentes y sirven roles opuestos.

Las líneas F: definen usuarios que se conectan a tu servidor. Estos son tus clientes:

# F: usuario contraseña {recompartición} {ignorar_recompartición} {encubierto}
F: client1 secretpass1 1 0 0
F: client2 anotherpass 0 0 0

Las líneas C: definen servidores ascendentes a los que tu CCcam se conecta a:

# C: hostname puerto usuario contraseña {encubierto
```} C: upstream.example.local 12000 myuser mypassword 0

El campo reshare en líneas F: controla si ese cliente puede compartir lo que recibe. Establézca a 0 si no desea que los clientes redistribuyan tarjetas. El campo stealth oculta la información de la tarjeta de ese cliente cuando se establece en 1.

Agregar servidores ascendentes: formato de línea C: (hostname puerto nombre de usuario contraseña)

Si se conecta a un servidor CCcam ascendente para tarjetas que no tiene localmente:

C: 192.168.1.100 12000 username password 0

El quinto campo (modo sigiloso) es opcional pero por defecto es 0. Usar un nombre de host funciona pero la resolución DNS al iniciar puede causar retrasos — prefiera direcciones IP para configuraciones locales.

Establecer niveles de caché y reshare de ECM

RESHARE controla cómo se propagan las tarjetas recibidas. RESHARE = 0 significa que su servidor no pasará ninguna tarjeta que reciba de un servidor ascendente a sus clientes locales. RESHARE = 1 significa que sí lo hará. RESHARE = 2 significa que los clientes pueden re-compartir — generalmente evite esto a menos que específicamente desee un nodo de retransmisión.

CLIENTMAXHOPS = 1 limita el conteo de saltos de tarjetas a uno. Esto reduce la latencia e impide que su servidor se use como retransmisión a través de la cual las tarjetas compartidas sigan saltando entre múltiples servidores. Manténgalo en 1 para una configuración local estándar.

Habilitación de soporte de protocolo Newcamd y Camd35

CCcam también puede hablar protocolos Newcamd (líneas N:) y Camd35 para compatibilidad con clientes que no admiten el protocolo nativo de CCcam:

# Puerto Newcamd
NEWCAMD PORT = 15050
# Puerto Camd35
CAMD35 PORT = 15001

Estos son puertos separados. Ábra los en su cortafuegos de la misma manera que hace con el puerto 12000. No todos los clientes necesitan estos — el protocolo nativo de CCcam en el puerto 12000 es suficiente para la mayoría de receptores modernos.

Cortafuegos, redes y configuración de puertos

Abrir el puerto predeterminado 12000 de CCcam con ufw

CCcam se comunica por TCP, no UDP. Ábra con:

sudo ufw allow 12000/tcp

Si agregó puertos Newcamd o Camd35:

sudo ufw allow 15050/tcp
sudo ufw allow 15001/tcp

Compruebe sus reglas con sudo ufw status numbered.

Usar puertos no estándar para reducir la exposición

Ejecutar en el puerto 12000 está bien para una configuración local privada, pero si el servidor está en Internet, los escáneres automatizados golpean ese puerto regularmente. Mueva CCcam a algo como puerto 29100 o 38000 — actualice tanto PORT en CCcam.cfg como la regla ufw. No es seguridad real, pero elimina el ruido.

Enlace a una interfaz de red específica con SERVERIP

SERVERIP = 0.0.0.0 se enlaza a todas las interfaces. Si su servidor tiene múltiples interfaces de red (digamos, una interfaz LAN en 192.168.1.10 y una interfaz WAN), puede restringir CCcam para que solo escuche en el lado LAN:

SERVERIP = 192.168.1.10

Esto es particularmente útil si tiene una configuración NAT estática con múltiples IPs WAN y no desea que CCcam accidental

```html ly binding to the wrong interface. Para la mayoría de configuraciones domésticas, 0.0.0.0 está bien.

NAT y Reenvío de Puertos para Clientes Remotos

Si los clientes se conectan desde fuera de tu red, reenvía el puerto TCP 12000 en tu router a la IP de LAN del servidor Ubuntu. El proceso varía según el router — necesitas la IP de LAN estática del servidor (configúrala con una reserva DHCP o configúrala estáticamente). Exponer el puerto 12000 a Internet público es un riesgo real — restringe el acceso por IP con ufw cuando puedas:

sudo ufw allow from 203.0.113.45 to any port 12000 proto tcp

Probando la Conectividad con netcat y telnet

Desde el servidor en sí:

nc -zv localhost 12000

Desde una máquina remota:

nc -zv 192.168.1.10 12000

También puedes usar telnet 192.168.1.10 12000 — no establecerá una sesión de CCcam pero te dirá si el puerto es accesible. Si nc falla desde localhost pero CCcam se está ejecutando, verifica ss -tnlp | grep 12000 para ver a qué dirección CCcam realmente se vinculó.

Solución de Problemas Comunes de Instalación de CCcam en Ubuntu

La mayoría de los problemas caen en un pequeño número de categorías. Aquí te mostramos cómo diagnosticar cada una de forma sistemática. Un procedimiento correcto de instalación del servidor cccam ubuntu siempre debe incluir saber cómo leer los registros.

CCcam No Se Inicia: Comprobando Registros de systemd con journalctl

Primera parada para cualquier problema:

journalctl -u cccam -f

Para registros históricos desde el último arranque:

journalctl -u cccam -b

También examina el registro de CCcam directamente:

tail -f /var/log/cccam.log

Si CCcam sale inmediatamente sin salida útil en su propio registro, journalctl capturará el código de salida y stderr. Un código de retorno de 127 generalmente significa que el binario o una biblioteca vinculada no se encontró.

Tarjeta No Encontrada: pcscd No Se Está Ejecutando o Ruta de Dispositivo Incorrecta

El registro mostrará algo como:

[ERROR] can't open /dev/pcsc
[INFO] no card found on device /dev/ttyUSB0

Soluciona el primer problema:

sudo systemctl restart pcscd
sudo systemctl restart cccam

Soluciona el segundo verificando la ruta de tu dispositivo con pcsc_scan y actualizando la línea DEVICE en CCcam.cfg. Si tienes AppArmor habilitado, podría estar bloqueando silenciosamente el acceso a /dev/pcsc. Verifica sudo aa-status y busca CCcam en la lista de cumplimiento. Necesitarás crear una excepción de perfil o configurarlo en modo de queja temporalmente para diagnosticar.

Los Clientes No Pueden Conectarse: Puerto Bloqueado o Credenciales Incorrectas

Si un cliente se conecta y se desconecta inmediatamente, verifica el registro de CCcam para:

[WARN] client disconnected
[ERROR] invalid username or password

La línea F: en CCcam.cfg debe coincidir exactamente — el nombre de usuario y la contraseña distinguen entre mayúsculas y minúsculas. CCcam requiere un reinicio completo para recoger cualquier cambio de configuración ```ges. No SIGHUP, no signal de recarga — solo un sudo systemctl restart cccam completo. Esto atrapa a la gente constantemente.

CCcam Se Inicia Pero Sin ECM: Verificar CAID e ID de Proveedor en Logs

Si CCcam se está ejecutando y la tarjeta se detecta pero los clientes no reciben respuestas ECM, busca el CAID que tu tarjeta está anunciando en el log. Una entrada de log como:

[INFO] card found: CAID 0x0500, provider 0x040810

...te dice lo que el servidor ve. Si el cliente solicita un CAID diferente, hay una discrepancia. También verifica que RESHARE esté configurado correctamente — si es 0, los clientes conectados a través de líneas C: no recibirán tarjetas de tu lector local.

Segfault o Bloqueo Inmediato: Problemas de Librerías de 32 bits

Un segfault al iniciar casi siempre significa librerías de 32 bits faltantes. Ejecuta:

sudo apt install libc6:i386 libstdc++6:i386
ldd /usr/local/bin/CCcam

Cualquier not found en la salida de ldd es tu culpable. Instala la versión i386 de esa librería.

Alto Uso de CPU: Nivel de Log y Ajuste de Caché ECM

Si CCcam está usando demasiada CPU, lo primero a verificar es LOG LEVEL. El nivel 3 (debug) genera un enorme I/O de log. Bájalo a 1 en CCcam.cfg y reinicia. También verifica si la rotación de logs está configurada — un archivo de log de CCcam de 4GB causa una ralentización notable solo por la sobrecarga de escritura.

Los Cambios de CCcam.cfg No Se Aplican: Comportamiento de Reinicio vs Recarga

CCcam no admite recargas de configuración en tiempo de ejecución. Sin signal, sin comando — debes hacer un reinicio completo:

sudo systemctl restart cccam

Cada vez que edites CCcam.cfg, reinicia el servicio. Olvidar esto es una pérdida de tiempo clásica al depurar cambios de configuración que parecen no tener efecto.

Endurecimiento de Seguridad para un Servidor CCcam en Ubuntu

Ejecutar CCcam como root es una idea genuinamente mala. Si hay un exploit en el binario — y con un binario de código cerrado de una fuente desconocida, no puedes descartarlo — acceso root significa compromiso completo del sistema. Endurece esta configuración correctamente.

Ejecutar CCcam como Usuario Dedicado No Root

Crea un usuario del sistema sin shell de inicio de sesión:

sudo useradd --system --no-create-home --shell /usr/sbin/nologin cccam

Dale acceso al grupo de dispositivo pcsc:

sudo usermod -aG plugdev cccam

Establece la propiedad correcta en los archivos de configuración y log:

sudo chown cccam:cccam /etc/CCcam.cfg
sudo chmod 640 /etc/CCcam.cfg
sudo touch /var/log/cccam.log
sudo chown cccam:cccam /var/log/cccam.log

El archivo de unidad systemd mostrado anteriormente ya usa User=cccam — esto es lo que lo vincula todo.

Restringir Permisos del Archivo de Log

No dejes /var/log/cccam.log legible por todos. El modo 640 (lectura/escritura del propietario, lectura del grupo, nada para otros) es apropiado. Configura la rotación de logs para evitar que el archivo crezca sin límites:

# /etc/logrotate.d/cccam
/var/log/cccam.log {
```html semanal rotar 4 comprimir okfaltante nosinovacio crear 640 cccam cccam }

Usar fail2ban para bloquear ataques de fuerza bruta en el puerto 12000

CCcam registra intentos de autenticación fallidos. Puede crear un filtro fail2ban básico alrededor de ellos. Cree /etc/fail2ban/filter.d/cccam.conf:

[Definition]
failregex = \[WARN\] client .* nombre de usuario o contraseña inválidos
ignoreregex =

Luego agregue una cárcel en /etc/fail2ban/jail.local:

[cccam]
enabled = true
port = 12000
filter = cccam
logpath = /var/log/cccam.log
maxretry = 5
bantime = 3600

El formato exacto del registro depende de su versión de CCcam — verifique su salida de registro actual y ajuste la expresión regular en consecuencia. Este es un punto de partida, no una solución de copiar y pegar.

Opción de túnel VPN para conexiones de cliente remoto

El enfoque de seguridad más limpio para clientes remotos es no exponer el puerto 12000 en absoluto. Ejecute WireGuard en el servidor, haga que los clientes se conecten a la VPN y deje que CCcam escuche solo en la interfaz VPN (por ejemplo, SERVERIP = 10.0.0.1). El puerto 12000 nunca toca internet público.

La configuración de WireGuard está fuera del alcance de este artículo, pero un servidor WireGuard básico en Ubuntu está bien documentado y lleva unos 15 minutos configurar. OpenVPN también funciona, pero la sobrecarga es mayor.

Monitoreo de conexiones activas con netstat y ss

Vea quién está actualmente conectado a su servidor CCcam:

ss -tnp | grep 12000

O solo con conexiones establecidas:

ss -tn state established | grep 12000

La salida muestra direcciones IP remotas y puertos. Si ve conexiones desde direcciones IP que no reconoce, verifique sus credenciales de línea F: y considere restringir el acceso por IP en ufw. La sincronización de hora también es importante aquí — si el reloj de un cliente está más de unos segundos atrasado con respecto al servidor, pueden ocurrir desconexiones intermitentes. Asegúrese de que tanto el servidor como los clientes tengan NTP en ejecución (sudo systemctl status systemd-timesyncd).

¿Qué versión de Ubuntu es mejor para ejecutar un servidor CCcam?

Ubuntu 20.04 LTS es la opción más confiable en este momento. El soporte de biblioteca de 32 bits es directo, libssl1.1 está disponible en los repositorios, y no llegará al final de la vida útil hasta abril de 2025. Ubuntu 22.04 funciona pero requiere más esfuerzo manual para la configuración de biblioteca multiarch, particularmente para obtener libssl en la versión correcta para el binario CCcam de 32 bits. Evite cualquier versión de Ubuntu que ya esté al final de la vida útil para cualquier cosa que planee ejecutar a largo plazo.

¿Por qué CCcam dice "No existe tal archivo o directorio" aunque el binario exista?

Este es el problema de la biblioteca de 32 bits. CCcam es un binario de 32 bits y en Ubuntu de 64 bits, el intérprete ELF para ejecutables de 32 bits es ```n't installed by default. Run sudo dpkg --add-architecture i386, then sudo apt install libc6:i386 libstdc++6:i386 libssl1.1:i386. After that, try running CCcam again. If you still see the error, run ldd /usr/local/bin/CCcam and install whatever comes back as "not found."

¿Cuál es la diferencia entre líneas C: y líneas F: en CCcam.cfg?

Son opuestas en dirección. Las líneas F: definen usuarios que se conectan A tu servidor CCcam — estás creando cuentas para tus clientes. Las líneas C: definen servidores ascendentes a los que tu CCcam se conecta — le estás diciendo a CCcam dónde obtener tarjetas que no tiene localmente. La sintaxis de la línea F: es F: username password reshare ignore_reshare stealth. La sintaxis de la línea C: es C: hostname port username password stealth. Invertir estos es uno de los errores de configuración más comunes.

¿Cómo compruebo si mi tarjeta inteligente es detectada por el servidor CCcam?

Comienza en la capa del SO: systemctl status pcscd para confirmar que el daemon pcsc se está ejecutando, luego pcsc_scan para ver si aparecen el lector y la tarjeta. Si pcsc_scan no ve nada, CCcam definitivamente tampoco. Una vez que hayas confirmado que la tarjeta es visible a nivel del SO, comprueba /var/log/cccam.log después de iniciar CCcam — busca líneas que contengan "card found" con un valor CAID. Si no hay CAID en el registro, CCcam no ve la tarjeta independientemente de lo que muestre pcsc_scan, lo que generalmente señala una ruta DEVICE incorrecta en CCcam.cfg.

¿Pueden CCcam y OScam ejecutarse simultáneamente en el mismo servidor Ubuntu?

Sí, y es en realidad una configuración sólida. Ejecuta OScam en el puerto 11000 para manejar el lector de tarjetas físico directamente, luego añade una línea C: en CCcam.cfg apuntando a localhost puerto 11000. CCcam maneja las conexiones de clientes mientras OScam gestiona el hardware. La regla clave: no pueden reclamar ambos el mismo dispositivo /dev/pcsc directamente. OScam es dueño de la tarjeta, CCcam habla con OScam. Asegúrate de que los puertos no se superpongan — CCcam en 12000, interfaz del lector OScam en un puerto diferente.

¿Cuántas conexiones de cliente puede manejar un servidor CCcam?

No hay un número fijo — depende de tu hardware, red y configuración. Un escritorio moderno o VPS ejecutando Ubuntu puede manejar decenas de clientes simultáneos sin problemas. Lo que mata el rendimiento son los conteos de saltos altos (mantén CLIENTMAXHOPS en 1), registros detallados (mantén LOG LEVEL en 1 en producción), y altas tasas de solicitud de ECM de muchos clientes descifrando simultáneamente. Observa el uso de CPU y E/S del registro — esos son tus verdaderos cuellos de botella, no algún límite de conexión teórico.

¿Funciona CCcam en Ubuntu ejecutándose dentro de una VM o contenedor?

En una VM (VirtualBox, KVM, VMware), sí — pero necesitas pasar el lector de tarjeta inteligente USB a la VM, no solo compartirlo desde el host. VirtualBox tiene acceso directo USB en la configuración de dispositivos; KVM usa acceso directo de dispositivo host USB en la configuración XML de la VM. Los contenedores Docker son problemáticos para el acceso a tarjetas físicas — el acceso directo USB en Docker requiere modo privilegiado y mapeo de dispositivos, lo que se complica rápidamente. Si necesitas una tarjeta física, usa una VM adecuada o bare metal. Si estás ejecutando un relé puro (sin tarjeta local, solo conectándote upstream a través de líneas C:), entonces los contenedores funcionan bien.