Настройка CCcam сервера: полное руководство 2026

Если вы читаете это, значит уже разобрались что такое cardsharing и теперь хотите поднять собственный сервер, а не зависеть от чужих линий. Правильное решение. Cccam server setup — это не особо сложная задача, но интернет завален гайдами 2011 года с устаревшими init.d скриптами и нулевым объяснением параметров. Этот текст написан под Debian 12 и реальную работу с картой, а не теорию.

Сразу честно: CCcam как проект заброшен с 2014 года. Но он всё ещё работает, его хорошо понимают большинство ресиверов, и для простого домашнего шаринга своей легальной карты в рамках локальной сети — он справляется. Если нужна полноценная поддержка EMM и современный стек — смотри раздел про OScam в конце.

Что такое CCcam сервер и когда он нужен

CCcam — это демон, который берёт смарт-карту из физического ридера и отдаёт к ней доступ по сети клиентам через собственный TCP-протокол. По умолчанию слушает порт 12000. Протокол не стандартный, с простым XOR-шифрованием поверх TCP — не путать с newcamd, это разные протоколы.

Задача сервера одна: получить ECM-запрос от клиентского ресивера, передать его карте, получить CW (Control Word) и вернуть клиенту. Всё. Если укладывается в ~200-400 ms — картинка идёт без фризов.

Архитектура клиент-сервер в CCcam

Сервер держит карту и принимает F-линии (клиентские аккаунты). Клиент подключается через C-линию — указывает хост, порт, логин, пароль. Один сервер может одновременно обслуживать несколько клиентов, но каждая карта обрабатывает примерно 5-10 ECM-запросов в секунду. Больше — очередь и фризы.

Отличия CCcam от OScam и mgcamd

OScam — это современная замена CCcam. Поддерживает EMM (обновление ключей карты), DVB-API напрямую, работает стабильнее на нагрузке. Mgcamd — клиентский демон для ресиверов, он не держит сервер, только подключается к чужому. Путаница часто возникает именно здесь: mgcamd = клиент, CCcam/OScam = могут быть и сервером и клиентом одновременно.

Главный минус CCcam в 2026: он не поддерживает EMM. Если карта требует периодического обновления ключей — CCcam не справится, нужен OScam.

Когда поднимать свой сервер, а когда хватит клиента

Свой сервер нужен если у вас есть физическая смарт-карта и ридер, и вы хотите давать к ней доступ нескольким ресиверам в доме. Если у вас нет карты — сервер бессмыслен. Просто возьмите C-линию к чужому серверу и настройте клиента.

Подготовка сервера: железо, ОС, зависимости

Минимальные требования смешные: 1 ядро, 256 MB RAM, стабильный интернет от 5 Mbit. CCcam не нагружает процессор в нормальном режиме. Проблемы начинаются когда он начинает жрать 100% CPU через несколько суток — это известный memleak в бинарнике, лечится через cron-рестарт раз в 24 часа (или переход на OScam).

Минимальные требования: CPU, RAM, сеть

Raspberry Pi 4 с 1 GB RAM — избыточно для одного сервера. VPS с 512 MB тоже справится. Критично другое: стабильность соединения. Пинг-джиттер убивает ECM time сильнее чем слабый процессор. Смотри на uptime провайдера и задержку до клиентов, а не на гигагерцы.

Выбор дистрибутива: Debian/Ubuntu vs Enigma2

На обычном сервере — Debian 12 (Bookworm). Проверено, пакеты есть, systemd работает как надо. Ubuntu 22.04/24.04 тоже нормально. Enigma2 — это отдельная история: там свои пути конфигов (/usr/keys/ вместо /var/etc/), другой init-система, и многие команды ниже не применимы напрямую. Про Enigma2 отмечу отдельно там где важно.

Установка зависимостей: libssl, glibc версии

Бинарник CCcam — 32-битный. На современном 64-битном Debian без дополнительных пакетов он не запустится. Первое что нужно сделать:

dpkg --add-architecture i386
apt update
apt install libc6-i386 lib32stdc++6 libssl-dev

Если пропустить libc6-i386 — при запуске получите загадочное No such file or directory для файла который явно существует. Это именно проблема 32-битных библиотек, не путей.

Настройка сети: статический IP, проброс портов, firewall

Статический IP обязателен. Динамический — только с DDNS, и то это добавляет точку отказа. Если сервер за роутером, прокиньте TCP 12000 (или ваш кастомный порт) на внутренний адрес сервера. Базовое правило iptables:

iptables -A INPUT -p tcp --dport 12000 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 12000 -j DROP

