Настройка 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-линии и проверьте загрузку канала сервера в момент пиков.

Practical checklist for smooth viewing

Even the best CCCam or OSCam line needs two or three simple preparations. Update your receiver firmware, reset the ECM cache once a week and keep 15–20% free space on the USB stick or internal flash so that the reader can store keys without delays.

When tuning a dish, aim for MER/BER reserve: a two‑degree offset or a loose F‑connector often causes the “freezing” that users blame on cardsharing. Keep a short patch cord to test alternative routers, and save two profiles in OSCam — one for TCP, one for UDP — so you can switch instantly if your ISP starts filtering a protocol.

Utgard.tv monitors each hub 24/7, but you can speed up diagnostics by keeping a short log of your receiver actions. Note the time when you changed the channel, which CAID was active and whether you used Wi‑Fi or Ethernet. This tiny “journal” helps engineers reproduce your environment in the lab and return with a solution in minutes instead of hours.

  • Keep two line slots enabled: if the first server hits a maintenance window, the second one instantly takes over without re-entering credentials.
  • Run a monthly speed and latency test. Stable 1–2 Mbps with ping <80 ms is enough for SD/HD, but if jitter exceeds 20 ms, switch the router to wired mode.
  • Save the Utgard.tv status page and Telegram bot @utgard_tv_bot to bookmarks — they publish maintenance notices before SEMrush or uptime monitors raise alerts.