Loading...
Installare il Server CCcam su Ubuntu: Guida di Configurazione Completa
```html

Installa CCcam Server su Ubuntu: Guida di configurazione completa

Se stai cercando di fare un cccam server install ubuntu e stai incontrando ostacoli — librerie mancanti, arresti silenziosi, client che non si connettono — non sei solo. Questo è uno di quegli setup dove la documentazione è sparsa, obsoleta, o scritta per Debian Lenny. Questa guida copre l'intero processo da zero: dipendenze, posizionamento dei binari, servizio systemd, sintassi del file di configurazione, regole firewall e hardening. Comandi reali, percorsi di file reali, nessuna approssimazione.

Prerequisiti prima di installare CCcam su Ubuntu

Prima di toccare il binario, prepara il tuo sistema. Saltare questa parte è il motivo per cui la maggior parte delle installazioni falliscono silenziosamente.

Versioni Ubuntu supportate (18.04, 20.04, 22.04)

Ubuntu 20.04 LTS è il punto di riferimento giusto adesso. 18.04 ha raggiunto la fine del ciclo di vita ad aprile 2023, quindi non usarlo per nulla di cui tu tenga conto. 22.04 funziona ma introduce un mal di testa multiarch con libssl — più dettagli sotto. Se sei su 22.04, aspettati di passare tempo extra sulla compatibilità delle librerie. Qualsiasi cosa più vecchia di 18.04 è un vicolo cieco.

Hardware richiesto: Lettori di schede intelligenti e schede CAM

Ti serve un lettore di schede intelligenti fisico che Linux riconosce. I lettori USB (come l'Omnikey 3121 o Gemalto PC Twin) sono il percorso più facile. Gli slot CI+ interni compaiono come /dev/ci0 o simile — il percorso del dispositivo differisce, e dovrai verificarlo manualmente con ls /dev/ci*. Se hai più lettori collegati, CCcam cercherà di afferrare il primo che trova, quindi sappi quale percorso del dispositivo corrisponde a quale lettore prima di configurare qualsiasi cosa.

Stai usando un Raspberry Pi? Fermati qui. CCcam è un binario x86 — non funzionerà su ARM. Usa OScam invece, che ha build ARM native.

Pacchetti richiesti: libssl, libpcsclite, pcscd

Per primo, aggiungi il supporto all'architettura i386. Su un sistema Ubuntu a 64 bit questo è non negoziabile:

sudo dpkg --add-architecture i386
sudo apt update

Quindi installa i pacchetti richiesti:

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

Su Ubuntu 22.04, libssl1.0 è scomparso. Ti serve libssl1.1:i386 invece. Se nemmeno quello è disponibile nei repo, potresti aver bisogno di tirare il .deb dal pool di Ubuntu 20.04 e installarlo manualmente con dpkg -i. È fastidioso ma funziona.

Verifica del modulo kernel per il lettore di schede intelligenti (pcsc_scan)

Installa ed esegui pcsc_scan prima di fare qualsiasi cosa con CCcam:

sudo apt install pcsc-tools
sudo systemctl start pcscd
pcsc_scan

Se il tuo lettore di schede compare e la scheda viene rilevata, sei a posto. Se pcsc_scan si blocca o segnala nessun lettore, il problema è a livello del sistema operativo e CCcam non può risolverlo. Controlla dmesg | grep -i usb per vedere se il lettore è stato riconosciuto quando l'hai collegato. Il p

```cscd daemon deve essere in esecuzione prima che CCcam si avvii — se non lo è, CCcam registrerà can't open /dev/pcsc e la tua scheda non andrà da nessuna parte.

Download e installazione del binario CCcam su Ubuntu

CCcam non ha un canale di distribuzione ufficiale — gli sviluppatori hanno chiuso anni fa. Le versioni comuni ancora in circolazione sono 2.1.4, 2.2.1 e 2.3.0. La versione 2.3.0 ha la migliore compatibilità con i client. Ottieni il binario da una fonte di cui ti fidi (forum satellitari, archivi della comunità). Non nominare, collegare o fare affidamento su siti di rivenditori casuali — alcuni distribuiscono binari modificati.

Dove ottenere il binario CCcam (versione 2.1.4, 2.2.1, 2.3.0)