Открывать 12000 на весь мир — плохая идея. Даже если пароли стойкие, брутфорс на нестандартный порт идёт постоянно.

Установка и структура файлов CCcam

Бинарник CCcam скачайте в /usr/bin/CCcam и выставьте права:

chmod 755 /usr/bin/CCcam

На Enigma2 ресиверах бинарник обычно уже есть, путь — /usr/bin/CCcam или /usr/local/bin/CCcam в зависимости от прошивки.

Права доступа и автозапуск через systemd

Большинство гайдов до сих пор показывают init.d скрипты. На Debian 12 это устарело. Создайте /etc/systemd/system/cccam.service:

[Unit]
Description=CCcam Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/CCcam -d
Restart=on-failure
RestartSec=10
User=root

[Install]
WantedBy=multi-user.target

Активация:

systemctl daemon-reload
systemctl enable --now cccam
journalctl -u cccam -f

Флаг -d запускает в режиме демона с логированием. Без него CCcam уйдёт в фон сам, но логи в journalctl будут пустыми.

Структура /var/etc/: CCcam.cfg, CCcam.channelinfo, CCcam.providers

На Debian конфиг читается из /var/etc/CCcam.cfg. На Enigma2 — из /usr/keys/CCcam.cfg. Остальные файлы в той же директории:

  • CCcam.cfg — основной конфиг, F/C/N-линии, параметры сервера
  • CCcam.channelinfo — маппинг SID на названия каналов, необязателен
  • CCcam.providers — информация о провайдерах, тоже опционально

Логи: /tmp/CCcam.log и ротация

CCcam пишет в /tmp/CCcam.log. Без ротации за неделю файл может вырасти до 1-2 GB. Создайте /etc/logrotate.d/cccam:

/tmp/CCcam.log {
    daily
    rotate 3
    compress
    missingok
    notifempty
    copytruncate
}

Диагностика в реальном времени:

tail -f /tmp/CCcam.log | grep -i error

Конфигурация CCcam.cfg: построчный разбор

Это самый важный раздел. Большинство проблем с cccam server setup сводятся к неправильно написанному конфигу. Разберём каждый блок.

Глобальные параметры: SERVER LISTEN PORT, WEBINFO LISTEN PORT

SERVER LISTEN PORT : 12000
WEBINFO LISTEN PORT : 16001
WEBINFO USERNAME : admin
WEBINFO PASSWORD : yourpassword
NEWCAMD LISTEN PORT : 15000
LOG FILE : /tmp/CCcam.log
LOG LEVEL : 1
MAX CONNECTED CLIENTS : 5
SHARE MEMORY MESSAGES : 64

Порт 12000 — дефолт протокола CCcam. Если клиенты подключаются снаружи, меняйте на нестандартный. Webinfo на 16001 — браузерный мониторинг, показывает подключённых клиентов, статус ридеров и ECM time. Пароль обязателен, иначе оставите открытый веб-интерфейс.

C: линии — подключение к удалённому серверу как клиент

C: hostname.example.com 12000 username password

C-линия превращает ваш CCcam в клиента к чужому серверу. Если у вас есть своя карта в ридере — C-линии не нужны. Если хотите каскадировать несколько источников — добавляйте, но каждый хоп добавляет задержку к ECM time.

F: линии — приём клиентов на свой сервер

F: username password 2 0 0 { 0:0:1 }

Разбор параметров:

  • username — логин клиента
  • password — пароль
  • 2 — максимум хопов (сколько раз клиент может пересылать карту дальше)
  • первый 0 — разрешить reshare (0 = да, 1 = нет)
  • второй 0 — разрешить EMM-запросы (0 = да, CCcam их игнорирует всё равно)
  • { 0:0:1 } — ограничение по CAID:ProviderID:ServiceID, 0:0:1 = доступ ко всему

Для домашних клиентов хоп ставьте 1. Для клиентов которые сами раздают дальше — 2. Больше 3 не нужно: ECM time растёт почти линейно с каждым хопом.

N: линии — newcamd протокол

N: hostname.example.com 15000 username password 01020304050607080910111213141516 { 0:0:1 }

N-линии нужны если клиент использует newcamd протокол (некоторые старые ресиверы). Длинная строка из цифр — DES-ключ, 14-байтный. Если не знаете что это — вам это не нужно, используйте стандартные C/F-линии.

Параметры карты: SERIAL READER, BOX KEY, RSA KEY

SERIAL READER : /dev/ttyUSB0 viaccess 1 mhz=600
BOX KEY : 0102030405060708090a0b0c0d0e0f
RSA KEY : 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

