CCcam Server: установка, настройка и оптимизация в 2026

Если вы когда-нибудь пытались разобраться в cccamserver по форумным обрывкам и туториалам пятилетней давности — я понимаю боль. Большинство гайдов копируют одни и те же конфиги без объяснения что и зачем. Здесь я постараюсь разобрать всё по-человечески: архитектуру, файлы, команды, диагностику и безопасность. Без воды.

Что такое CCcam server и как он работает

CCcam — это программный посредник между физической смарт-картой условного доступа и DVB-ресивером. Карта вставлена в один компьютер или ресивер, CCcam слушает подключения клиентов по сети и отдаёт им расшифрованный ECM-ответ. Клиент получает Control Word, декодирует поток — канал открывается.

Сам по себе cccamserver — закрытый проприетарный бинарник. Исходников нет, развитие остановилось ещё несколько лет назад. Последние активно используемые версии — 2.1.4 и 2.3.x. Между ними есть несовместимость в протоколе обмена, что периодически ломает шары между пирами разных версий.

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

Три роли в экосистеме CCcam:

  • Сервер — машина с физической картой. Принимает входящие подключения по C-line.
  • Клиент — ресивер или машина без карты. Подключается к серверу через C-line в конфиге.
  • Реселлер — принимает шары от одного сервера и раздаёт дальше. Это F-line + C-line в одном конфиге.

Реселлерская схема увеличивает hop-счётчик. Hop 1 означает карта прямо на сервере пира. Hop 2 — карта через один промежуточный узел. На практике всё что выше hop 2 нестабильно: задержки растут, при смене ключей цепочка рассыпается.

Протокол обмена и порт 12000 по умолчанию

CCcam использует TCP порт 12000 для всех клиентских подключений. После TCP-хендшейка происходит DES-обмен (псевдо-шифрование инициализационного вектора на основе username). Это не настоящее шифрование в современном смысле — скорее идентификация сессии.

Порт webinfo по умолчанию — 16001. Через него доступен веб-интерфейс с состоянием подключений, шарами и провайдерами. Оба порта меняются в CCcam.cfg параметрами SERVER LISTEN PORT и WEBINFO LISTEN PORT.

Отличия CCcam от OScam, MgCamd и NewCamd

CCcam — закрытый бинарник, поддерживает только собственный протокол. OScam — open source, активно развивается, поддерживает CCcam, NewCamd, MgCamd, CAMD35, имеет модульную архитектуру и DVBAPI-модуль. На современных ресиверах в 2026 году OScam стабильнее: меньше утечек памяти, нормальный логинг, гибкая настройка приоритетов.

MgCamd — клиент, не сервер. NewCamd — старый протокол, живёт в виде N-line в CCcam и как модуль в OScam. Если ставите новый сервер с нуля — серьёзно подумайте об OScam. CCcam имеет смысл если пиры специфично требуют этот протокол или у вас уже работающая конфигурация.

Установка CCcam server на Linux (Debian/Ubuntu)

Предполагаю что у вас чистый Debian 12 или Ubuntu 22.04. Минимальные зависимости: libc6 2.17+, что есть в любом современном дистрибутиве. Для ARM (Raspberry Pi, Enigma2) нужен соответствующий бинарник.

Системные требования и подготовка

CCcam нетребователен к железу. VPS с 512 МБ RAM и одним ядром выдержит 20-30 клиентов без проблем. Raspberry Pi 3/4 обслуживает десятки клиентов, нагрузка на CPU — единицы процентов.

Убедитесь что порт 12000 не занят:

ss -tlnp | grep 12000

Создайте нужные директории:

mkdir -p /var/etc /var/log/cccam

Распаковка бинарника CCcam в /usr/bin/

Скачайте архив с бинарником под вашу архитектуру. Для x86_64:

cp CCcam.x86_64 /usr/bin/CCcam.x86_64
chmod +x /usr/bin/CCcam.x86_64

Для ARM (Raspberry Pi 3/4, armv7):

cp CCcam.armv7 /usr/bin/CCcam
chmod +x /usr/bin/CCcam

Проверьте что бинарник запускается:

/usr/bin/CCcam.x86_64 -v

Если получаете Exec format error — неправильная архитектура бинарника. На Raspberry Pi Zero/1 нужен armv6, на Pi 2/3/4 подходит armv7.

Создание systemd-сервиса для автозапуска