Le differenze di versione contano per la compatibilità dei client. Alcuni vecchi decoder parlano solo la versione del protocollo 2.1.x. Se i client si disconnettono o non riescono nell'autenticazione senza un motivo ovvio, verifica se il firmware del client si aspetta una versione specifica di CCcam. La versione 2.3.0 è generalmente la più permissiva e compatibile all'indietro.

Rendere il binario eseguibile: chmod e posizionamento in /usr/local/bin

Una volta che hai il binario:

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

Questo è tutto per il posizionamento. /usr/local/bin lo mantiene pulito e nel tuo PATH di sistema.

Gestione delle dipendenze a 32 bit su Ubuntu a 64 bit

Questo è il punto di errore di installazione numero uno e la maggior parte delle guide non lo menziona nemmeno. CCcam è un binario a 32 bit. Su Ubuntu a 64 bit, eseguirlo senza le librerie i386 ti dà questo:

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

Il file esiste. L'errore è fuorviante. Quello che manca davvero è l'interprete ELF a 32 bit. Risolvilo:

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

Se sei su 22.04 e libssl1.1:i386 non si installa correttamente, scarica il pacchetto direttamente:

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

Verifica che il binario funzioni: ./CCcam --version

Testalo prima di costruire un servizio attorno ad esso:

CCcam --version

Dovresti vedere una stringa di versione. Se va in segfault immediatamente, hai ancora librerie a 32 bit mancanti. Esegui ldd /usr/local/bin/CCcam e cerca qualsiasi riga che dica not found — quelle sono le tue dipendenze mancanti.

Configurazione di CCcam come servizio systemd

Dimentica i vecchi script init.d. Crea una corretta unità systemd in /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

Quindi abilita e avvia:

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

La riga Requires=pcscd.service assicura che pcscd sia attivo prima che CCcam tenti di accedere al lettore di schede. Senza questo, si verifica una condizione di gara all'avvio in cui CCcam si avvia per primo e non trova nulla.

Configurazione di CCcam: il file CCcam.cfg spiegato

Il file di configurazione è dove la maggior parte delle persone trascorre più tempo. La sintassi è inflessibile e i messaggi di errore non sono utili.

Posizione del file di configurazione predefinita: /etc/CCcam.cfg e ~/.CCcam/CCcam.cfg

CCcam cerca la sua configurazione in /etc/CCcam.cfg per impostazione predefinita quando viene eseguito come servizio di sistema. Se eseguito come utente, controlla ~/.CCcam/CCcam.cfg. Per un servizio systemd in esecuzione come utente cccam, inserisci la tua configurazione in /etc/CCcam.cfg e assicurati che i permessi del file consentano all'utente cccam di leggerlo. Inoltre: non rendere questo file scrivibile dal mondo. CCcam rifiuterà di avviarsi se /etc/CCcam.cfg ha permessi più ampi di 640.

Direttive principali: PORT, SERVERIP, LOGFILE, CLIENTMAXHOPS

Ecco un esempio di configurazione completamente annotato:

# CCcam.cfg - File di configurazione principale
# Porta su cui CCcam ascolta le connessioni client (predefinito 12000)
PORT = 12000
# Associa a tutte le interfacce (usa IP specifico per la sicurezza)
SERVERIP = 0.0.0.0
# Impostazioni di log
LOGFILE = /var/log/cccam.log
LOG LEVEL = 1
# Limita il conteggio degli hop per ridurre la latenza e gli abusi
CLIENTMAXHOPS = 1
# Livello di reshare: 0 = nessun reshare, 1 = reshare ai client, 2 = reshare delle schede ricevute
RESHARE = 1
# Cache delle risposte ECM (millisecondi)
CACHEEX = 0

LOG LEVEL 0 è silenzioso, 1 è normale, 3 è debug dettagliato. In produzione, usa 1. Il livello 3 scriverà gigabyte su disco rapidamente e tannerà le prestazioni dell'I/O.

Definizione dei lettori di schede locali: linee DEVICE e SMARTCARD

Per un lettore USB:

DEVICE = /dev/ttyUSB0

Per un lettore basato su pcsc:

DEVICE = /dev/pcsc/1