BOX KEY и RSA KEY нужны только для специфичных провайдеров и систем. Для большинства карт они не нужны. Оставьте в нулях или вообще не пишите — CCcam подберёт автоматически.

Обязательно выставьте:

chmod 600 /var/etc/CCcam.cfg

В конфиге хранятся пароли клиентов в открытом виде. На multi-user системе это читают все пользователи если не закрыть права.

Подключение ридера смарт-карты

Без ридера сервер — просто прокси к чужим C-линиям. Если у вас есть физическая карта, вот как её подключить.

PC/SC ридеры (Phoenix, Smargo) и USB подключение

Подключите ридер, проверьте что система его видит:

lsusb

Phoenix и Smargo USB определяются как serial-over-USB устройства и появляются как /dev/ttyUSB0. Установите утилиты:

apt install pcscd pcsc-tools

Проверьте карту:

pcsc_scan

Вывод покажет ATR карты — строку вроде 3B 9F 21 0E 49 52 44 45.... Если ATR не читается — проблема с частотой или картой. Если pcsc_scan не видит ридер вообще — запустите systemctl start pcscd.

Параметры SERIAL READER в конфиге

SERIAL READER : /dev/ttyUSB0 viaccess 1 mhz=600

Параметры после имени устройства: тип карты (viaccess, seca, irdeto, nagra, conax, cryptoworks), количество ридеров на порту (всегда 1), и частота. Если несколько ридеров — каждый на отдельной строке:

SERIAL READER : /dev/ttyUSB0 viaccess 1 mhz=600
SERIAL READER : /dev/ttyUSB1 nagra 1 mhz=357

Скорости: mhz 357, 600, 800

Частота влияет на скорость ответа карты. Phoenix-ридеры работают на 3.57 MHz (параметр mhz=357). Smargo и T14 поддерживают 6 MHz (mhz=600) и выше. Если ATR читается но неполный — начните с mhz=357, потом пробуйте выше. Неверная частота даёт неполный ATR или таймаут чтения.

Проверка карты через pcsc_scan и cardinfo

После запуска CCcam зайдите в webinfo на порту 16001. В разделе Readers должен быть ваш ридер со статусом card found и CAID карты. Если там no card или read error — смотрите лог:

tail -f /tmp/CCcam.log | grep -i reader

Права на устройство — частая причина. Если CCcam запускается не от root:

chmod 666 /dev/ttyUSB0
# или добавьте пользователя в группу:
usermod -aG dialout cccam

После ребута /dev/ttyUSB0 может получить другой номер. Используйте стабильный путь:

SERIAL READER : /dev/serial/by-id/usb-PHOENIXREADER_Phoenix_12345-if00 viaccess 1 mhz=600

Тестирование и отладка подключений

Правильный порядок диагностики: сначала убедиться что процесс запущен, потом что порт слушается, потом что карта читается, потом что клиент подключается.

Запуск в foreground для отладки: CCcam -d -v

Остановите сервис и запустите вручную для полного вывода:

systemctl stop cccam
/usr/bin/CCcam -d -v

Флаг -v увеличивает verbosity. В выводе ищите строки card added (карта прочитана), reader started (ридер инициализирован), client connected (клиент подключился).

Проверка через telnet на порт 12000

netstat -tlnp | grep CCcam

Должно показать LISTEN на 12000 и 16001. Если нет — CCcam не запустился или конфигурационная ошибка. Подключиться через telnet не получится читаемым образом — протокол бинарный — но telnet localhost 12000 покажет что порт открыт (соединение установится, потом разорвётся — это нормально).

Анализ логов: hop, reader, ECM time

На что смотреть в /tmp/CCcam.log:

  • ECM time: 245 ms — хорошо, клиент не заметит
  • ECM time: 850 ms — граница, при нестабильном канале будут редкие фризы
  • ECM time: 2000+ ms или timeout — клиент видит заморозку каждые ~10 секунд
  • no reader available — CCcam не видит карту, проверяйте SERIAL READER
  • login failed for user X from IP — неверный пароль, или попытка взлома

Web-интерфейс на порту 16001

Браузер, http://server-ip:16001, логин из WEBINFO USERNAME в конфиге. Показывает подключённых клиентов, статус ридеров, активные карты с CAID, текущий ECM time. Для быстрой диагностики удобнее лога — видно всё сразу.

Безопасность сервера и типичные ошибки

Cccam server setup в интернете без базовой защиты — это открытый брутфорс на логины и попытки несанкционированного доступа к карте. Несколько минут настройки закрывают 90% векторов.

Ограничение доступа через iptables по IP