Большинство старых гайдов показывают init.d скрипты. Забудьте о них — systemd есть везде начиная с Debian 8. Вот нормальный unit-файл:

# /etc/systemd/system/cccam.service
[Unit]
Description=CCcam Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/CCcam.x86_64
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Активируйте и запустите:

systemctl daemon-reload
systemctl enable cccam
systemctl start cccam
systemctl status cccam

Параметр Restart=always важен — CCcam иногда падает после нескольких часов работы из-за утечки памяти. С этим параметром systemd поднимает его автоматически. Если падения частые (каждые 2-4 часа) — это сигнал переходить на OScam.

Установка на Raspberry Pi и Enigma2 ресиверы

На Enigma2 (OpenATV, OpenPLi) используется opkg. Найдите пакет CCcam_2.x.x_mipsel.ipk или соответствующий под вашу платформу (sh4 для старых Vu+, armv7 для современных):

opkg install CCcam_2.3.0_mipsel.ipk

На Enigma2 конфиг лежит в /var/etc/CCcam.cfg, бинарник обычно в /usr/bin/CCcam. Автозапуск через init.d скрипт уже включён в пакет.

На Raspberry Pi с Raspbian — используйте systemd-метод выше. ARM-бинарник CCcam работает стабильно, но если планируете 50+ клиентов — лучше сразу OScam.

Структура файла CCcam.cfg

Главный конфиг cccamserver — /var/etc/CCcam.cfg. На некоторых Linux-дистрибутивах ищите /etc/CCcam.cfg. Формат простой: одна директива на строку, комментарии через #.

Глобальные параметры (SERVER LISTEN PORT, OSCAM HOPS)

SERVER LISTEN PORT : 12000
WEBINFO LISTEN PORT : 16001
WEBINFO USERNAME : admin
WEBINFO PASSWORD : ChangeMeNow

OSCAM HOPS : 1
NEWCAMD HOPS : 1
RESHARE : 0
RESHARE SERVICES : 0
MINIMIZE FREE CARDS : 0
EXTRA EMM LEVEL : 1
SHOW TIMING : 1
KEEPALIVE TIMEOUT : 0
CACHEEX MODE : 0
MAX HOPS : 9

RESHARE — сколько раз разрешено переперадавать шары клиентам. 0 = клиенты не могут решейрить. 1 = один уровень решейра. Ставьте 0 если не знаете зачем это нужно.

SHOW TIMING — выводить время декодирования ECM в логе. Полезно для диагностики задержек.

F-line: настройка локальных пользователей

F-line определяет пользователей которые могут подключаться к вашему серверу:

# F: username password reshare au { провайдер:пакет:тип }
F: user1 Sup3rS3cr3tPass 2 0 0 { 0:0:1 }
F: user2 AnotherP4ssw0rd 0 0 0 { 0:0:1 }

Поля после пароля: reshare (0-10), au (auto-update EMM, 0 или 1), au-type. { 0:0:1 } означает все провайдеры, все пакеты, все типы карт. Можно ограничить конкретным CAID:ID.

Никогда не используйте простые пароли в F-line. Минимум 16 символов, случайная строка. Форумы полны историй о взломанных серверах с паролями типа "12345" или "cccam".

C-line: подключение к удалённым серверам

C-line — это подключение вашего сервера к удалённому пиру для получения шар:

# C: host port username password {no/yes} { 0:0:1 }
C: peer.example.com 12000 myuser mypassword no { 0:0:1 }

Пятое поле — no или yes. Исторически это был флаг "новый протокол". Для большинства случаев — no.

Можно добавить несколько C-line — CCcam будет использовать их по приоритету и переключаться при недоступности.

N-line и L-line: NewCamd и локальные ридеры

N-line подключается к NewCamd-серверу (устаревший протокол, редко встречается в 2026):

N: host 15050 user pass 01 02 03 04 05 06 07 08 09 10 11 12 13 14

L-line — локальный ридер, физическая карта напрямую в CCcam (альтернатива использованию OScam как бэкенда):

L: 9025 0

Минимальный рабочий конфиг для сервера с одним пользователем и одним пиром:

SERVER LISTEN PORT : 12000
WEBINFO LISTEN PORT : 16001
WEBINFO USERNAME : admin
WEBINFO PASSWORD : SomeRandomPassword123!

F: myclient StrongP4ssw0rd! 0 0 0 { 0:0:1 }
C: peerdomain.example 12000 peeruser peerpass no { 0:0:1 }