Se hai più lettori, specifica ognuno su una riga DEVICE separata. CCcam li inizializzerà in ordine. Per uno slot CI+ interno, usa /dev/ci0. Verifica il percorso del dispositivo effettivo con ls -la /dev/pcsc/ o pcsc_scan prima di metterlo nella configurazione.

Aggiunta di utenti client: sintassi delle linee C: e F:

Questo è dove quasi tutte le guide lo spiegano male o non lo spiegano affatto. Ci sono due tipi di linea completamente diversi e servono ruoli opposti.

Le linee F: definiscono gli utenti che si connettono al tuo server. Questi sono i tuoi client:

# F: username password {reshare} {ignore_reshare} {stealth}
F: client1 secretpass1 1 0 0
F: client2 anotherpass 0 0 0

Le linee C: definiscono i server upstream a cui CCcam si connette:

# C: hostname port username password {stealth
} C: upstream.example.local 12000 myuser mypassword 0

Il campo reshare nelle righe F: controlla se quel client può ri-condividere quello che riceve. Impostalo a 0 se non vuoi che i client ridistribuiscano le carte. Il campo stealth nasconde le informazioni sulla carta a quel client quando impostato a 1.

Aggiunta di server upstream: formato della riga C: (hostname porta nomeutente password)

Se ti stai connettendo a un server CCcam upstream per le carte che non hai localmente:

C: 192.168.1.100 12000 username password 0

Il quinto campo (modalità stealth) è facoltativo ma di default è 0. L'uso di un nome host funziona ma la risoluzione DNS all'avvio può causare ritardi — preferisci gli indirizzi IP per i setup locali.

Impostazione della cache ECM e dei livelli di reshare

RESHARE controlla come le carte ricevute si propagano. RESHARE = 0 significa che il tuo server non passerà nessuna carta che riceve da upstream ai tuoi client locali. RESHARE = 1 significa che lo farà. RESHARE = 2 significa che i client possono ri-condividere — generalmente evita questo a meno che tu non voglia specificamente un nodo relay.

CLIENTMAXHOPS = 1 limita il conteggio dei hop della carta a uno. Questo riduce la latenza e impedisce al tuo server di essere utilizzato come relay attraverso il quale le carte ri-condivise continuano a saltellare su più server. Mantienilo a 1 per un setup locale standard.

Abilitazione del supporto al protocollo Newcamd e Camd35

CCcam può anche parlare i protocolli Newcamd (righe N:) e Camd35 per la compatibilità con i client che non supportano il protocollo CCcam nativo:

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

Queste sono porte separate. Aprile nel tuo firewall nello stesso modo in cui lo fai con la porta 12000. Non tutti i client ne hanno bisogno — il protocollo CCcam nativo sulla porta 12000 è sufficiente per la maggior parte dei ricevitori moderni.

Firewall, networking e configurazione delle porte

Apertura della porta predefinita CCcam 12000 con ufw

CCcam comunica su TCP, non UDP. Aprila con:

sudo ufw allow 12000/tcp

Se hai aggiunto porte Newcamd o Camd35:

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

Controlla le tue regole con sudo ufw status numbered.

Utilizzo di porte non standard per ridurre l'esposizione

L'esecuzione sulla porta 12000 va bene per un setup locale privato, ma se il server è rivolto a internet, gli scanner automatizzati colpiscono quella porta regolarmente. Sposta CCcam a qualcosa come la porta 29100 o 38000 — aggiorna sia PORT in CCcam.cfg che la regola ufw. Non è vera sicurezza, ma elimina il rumore.

Collegamento a un'interfaccia di rete specifica con SERVERIP

SERVERIP = 0.0.0.0 si collega a tutte le interfacce. Se il tuo server ha più interfacce di rete (diciamo, un'interfaccia LAN a 192.168.1.10 e un'interfaccia WAN), puoi limitare CCcam ad ascoltare solo dal lato LAN:

SERVERIP = 192.168.1.10

Questo è particolarmente utile se hai un setup NAT statico con più indirizzi IP WAN e non vuoi che CCcam accidentale