Если знаете IP клиентов заранее — вайтлист обязателен:

# Разрешить конкретный IP клиента
iptables -A INPUT -p tcp --dport 12000 -s 203.0.113.10 -j ACCEPT
# Разрешить локальную сеть
iptables -A INPUT -p tcp --dport 12000 -s 192.168.1.0/24 -j ACCEPT
# Остальное — дроп
iptables -A INPUT -p tcp --dport 12000 -j DROP
# Webinfo — только localhost
iptables -A INPUT -p tcp --dport 16001 ! -s 127.0.0.1 -j DROP

Сохраните правила:

apt install iptables-persistent
netfilter-persistent save

Защита от брутфорса: fail2ban правила

apt install fail2ban

Создайте /etc/fail2ban/filter.d/cccam.conf:

[Definition]
failregex = login failed.*from <HOST>
ignoreregex =

И /etc/fail2ban/jail.d/cccam.conf:

[cccam]
enabled = true
port = 12000
filter = cccam
logpath = /tmp/CCcam.log
maxretry = 5
bantime = 3600
findtime = 600
systemctl restart fail2ban

Изоляция: запуск под non-root пользователем

CCcam нужны права на /dev/ttyUSB0. Создайте пользователя и добавьте в группу:

useradd -r -s /bin/false cccam
usermod -aG dialout cccam

В systemd unit замените User=root на User=cccam. Это ограничивает ущерб если в CCcam найдут уязвимость.

Шифрование канала: stunnel или VPN-туннель

Протокол CCcam использует слабое XOR-шифрование. Для шаринга через интернет это недостаточно. Два варианта:

stunnel: оборачивает TCP 12000 в TLS. Клиент подключается к stunnel-порту, тот расшифровывает и передаёт CCcam на localhost. Конфигурация простая, но требует поддержки stunnel на клиентской стороне.

WireGuard: ещё лучше. CCcam слушает только на wg0 интерфейсе (10.0.0.1:12000), клиенты подключаются только через VPN-туннель. Для внешнего мира порт 12000 вообще не существует. Это правильное решение для интернет-доступа.

Миграция на OScam: когда и зачем

Если вы дочитали до этого раздела и настроили рабочий сервер — хорошо. Но CCcam это legacy, и рано или поздно вы упрётесь в его ограничения. OScam — это активно развивающийся проект, последние коммиты есть в 2025-2026 году.

Преимущества OScam: EMM, DVB-API, лучшая стабильность

Ключевые отличия:

  • EMM-поддержка: OScam умеет обрабатывать EMM-сообщения и обновлять ключи карты. CCcam — нет. Для некоторых провайдеров это критично.
  • DVB-API: OScam может работать напрямую с DVB-устройствами, без внешнего ридера.
  • Стабильность: нет известного memleak как в CCcam. Не нужен cron-рестарт каждые 24 часа.
  • Гибкая конфигурация: отдельные файлы для каждой сущности — удобнее чем один огромный CCcam.cfg.

Конвертация CCcam.cfg → oscam.server и oscam.user

Конфиги OScam лежат в /etc/oscam/. Основные файлы: oscam.conf, oscam.server, oscam.user.

Ваш SERIAL READER из CCcam.cfg превращается в секцию в /etc/oscam/oscam.server:

[reader]
label     = viaccess_reader
enable    = 1
protocol  = mouse
device    = /dev/ttyUSB0
mhz       = 600
caid      = 0500

Параметр protocol=mouse — для обычных serial-ридеров (Phoenix, Smargo). Для Smargo USB с нативной поддержкой — protocol=smartreader.

Сохранение F-линий клиентов при переходе

Каждая F-линия из CCcam.cfg становится секцией в /etc/oscam/oscam.user:

Было в CCcam.cfg:

F: myuser mypassword 2 0 0 { 0:0:1 }

Стало в oscam.user:

[account]
user       = myuser
pwd        = mypassword
maxhops    = 2
au         = 0
group      = 1
caid       = 0500,1800

Клиенты не заметят перехода: они по-прежнему подключаются через CCcam-протокол, просто теперь его обрабатывает OScam. В oscam.conf включите нужный порт:

[cs378x]
port = 12000

Это cs378x протокол — совместимый с CCcam. Ваши клиенты с C-линиями продолжают работать без изменений.

Частые вопросы

Какой порт по умолчанию использует CCcam сервер?

TCP 12000 — для клиент-серверного протокола CCcam. TCP 16001 — для веб-интерфейса мониторинга. Оба порта настраиваются в CCcam.cfg через параметры SERVER LISTEN PORT и WEBINFO LISTEN PORT. Для сервера, доступного из интернета, рекомендую менять 12000 на нестандартный порт — это уберёт большинство автоматических сканеров.