Открытие портов, firewall и проброс через NAT

Порт 12000 должен быть открыт для входящих TCP-подключений от клиентов. Порт 16001 (webinfo) — желательно закрыть от интернета полностью или ограничить по IP.

iptables и ufw правила для порта 12000

Если используете ufw:

ufw allow 12000/tcp
ufw deny 16001/tcp
ufw reload

Через iptables напрямую:

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

Второе правило разрешает webinfo только из локальной сети. Всё остальное — дроп. Это важно: webinfo без авторизации показывает все ваши шары, пользователей и C-line пирам.

Проброс порта на роутере (port forwarding)

Если CCcam server стоит за роутером, нужен port forwarding: входящий TCP 12000 → внутренний IP вашей машины, тот же порт. Конкретные шаги зависят от модели роутера, но логика везде одинаковая: внешний порт → внутренний IP:порт.

Особый случай — CGNAT (двойной NAT у провайдера). Если ваш роутер получает серый IP (10.x.x.x или 100.64.x.x), проброс не поможет — у вас нет публичного адреса. Решение: арендуйте VPS с публичным IP и настройте туннель (WireGuard, SSH reverse tunnel) между VPS и домашней машиной.

Использование DDNS для динамического IP

Если провайдер даёт публичный IP но динамический — используйте DDNS: DuckDNS (бесплатно), No-IP, или Cloudflare с API-обновлением. Клиент будет подключаться по домену, а не IP, и при смене адреса ничего перенастраивать не нужно.

DuckDNS — самое простое решение. Регистрируетесь, получаете домен типа myserver.duckdns.org, настраиваете cron каждые 5 минут:

*/5 * * * * curl -s "https://www.duckdns.org/update?domains=myserver&token=YOUR_TOKEN&ip=" > /dev/null

Защита webinfo через .htaccess или nginx

Если webinfo нужен снаружи (удалённый мониторинг), поставьте nginx как reverse proxy с HTTP-аутентификацией:

location /cccam-status/ {
    proxy_pass http://127.0.0.1:16001/;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Так webinfo слушает только на localhost, наружу торчит только через nginx с паролем. Критичное правило — никогда не держите порт 16001 открытым без авторизации.

Отладка и диагностика CCcam server

Большинство проблем с cccamserver диагностируются за 5 минут если знать куда смотреть. Главные инструменты: debug-режим, лог-файл и webinfo.

Запуск в debug-режиме (CCcam -d)

Остановите systemd-сервис и запустите CCcam вручную:

systemctl stop cccam
/usr/bin/CCcam.x86_64 -d

Вывод пойдёт прямо в консоль. Вы увидите в реальном времени: подключения клиентов, попытки авторизации, получение шар от пиров, ECM-запросы. Флаг -d даёт максимальную детализацию — именно то что нужно при первоначальной настройке.

Чтение логов в реальном времени

tail -f /tmp/CCcam.log

На некоторых сборках лог пишется в /var/log/CCcam.log. Если файла нет — CCcam пишет только в stdout, смотрите через:

journalctl -u cccam -f

Webinfo: проверка статуса через браузер

Откройте http://YOUR_IP:16001 в браузере. Четыре вкладки:

  • Connections — текущие подключенные клиенты, их версия CCcam, время подключения
  • Shares — все доступные шары с CAID, провайдером и hop-числом
  • Providers — список провайдеров по CAID
  • System — версия CCcam, uptime, версия ОС

Если вкладка Shares пустая после запуска — шары не получены. Смотрим в Connections: пир подключён? Если нет — проблема в C-line или файрволе.

Типовые ошибки и их расшифровка

shares received: 0 — пир подключился но не отдал ни одной шары. Причины: reshare=0 на его стороне, ваш аккаунт не активирован, несовместимость версий.

no card available — запрос ECM пришёл, но подходящей карты нет. Либо нужный CAID не покрыт вашими шарами, либо все пиры офлайн.

card decoded ok — всё нормально, канал открылся.

cannot decode — карта есть, но не может расшифровать. Обычно означает что ключи сменились (provider key update) и карта ещё не обновилась через EMM.

peer disconnected — пир разорвал соединение. CCcam переподключится автоматически. Если это происходит постоянно — плохой пир, смотрите на другого.

Оптимизация производительности и стабильности

Базовая установка работает, но есть несколько параметров которые влияют на скорость переключения каналов (zap time) и стабильность.

Тюнинг параметров EXTRA EMM LEVEL и SHOW TIMING

EXTRA EMM LEVEL управляет обработкой EMM-сообщений (обновление ключей карты). Значения 0-3:

  • 0 — минимальная обработка, меньше трафика
  • 1 — стандартный уровень
  • 3 — максимальный, карта быстрее получает новые ключи после смены

Для стабильности рекомендую 2 или 3. Трафика чуть больше, зато карта не "слетает" после плановой смены ключей провайдером.

SHOW TIMING : 1 добавляет в лог время декодирования каждого ECM. Смотрите на эти цифры: меньше 300ms — хорошо, 300-800ms — терпимо, больше 800ms — зритель видит задержку при переключении, нужно менять пира.

Минимизация задержек переключения каналов (zap time)

Задержка при переключении каналов складывается из: времени передачи ECM-запроса до карты + времени декодирования + времени возврата Control Word. Hop-число напрямую влияет: каждый лишний хоп добавляет 50-200ms.

Параметр MINIMIZE FREE CARDS : 1 заставляет CCcam выбирать карту с наименьшим числом активных пользователей. На практике это снижает среднее время ответа при нагруженном сервере.

Балансировка между несколькими C-line

При нескольких C-line от разных пиров CCcam использует их по порядку и переключается при недоступности. Более гибкого балансирования в CCcam нет — это одно из его слабых мест по сравнению с OScam, где можно настроить приоритеты, таймауты и failover детально.

Практический совет: ставьте самый быстрый и стабильный пир первым в списке C-line, остальные как резерв.

Когда переходить на OScam

Несколько признаков что пора:

  • CCcam падает раз в несколько часов (утечка памяти)
  • Нужна поддержка нескольких протоколов одновременно (CCcam + NewCamd)
  • Нужна детальная статистика и логирование на уровне каждой карты
  • Используете современный ресивер с DVBAPI-поддержкой
  • Хотите тонкой настройки приоритетов и таймаутов

OScam умеет эмулировать CCcam-протокол полностью, так что существующие клиенты с C-line даже не заметят миграции. Конфиги лежат в /etc/oscam/oscam.server и /etc/oscam/oscam.user.

Безопасность CCcam server

Открытый порт 12000 на публичном IP означает что брутфорс начнётся в течение нескольких часов после запуска. Это не паранойя — это реальность.

Сильные пароли в F-line и ротация

Минимум 16 символов, случайная строка из букв, цифр и символов. Генерируйте через:

openssl rand -base64 20

Меняйте пароли F-line раз в 1-2 месяца. Или при любом подозрении на компрометацию. CCcam не логирует неудачные попытки авторизации так же подробно как OScam, поэтому сильные пароли здесь критичны.

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

Через iptables можно ограничить одновременные подключения с одного адреса:

iptables -A INPUT -p tcp --dport 12000 -m connlimit --connlimit-above 3 -j REJECT

Три соединения с одного IP обычно достаточно для легитимного использования. Брутфорс-боты создают десятки подключений параллельно — этим правилом они режутся.

Изоляция сервера через VPN-туннель

Самый надёжный вариант для обмена с доверенными пирами — не открывать 12000 наружу вообще. Поднимите WireGuard-туннель между собой и пирами, пропишите C-line с внутренними адресами WireGuard (10.0.0.x). Снаружи порт закрыт, трафик шифруется WireGuard.

Конфигурация WireGuard выходит за рамки этого текста, но это несложно — один peer-блок на каждого участника, порт 51820 UDP.

Мониторинг попыток брутфорса

Установите fail2ban и создайте правило для CCcam:

# /etc/fail2ban/filter.d/cccam.conf
[Definition]
failregex = .*invalid user .* from 
ignoreregex =
# /etc/fail2ban/jail.d/cccam.conf
[cccam]
enabled = true
port = 12000
filter = cccam
logpath = /tmp/CCcam.log
maxretry = 5
bantime = 3600
findtime = 600

Проблема в том что CCcam не всегда явно логирует неудачные авторизации в удобном формате. Если fail2ban не ловит попытки — смотрите реальный лог через CCcam -d и подбирайте regex под конкретные строки вашей версии.

Как выбрать надёжного партнёра для обмена

На качество работы вашего cccamserver сильно влияет качество пиров. Хорошие шары от надёжных источников — половина успеха.

Критерии оценки качества шар

Главные метрики:

  • ECM время <300ms — хорошо. 300-600ms — нормально. >800ms — плохо, зритель замечает задержку.
  • Hop-число — 1 лучше, 2 приемлемо, 3+ нежелательно.
  • AU (auto-update) — пир должен поддерживать AU, иначе после плановой смены ключей провайдером шары перестанут работать до следующей ручной замены.
  • Uptime — сколько времени сервер пира доступен. Меньше 99% месячного uptime — искать альтернативу.
  • Скорость реакции на key update — насколько быстро пир восстанавливает работу после смены ключей провайдером. Хороший пир — несколько минут. Плохой — несколько дней.

Признаки нестабильного пира

Смотрите на паттерны в webinfo и логах:

  • Частые peer disconnected с быстрым переподключением — нестабильное соединение или перегруженный сервер
  • shares received: 0 после успешного подключения — пир не настроен или намеренно не раздаёт
  • Hop 3+ в шарах от этого пира — реселлерская цепочка с непредсказуемой стабильностью
  • ECM время скачет от 100ms до 2000ms в пределах часа — перегруженный сервер или плохой канал до карты
  • Нет AU-флага в шарах — после смены ключей карта ляжет и не восстановится автоматически

Тестовый период и проверка uptime

Никогда не берите пира на долгосрок без тестового периода. 24-48 часов активного использования покажут реальную картину: стабильность, ECM-время в разное время суток, поведение при peak hours.

Смотрите на поведение в прайм-тайм (вечерние часы) — именно тогда нагруженный сервер деградирует. Если пир отлично работает в 3 ночи но лагает в 21:00 — он перегружен.

Хороший пир без лишних слов покажет список доступных провайдеров/CAID до начала работы. Если вам отказывают в этой информации — это тревожный сигнал.

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

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

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

Где находится конфиг CCcam после установки?

На большинстве Enigma2 и Linux-сборок — /var/etc/CCcam.cfg. На некоторых дистрибутивах — /etc/CCcam.cfg. Бинарник обычно в /usr/bin/CCcam.x86_64 (для x86) или /usr/bin/CCcam.mipsel (для Enigma2 MIPS). Проверить где CCcam ищет конфиг можно запустив с флагом -d и посмотрев первые строки вывода.

Чем CCcam отличается от OScam?

CCcam — закрытый бинарник, поддерживает только собственный протокол, последние обновления были несколько лет назад. OScam — open source, активно разрабатывается, поддерживает CCcam, NewCamd, MgCamd, CAMD35 одновременно, имеет модуль DVBAPI, WebIf с детальной статистикой и гибкой настройкой приоритетов. В 2026 году для нового сервера чаще выбирают OScam — стабильнее, функциональнее, нет проблем с утечками памяти.

Что означает hop 1 и hop 2 в CCcam?

Hop — количество узлов между физической смарт-картой и вашим клиентом. Hop 1: карта напрямую в ресивере или компьютере пира, прямое подключение. Hop 2: карта идёт через ещё один промежуточный сервер. Каждый дополнительный хоп добавляет задержку и точку отказа. Hop 3+ обычно нестабильно и медленно — при смене ключей цепочка рассыпается с задержкой.

Почему CCcam server показывает 'shares: 0' после запуска?

Несколько причин: опечатка в host/port/user/pass в C-line (проверьте дважды), закрытый исходящий TCP 12000 на вашем файрволе, пир ещё не активировал ваш аккаунт, несовместимость версий CCcam между вами и пиром (2.1.4 и 2.3.x иногда несовместимы), reshare=0 на стороне пира. Запустите с -d и смотрите что происходит в момент подключения к пиру.

Можно ли запускать CCcam server на Raspberry Pi?

Да, без проблем. Нужна ARM-версия бинарника: armv6 для Pi Zero/1, armv7 для Pi 2/3/4. Raspbian/Debian, systemd-сервис для автозапуска — и готово. Pi 3/4 без труда обслуживает десятки клиентов, нагрузка на CPU минимальная. Если планируете 100+ клиентов — Pi 4 с 2 ГБ RAM справится, но это уже граница разумного для такого железа.

Как защитить CCcam server от брутфорса?

Используйте fail2ban с правилом на CCcam.log, генерируйте длинные случайные пароли в F-line (минимум 16 символов через openssl rand -base64 20), закройте webinfo от внешнего доступа, ограничьте одновременные подключения с одного IP через iptables connlimit. Для максимальной защиты — запустите CCcam за WireGuard-туннелем и не открывайте 12000 наружу вообще.

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.