```html ly binding all'interfaccia sbagliata. Per la maggior parte delle configurazioni domestiche, 0.0.0.0 va bene.

NAT e Port Forwarding per Client Remoti

Se i client si connettono da fuori la tua rete, esegui il port forwarding della porta TCP 12000 sul tuo router all'indirizzo IP della LAN del server Ubuntu. Il processo varia a seconda del router — hai bisogno dell'indirizzo IP statico della LAN del server (impostalo con una prenotazione DHCP o configuralo manualmente). Esporre la porta 12000 a Internet pubblico è un vero rischio — limita l'accesso per IP con ufw quando puoi:

sudo ufw allow from 203.0.113.45 to any port 12000 proto tcp

Test di Connettività con netcat e telnet

Dal server stesso:

nc -zv localhost 12000

Da una macchina remota:

nc -zv 192.168.1.10 12000

Puoi anche usare telnet 192.168.1.10 12000 — non stabilirà una sessione CCcam ma ti dirà se la porta è raggiungibile. Se nc fallisce da localhost ma CCcam è in esecuzione, controlla ss -tnlp | grep 12000 per vedere a quale indirizzo CCcam è effettivamente associato.

Risoluzione dei Problemi Comuni di Installazione CCcam su Ubuntu

La maggior parte dei problemi rientra in un piccolo numero di categorie. Ecco come diagnosticare sistematicamente ognuna. Una corretta procedura di installazione del server cccam su ubuntu dovrebbe sempre includere sapere come leggere i log.

CCcam Non Si Avvia: Controllo dei Log di systemd con journalctl

Prima tappa per qualsiasi problema:

journalctl -u cccam -f

Per i log storici dall'ultimo avvio:

journalctl -u cccam -b

Leggi anche direttamente il log CCcam:

tail -f /var/log/cccam.log

Se CCcam esce immediatamente senza output utile nel suo stesso log, journalctl catturerà il codice di uscita e stderr. Un codice di ritorno di 127 di solito significa che il binario o una libreria collegata non è stata trovata.

Scheda Non Trovata: pcscd Non in Esecuzione o Percorso Device Sbagliato

Il log mostrerà qualcosa di simile a:

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

Risolvi il primo problema:

sudo systemctl restart pcscd
sudo systemctl restart cccam

Risolvi il secondo verificando il percorso del tuo device con pcsc_scan e aggiornando la riga DEVICE in CCcam.cfg. Se AppArmor è abilitato, potrebbe essere bloccare silenziosamente l'accesso a /dev/pcsc. Controlla sudo aa-status e cerca CCcam nella lista di imposizione. Dovrai creare un'eccezione di profilo o impostarlo in modalità lamentela temporaneamente per diagnosticare.

I Client Non Possono Connettersi: Porta Bloccata o Credenziali Sbagliate

Se un client si connette e si disconnette immediatamente, controlla il log CCcam per:

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

La riga F: in CCcam.cfg deve corrispondere esattamente — il nome utente e la password sono sensibili alle maiuscole. CCcam richiede un riavvio completo per raccogliere qualsiasi modifica della configurazione ``````html ges. No SIGHUP, no reload signal — just a full sudo systemctl restart cccam. This catches people out constantly.

CCcam Starts But No ECM: Checking CAID and Provider ID in Logs

Se CCcam è in esecuzione e la scheda viene rilevata ma i client non ricevono risposte ECM, cercare il CAID che la tua scheda sta pubblicizzando nel log. Una voce di log come:

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

...ti dice cosa vede il server. Se il client richiede un CAID diverso, c'è una mancata corrispondenza. Verifica anche che RESHARE sia impostato correttamente — se è 0, i client connessi tramite linee C: non riceveranno le schede dal tuo lettore locale.

Segfault o Crash Immediato: Problemi di Librerie 32-bit

Un segfault all'avvio quasi sempre significa librerie 32-bit mancanti. Esegui:

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

Qualsiasi not found nell'output di ldd è il tuo colpevole. Installa la versione i386 di quella libreria.

Utilizzo Elevato della CPU: Tuning del Livello di Log e della Cache ECM

Se CCcam sta consumando la CPU, la prima cosa da controllare è LOG LEVEL. Il livello 3 (debug) genera un'enorme I/O di log. Abbassalo a 1 in CCcam.cfg e riavvia. Verifica anche se è impostata la rotazione dei log — un file di log CCcam da 4GB causa un rallentamento notevole solo dal sovraccarico di scrittura.

I Cambiamenti a CCcam.cfg Non Vengono Applicati: Comportamento di Restart vs Reload

CCcam non supporta i ricaricamenti di configurazione in fase di esecuzione. Nessun segnale, nessun comando — devi fare un riavvio completo:

sudo systemctl restart cccam

Ogni volta che modifichi CCcam.cfg, riavvia il servizio. Dimenticare questo è un classico spreco di tempo quando si eseguono il debug dei cambiamenti di configurazione che sembrano non avere effetto.

Hardening della Sicurezza per un Server CCcam su Ubuntu

Eseguire CCcam come root è un'idea genuinamente cattiva. Se c'è un exploit nel binario — e con un binario chiuso da una fonte sconosciuta, non puoi escluderlo — l'accesso root significa compromissione completa del sistema. Indurire correttamente questa configurazione.

Esecuzione di CCcam come Utente Dedicato Non Root

Crea un utente di sistema senza shell di accesso:

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

Dagli accesso al gruppo del dispositivo pcsc:

sudo usermod -aG plugdev cccam

Imposta la proprietà corretta sui file di configurazione e 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

Il file dell'unità systemd mostrato in precedenza utilizza già User=cccam — questo è quello che li lega insieme.

Limitazione dei Permessi dei File di Log

Non lasciare /var/log/cccam.log leggibile da tutti. La modalità 640 (lettura/scrittura del proprietario, lettura del gruppo, niente per gli altri) è appropriata. Imposta la rotazione dei log per impedire che il file cresca senza limiti:

# /etc/logrotate.d/cccam
/var/log/cccam.log {
``````html settimanale ruota 4 comprimi oksenonpresente nonsenonvuoto crea 640 cccam cccam
}

Utilizzo di fail2ban per Bloccare gli Attacchi Brute Force sulla Porta 12000

CCcam registra i tentativi di autenticazione falliti. Puoi costruire un filtro fail2ban di base intorno a essi. Crea /etc/fail2ban/filter.d/cccam.conf:

[Definition]
failregex = \[WARN\] client .* nome utente o password non validi
ignoreregex =

Quindi aggiungi una jail in /etc/fail2ban/jail.local:

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

Il formato esatto del registro dipende dalla tua versione di CCcam — controlla l'output effettivo del registro e regola l'espressione regolare di conseguenza. Questo è un punto di partenza, non una soluzione da copiare e incollare e dimenticare.

Opzione di Tunnel VPN per Connessioni Client Remoti

L'approccio di sicurezza più pulito per i client remoti è non esporre affatto la porta 12000. Esegui WireGuard sul server, fai connettere i client alla VPN e lascia che CCcam ascolti solo sull'interfaccia VPN (ad esempio, SERVERIP = 10.0.0.1). La porta 12000 non tocca mai Internet pubblico.

La configurazione di WireGuard è al di fuori dello scopo di questo articolo, ma un server WireGuard di base su Ubuntu è ben documentato e richiede circa 15 minuti per la configurazione. OpenVPN funziona anche ma il sovraccarico è maggiore.

Monitoraggio delle Connessioni Attive con netstat e ss

Vedi chi è attualmente connesso al tuo server CCcam:

ss -tnp | grep 12000

O solo con connessioni stabilite:

ss -tn state established | grep 12000

L'output mostra gli indirizzi IP e le porte remote. Se vedi connessioni da indirizzi IP che non riconosci, controlla le credenziali della tua linea F: e considera di limitare l'accesso per IP in ufw. La sincronizzazione dell'ora è importante anche qui — se l'orologio di un client è sfasato di più di pochi secondi rispetto al server, le disconnessioni possono verificarsi intermittentemente. Assicurati che sia il server che i client abbiano NTP in esecuzione (sudo systemctl status systemd-timesyncd).

Quale versione di Ubuntu è migliore per eseguire un server CCcam?

Ubuntu 20.04 LTS è la scelta più affidabile al momento. Il supporto della libreria a 32 bit è semplice, libssl1.1 è disponibile nei repository e non raggiungerà la fine della vita fino ad aprile 2025. Ubuntu 22.04 funziona ma richiede più sforzi manuali per la configurazione della libreria multiarch, in particolare per ottenere libssl nella versione giusta per il binario CCcam a 32 bit. Evita qualsiasi versione di Ubuntu che ha già raggiunto la fine della vita per tutto ciò che intendi eseguire a lungo termine.

Perché CCcam dice "Nessun file o directory di questo tipo" anche se il binario esiste?

Questo è il problema della libreria a 32 bit. CCcam è un binario a 32 bit e su Ubuntu a 64 bit, l'interprete ELF per gli eseguibili a 32 bit è ```non è installato per impostazione predefinita. Esegui sudo dpkg --add-architecture i386, quindi sudo apt install libc6:i386 libstdc++6:i386 libssl1.1:i386. Dopo di che, prova a eseguire nuovamente CCcam. Se continui a vedere l'errore, esegui ldd /usr/local/bin/CCcam e installa tutto ciò che risulta come "not found".