Почему клиент подключается, но каналы не открываются?

Первое что проверяю — ECM time в логе. Если больше 2000 ms или вижу timeout, проблема в маршруте до карты: либо сетевая задержка, либо карта перегружена запросами. Проверьте через webinfo что ридер видит карту (статус card found). Часто виновата неверная частота mhz — попробуйте 357 вместо 600 или наоборот. Ещё вариант: hop в F-линии слишком маленький для вашей топологии — поставьте 2.

Что означает hop в F-линии и как его выставить?

Hop — количество промежуточных серверов, через которые клиент может пересылать карту дальше. Значение 0 означает только локальный доступ без возможности reshare. Значение 1 — клиент может отдавать карту одному уровню ниже. Для домашних клиентов в локальной сети ставьте 1. Если клиент сам является сервером — 2. Больше 3 не рекомендую: ECM time растёт с каждым дополнительным хопом, и к клиенту четвёртого уровня приходит уже с заметной задержкой.

Как запустить CCcam как сервис на Debian 12?

Создайте /etc/systemd/system/cccam.service с ExecStart=/usr/bin/CCcam -d, Restart=on-failure, RestartSec=10. Потом: systemctl daemon-reload && systemctl enable --now cccam. Логи смотреть через journalctl -u cccam -f. Важно: на 64-битном Debian обязательно установите libc6-i386 до запуска, иначе CCcam откажется стартовать с непонятной ошибкой.

Можно ли запустить CCcam и OScam одновременно на одном сервере?

Технически да, но они будут конкурировать за /dev/ttyUSB0. Правильное решение: OScam держит ридер напрямую и отдаёт CCcam через cs378x или newcamd протокол на localhost. CCcam в таком случае работает как чистый прокси-сервер без прямого доступа к карте. Это даже полезно на переходный период: клиенты с C-линиями работают без изменений пока вы настраиваете OScam.

Как защитить сервер от несанкционированных подключений?

Минимальный набор: iptables с вайтлистом IP клиентов, fail2ban с regex на login failed в CCcam.log, длинные пароли в F-линиях (16+ символов), обязательно chmod 600 на CCcam.cfg. Для доступа из интернета — никогда не выставляйте порт 12000 напрямую. Оберните в WireGuard или stunnel. Это не паранойя — боты сканируют нестандартные порты постоянно.

Почему ECM time скачет от 200 до 3000 ms?

Нестабильный uplink или перегруженная карта. Каждая карта обрабатывает примерно 5-10 ECM-запросов в секунду — если клиентов больше, запросы встают в очередь. Сетевая задержка между сервером и клиентом добавляется напрямую: 100 ms пинг = 100 ms к каждому ECM. Ограничьте MAXCONNECTIONS в F-линии и проверьте загрузку канала сервера в момент пиков.

Практические советы для стабильного просмотра

Даже самая стабильная линия CCCam или OSCam требует пары простых подготовительных шагов. Обновляйте прошивку ресивера, раз в неделю очищайте ECM‑кеш и держите 15–20% свободного места на USB‑накопителе или во встроенной памяти, чтобы кардридер записывал ключи без задержек.

При настройке антенны оставляйте запас по MER/BER: смещение на два градуса или ослабленный F‑коннектор чаще становится причиной “фризов”, чем сам кардшаринг. Держите под рукой короткий патч‑корд для проверки другого роутера и сохраните два профиля в OSCam — под TCP и под UDP — чтобы мгновенно переключиться, если провайдер начнёт фильтровать протокол.

Utgard.tv следит за каждым хабом 24/7, однако вы можете ускорить диагностику, если будете вести небольшой журнал действий. Записывайте время переключения канала, активный CAID и то, использовали ли вы Wi‑Fi или Ethernet. Такой мини‑отчёт позволит инженерам воспроизвести вашу конфигурацию в лаборатории и предложить решение не за часы, а за минуты.

  • Держите активными две линии: если первый сервер уходит на обслуживание, второй тут же подхватывает поток без повторного ввода логина.
  • Раз в месяц делайте замер скорости и задержек. Стабильных 1–2 Мбит/с при пинге до 80 мс достаточно для SD/HD, но если джиттер превышает 20 мс — переведите роутер на провод.
  • Сохраните в закладки страницу статуса Utgard.tv и Telegram‑бота @utgard_tv_bot — там появляются уведомления о работах раньше, чем успеют среагировать SEMrush или внешние мониторы.