Qual è la differenza tra le righe C: e le righe F: in CCcam.cfg?

Sono opposte in direzione. Le righe F: definiscono gli utenti che si connettono AL tuo server CCcam — stai creando account per i tuoi client. Le righe C: definiscono i server upstream a cui il tuo CCcam si connette — stai dicendo a CCcam dove cercare le carte che non ha localmente. La sintassi della riga F: è F: username password reshare ignore_reshare stealth. La sintassi della riga C: è C: hostname port username password stealth. Invertire questi ultimi è uno degli errori di configurazione più comuni.

Come posso verificare se la mia smart card è rilevata dal server CCcam?

Inizia dal livello del sistema operativo: systemctl status pcscd per confermare che il daemon pcsc è in esecuzione, quindi pcsc_scan per vedere se il lettore e la carta appaiono. Se pcsc_scan non vede nulla, CCcam sicuramente non lo farà neanche. Una volta confermato che la carta è visibile a livello del sistema operativo, controlla /var/log/cccam.log dopo l'avvio di CCcam — cerca righe contenenti "card found" con un valore CAID. Nessun CAID nel log significa che CCcam non sta vedendo la carta indipendentemente da quello che mostra pcsc_scan, il che di solito punta a un percorso DEVICE errato in CCcam.cfg.

CCcam e OScam possono funzionare contemporaneamente sullo stesso server Ubuntu?

Sì, ed è in realtà una configurazione solida. Esegui OScam sulla porta 11000 per gestire direttamente il lettore di schede fisico, quindi aggiungi una riga C: in CCcam.cfg che punta a localhost porta 11000. CCcam gestisce le connessioni dei client mentre OScam gestisce l'hardware. La regola fondamentale: non possono entrambi rivendicare direttamente lo stesso dispositivo /dev/pcsc. OScam possiede la carta, CCcam parla a OScam. Assicurati che le porte non si sovrappongano — CCcam sulla 12000, interfaccia del lettore OScam su una porta diversa.

Quante connessioni client può gestire un server CCcam?

Non c'è un numero fisso — dipende dal tuo hardware, dalla rete e dalla configurazione. Un moderno desktop o VPS che esegue Ubuntu può gestire decine di client simultanei senza alcun problema. Quello che uccide le prestazioni è un elevato numero di hop (mantieni CLIENTMAXHOPS a 1), la registrazione dettagliata (mantieni LOG LEVEL a 1 in produzione) e gli elevati tassi di richieste ECM da molti client che decodificano simultaneamente. Monitora l'utilizzo della CPU e l'I/O del log — questi sono i tuoi veri colli di bottiglia, non un limite di connessione teorico.

CCcam funziona su Ubuntu in esecuzione all'interno di una VM o contenitore?

In una VM (VirtualBox, KVM, VMware), sì — ma è necessario passare il lettore di smart card USB alla VM, non solo condividerlo dall'host. VirtualBox ha il passthrough USB nelle impostazioni del dispositivo; KVM utilizza il passthrough del dispositivo host USB nella configurazione XML della VM. I contenitori Docker sono problematici per l'accesso alle schede fisiche — il passthrough USB in Docker richiede la modalità privilegiata e il mapping del dispositivo, il che diventa complicato rapidamente. Se hai bisogno di una scheda fisica, usa una VM appropriata o bare metal. Se stai eseguendo un puro relay (nessuna scheda locale, solo connessione upstream tramite linee C:), allora i contenitori funzionano perfettamente.

```