Server CCcam: настройка и запуск сервера в 2026
Если вы хотите поднять собственный server cccam на Linux — будь то VPS или домашняя машина с DVB-картой — этот материал даст вам всё необходимое. Без воды, с реальными командами и конфигами. CCcam 2.3.2, systemd, fail2ban, интеграция с oscam-emu — разберём всё по порядку.
Что такое CCcam сервер и как он работает
CCcam — это программа для card sharing по сети. Сервер держит smartcard (или источник ключей) и раздаёт decryption control words (DCW) клиентам, у которых карты нет. Клиент подключается, запрашивает DCW через ECM-пакет, сервер отвечает — и канал открывается.
Протокол закрытый. Последняя версия — 2.3.2, вышла в 2014 году, с тех пор разработка заморожена. Но протокол до сих пор поддерживается большинством ресиверов и эмуляторов, поэтому CCcam остаётся в ходу.
Протокол CCcam: принцип обмена control words
Handshake строится на DES-шифровании. При подключении клиент и сервер обмениваются случайными seed-ами, формируют сессионные ключи, после чего весь трафик идёт в зашифрованном виде. ECM-запрос (около 16 байт) летит от клиента к серверу, сервер прогоняет его через reader или upstream, возвращает DCW (16 байт).
EMM-пакеты используются для обновления карты (conditional access entitlements). На публичных серверах EMM обычно отключают, чтобы защитить карту от burn-aut.
Роль сервера, клиента и reader-а
Reader — это физический или программный источник ключей. Сервер — узел, который агрегирует readers и отдаёт DCW клиентам. Клиент — ресивер или эмулятор (Oscam, Cardware, mgcamd), который подключается к серверу по C-line.
Один сервер может одновременно быть клиентом другого сервера (upstream). Так строятся цепочки хопов.
Порт 12000 и TCP-соединение
По умолчанию CCcam слушает TCP-порт 12000. Клиент открывает постоянное соединение — не HTTP, не UDP, а долгоживущий TCP-сокет. Если соединение рвётся, клиент пробует переподключиться. Высокий пинг (>100 мс) напрямую влияет на ECM-время — канал будет притормаживать.
Отличия CCcam от OScam и NewCamd
OScam — open-source, активно развивается, поддерживает CAMD35, NewCamd, GBox, mgcamd. CCcam проще в конфигурации, но мертвее в плане поддержки. NewCamd — более старый протокол, сейчас используется в основном как reader-тип внутри OScam/CCcam.
Для production-сервера в 2026, если есть выбор, берите OScam. CCcam имеет смысл когда клиент поддерживает только этот протокол или когда нужна максимально простая конфигурация.
Требования к серверу и подготовка окружения
CCcam — 32-битный бинарник. На современных 64-битных дистрибутивах он без дополнительных библиотек не запустится. Это первая вещь, которую забывают в большинстве гайдов.
Минимальные характеристики VPS: CPU, RAM, сеть
512 МБ RAM хватает для небольшого сервера (10–20 клиентов). CPU нагрузка минимальная — CCcam не шифрует видеопоток, только DCW. Сеть важнее: пинг до клиентов должен быть стабильным, желательно <50 мс. Для европейских клиентов — датацентр во Франции или Германии, не в Азии.
Поддерживаемые дистрибутивы Linux
Лучше всего работает на Debian 11/12 и Ubuntu 20.04/22.04. CentOS 7 тоже подойдёт, но после окончания поддержки не рекомендую. На Debian 12 (bookworm) multiarch работает из коробки.
Необходимые библиотеки: libssl, libcrypto, glibc i386
На 64-битной системе установите:
dpkg --add-architecture i386
apt update
apt install libc6:i386 libstdc++6:i386 libssl1.1:i386 zlib1g:i386
На Ubuntu 22.04 пакет libssl1.1:i386 может отсутствовать в основных репах — добавьте репозиторий focal или используйте совместимую версию из ubuntu-security. Без этих библиотек CCcam просто не запустится, выдав ошибку No such file or directory при попытке выполнить бинарник.
Открытие портов в firewall (iptables, ufw)
Для iptables:
iptables -A INPUT -p tcp --dport 12000 -j ACCEPT
iptables -A INPUT -p tcp --dport 16001 -j ACCEPT
iptables-save > /etc/iptables/rules.v4
Для ufw:
ufw allow 12000/tcp
ufw reload
Порт 16001 (веб-интерфейс) открывайте только если нужен удалённый доступ — лучше ограничить через iptables до конкретного IP.
Статический IP или динамический DNS
На VPS обычно есть статический IP — проблем нет. Если поднимаете сервер дома, нужен DDNS-сервис (No-IP, DuckDNS) и проброс порта 12000 на роутере. Клиенты в C-line прописывают ваш DDNS-hostname вместо IP. При смене IP они автоматически резолвят новый адрес при следующем переподключении.
Установка CCcam сервера на Linux
Сам процесс несложный — CCcam распространяется как готовый бинарник, никакой компиляции. Главное: правильно разложить файлы и настроить автозапуск через systemd, а не через rc.local, как пишут в устаревших гайдах.
Скачивание бинарника CCcam 2.3.2
Официальный источник — образы для Enigma2-ресиверов, откуда бинарник можно извлечь. Для Linux x86 ищите файл с именем CCcam.x86 или CCcam_2.3.2_x86. Убедитесь в целостности файла — проверьте MD5/SHA256 если есть checksum от источника.
Размещение в /usr/bin/ и права на исполнение
cp CCcam.x86 /usr/bin/CCcam
chmod 755 /usr/bin/CCcam
chown root:root /usr/bin/CCcam
Проверить что бинарник запускается:
/usr/bin/CCcam --version
Если ответ bash: /usr/bin/CCcam: No such file or directory при том что файл есть — проблема в 32-битных библиотеках. Установите их по инструкции выше.
Создание директории /var/etc/ для конфига
mkdir -p /var/etc
touch /var/etc/CCcam.cfg
chmod 600 /var/etc/CCcam.cfg
CCcam по умолчанию ищет конфиг именно в /var/etc/CCcam.cfg. Можно передать другой путь через -C /path/to/CCcam.cfg, но зачем усложнять.
Запуск как systemd-сервис
Создайте unit file /etc/systemd/system/cccam.service:
[Unit]
Description=CCcam Card Sharing Server
After=network.target
[Service]
Type=simple
ExecStartPre=/usr/bin/pkill -f CCcam || true
ExecStart=/usr/bin/CCcam -C /var/etc/CCcam.cfg
Restart=always
RestartSec=30
StartLimitBurst=3
StartLimitIntervalSec=120
[Install]
WantedBy=multi-user.target
Почему RestartSec=30 и StartLimitBurst=3 — важный момент. Если в CCcam.cfg синтаксическая ошибка, CCcam упадёт немедленно после старта. Без ограничений systemd будет перезапускать его бесконечно за секунды, засоряя логи и нагружая систему. С этими параметрами после 3 неудачных попыток за 120 секунд сервис остановится и вы получите нормальный сигнал что что-то не так.
Строка ExecStartPre=/usr/bin/pkill -f CCcam || true решает другую проблему: после перезагрузки VPS иногда остаётся зомби-процесс CCcam, который занял порт 12000. Тогда новый экземпляр падает с cannot bind port. ExecStartPre убивает его перед стартом.
Автозапуск при перезагрузке
systemctl daemon-reload
systemctl enable cccam
systemctl start cccam
systemctl status cccam
Если статус active (running) — хорошо. Если failed — смотрите журнал: journalctl -u cccam -n 50.
Конфигурация CCcam.cfg: ключевые параметры
Вот минимальный рабочий конфиг с объяснениями. Это то, что большинство гайдов просто кидают без пояснений — и читатель гадает что означает каждая строчка.
# Основной порт для клиентских подключений
SERVER LISTEN PORT: 12000
# Максимум одновременных подключений
MAX CONNECTIONS: 100
# Показывать шары в веб-интерфейсе (для отладки)
SHOW SHARES: yes
# Отключить EMM (обновление карты) - защищает карту
DISABLE EMM: yes
# Веб-интерфейс на порту 16001
ALLOW WEBINFO: yes
WEBINFO PORT: 16001
WEBINFO USERNAME: admin
WEBINFO PASSWORD: changeme123
# Telnet-консоль на порту 16000
ALLOW TELNETINFO: yes
TELNETINFO PORT: 16000
TELNETINFO USERNAME: admin
TELNETINFO PASSWORD: changeme123
# Кэш: время жизни DCW в секундах
CACHE EXPIRE TIME: 2
# Минимальный downhop для кэша
MINIMUM DOWNHOPS: 1
# Запретить несколько подключений с одного аккаунта
ALLOW MULTIPLE CONNECTIONS PER USER: no
MAX CONNECTIONS PER LINE: 1
# F-lines для клиентов
F: client1 password1 1 0 0 { 0:0:1 }
F: client2 password2 1 0 0 { 0:0:1 }
# C-line для подключения к upstream (если нет своей карты)
# C: hostname port username password
SERVER LISTEN PORT: 12000
Если на той же машине работает OScam с CAMD35 на порту 12000 — конфликт. Меняйте на 12001 или другой свободный порт и обновляйте C-line у клиентов соответственно.
DISABLE EMM: yes/no и зачем
EMM (Entitlement Management Message) — это пакеты от провайдера для обновления подписки на карте. Если разрешить EMM, клиенты могут случайно или намеренно передавать EMM-пакеты, которые "сожгут" карту (провайдер обнаружит sharing и деактивирует карту). На публичных серверах всегда ставьте DISABLE EMM: yes.
ALLOW TELNETINFO: настройка веб-интерфейса на 16001
Telnet-консоль на порту 16000, веб-интерфейс на 16001. Оба запускаются независимо друг от друга. Для внешнего мира оба порта лучше закрыть и работать через SSH-туннель:
ssh -L 16001:localhost:16001 user@yourserver
F-line для каждого клиента: формат и пример
Формат: F: username password uphops reshare emm { caid:provid:sid }
Разберём F: client1 pass123 1 0 0 { 0:0:1 }:
- uphops = 1 — клиент может видеть карты с hop-уровнем не выше 1. Hop 0 = ваша локальная карта. Если вы сами получаете карту от upstream (hop 1), этому клиенту она будет недоступна при uphops=1.
- reshare = 0 — клиент не может пересылать ваши shares другим серверам. Значение 1 разрешает reshare на один уровень вниз.
- emm = 0 — EMM от этого клиента игнорируется (рекомендуется).
- { 0:0:1 } — клиент видит все CAID, всех провайдеров, все сервисы. Можно ограничить:
{ 1702:000000:0 }— только Nagravision.
Это то, что большинство гайдов не объясняет — просто дают синтаксис без смысла. А смысл в том, что uphops и reshare — это инструменты контроля над тем, кто что видит в вашей hop-цепочке.
C-line: подключение к upstream-серверам
Формат: C: hostname port username password {can-local-decode} {caid,caid,...}
Пример: C: upstream.example.com 12000 myuser mypassword 0
Карты от upstream получат hop-уровень 1. Ваши F-line клиенты с uphops=1 их не увидят. Для доступа к upstream-картам поставьте клиентам uphops=2.
N-line для NewCamd reader-ов
Если у вас есть NewCamd-reader (например, OScam в режиме newcamd-сервера), подключите его через N-line:
N: localhost 10000 username password 01020304050607080910111213141516 { 1702 }
Длинная hex-строка — DES-ключ NewCamd-сессии. Должна совпадать с той что в oscam.server на стороне OScam.
Кэширование: CACHE EXPIRE TIME, MINIMUM DOWNHOPS
CACHE EXPIRE TIME: 2 означает что DCW хранится 2 секунды. Если два клиента запрашивают один CAID:SID в течение 2 секунд — второй получит ответ из кэша без обращения к reader-у. Это снижает нагрузку на upstream. Значения 2–5 секунд — нормально для большинства провайдеров.
Подключение reader-а: физическая карта или эмулятор
CCcam сам по себе не умеет эмулировать CAS (conditional access system). Ему нужен источник control words — физическая карта или внешний эмулятор.
PCSC reader через /dev/sci0 или /dev/ttyUSB0
Если у вас DVB-карта со встроенным reader-ом, CCcam находит её автоматически через /dev/sci0. USB-картридеры обычно маппируются на /dev/ttyUSB0 или /dev/ttyS0.
В CCcam.cfg добавьте:
SERIAL READER: /dev/ttyUSB0 phoenix
Проверить что CCcam видит reader:
grep -i reader /var/log/CCcam.log
Или подключитесь по telnet и введите r — увидите список активных readers.
Smartreader+ и phoenix-mode
Smartreader+ — внешний USB-ридер, работает через phoenix-mode. В конфиге указывается как phoenix или mouse в зависимости от версии прошивки ридера. Phoenix-mode — это эмуляция встроенного card reader-а ресиверов типа DreamBox.
Эмулятор oscam-emu как источник keys
Самая популярная связка в 2026 — OScam с патчем oscam-emu в роли reader-а для CCcam. OScam поднимает NewCamd-сервер, CCcam подключается к нему через N-line и получает DCW от эмулятора.
На стороне OScam в /etc/oscam/oscam.server:
[reader]
label = emu
protocol = emu
device = emulator
caid = 1702,1830,0D00
ident = 1702:000000
И добавьте newcamd listener в /etc/oscam/oscam.conf:
[newcamd]
port = 10000@1702:000000
key = 0102030405060708090A0B0C0D
Затем в CCcam.cfg подключите через N-line как показано выше. Проверьте что OScam и CCcam используют одинаковый DES-ключ.
Проверка чтения карты: SHOW READERS
SHOW READERS: yes
Добавьте эту директиву в CCcam.cfg. В веб-интерфейсе появится раздел Readers с текущим статусом каждого reader-а: подключен, CAID, провайдеры, время ответа.
Отдельная команда для быстрой проверки через grep:
cat /var/etc/CCcam.cfg | grep -i serial
Отладка и мониторинг CCcam сервера
CCcam не самый многословный в плане логов, но инструментов достаточно чтобы понять что происходит.
Веб-интерфейс на порту 16001 (http://server:16001)
Открываете в браузере http://yourserver:16001, вводите логин/пароль из CCcam.cfg. Видите: активные клиентские подключения, какие shares доступны, статус readers, ECM-статистику по каждому клиенту.
Если настраиваете server cccam впервые — веб-интерфейс это первое место куда смотреть при проблемах. Видите клиента в списке но у него "0 shares" — проблема в hop-логике или CAID-фильтрации.
Лог-файл и команда tail -f
tail -f /var/log/CCcam.log
Если лог-файл не создаётся — проверьте что /var/log/ доступен на запись. Иногда CCcam пишет лог в текущую директорию при запуске, а не в /var/log/.
Telnet-консоль и команды: c, s, r, q
telnet localhost 16000
Введите логин/пароль, потом:
c— список клиентов и их статусs— shares: какие CAID:Provider:SID доступны и с каким hopr— readers: физические и виртуальные источники DCWq— выход
Команда s — самая полезная при диагностике. Если клиент жалуется что канал не открывается, проверьте через s видит ли его сессия нужный CAID.
Анализ ECM-времени и hop-цепочки
Нормальные значения:
- Локальная карта (hop 0): 150–300 мс
- Hop 1 через быстрый upstream: 300–500 мс
- >800 мс — проблема. Проверьте пинг до upstream и нагрузку CPU
- >1500 мс — канал будет рассыпаться, клиент увидит артефакты
Высокое ECM-время при низком пинге до upstream часто означает перегруженный upstream-сервер — он сам не успевает обработать ECM-очередь.
Типичные ошибки в логах и их значение
cannot connect to reader— физический reader недоступен или /dev/ttyUSB0 занят другим процессомbad username/password— клиент вводит неверные данные или F-line не совпадает с тем что он прописал в C-lineshare not found— CAID который запрашивает клиент не существует в hop-цепочке сервераcard not found— share виден, но hop-уровень F-line не позволяет клиенту до него добратьсяcannot bind port: 12000— порт занят, проверьтеss -tlnp | grep 12000
Безопасность и стабильность работы
Публичный порт 12000 моментально начнёт получать попытки перебора паролей. Без защиты — вопрос времени когда кто-то подберёт рабочие credentials или просто забьёт канал SYN-флудом.
Защита от DDoS на порт 12000 (fail2ban правила)
Создайте jail-конфиг /etc/fail2ban/jail.d/cccam.conf:
[cccam]
enabled = true
port = 12000
protocol = tcp
filter = cccam
logpath = /var/log/CCcam.log
maxretry = 3
findtime = 600
bantime = 3600
banaction = iptables-multiport
И фильтр /etc/fail2ban/filter.d/cccam.conf:
[Definition]
failregex = bad username/password from
ignoreregex =
После трёх неудачных попыток за 10 минут — IP банится на час. Настройте bantime = 86400 если атаки частые.
Ограничение AU (auto-update) на untrusted клиентов
В F-line третий параметр (emm) должен быть 0 для всех клиентов которым вы не доверяете на 100%. Если клиент может слать EMM — он потенциально может спровоцировать burn карты. Даже случайно, без злого умысла — просто потому что его ресивер пытается обновить подписку.
Регулярная ротация паролей F-line
Меняйте пароли в F-line каждые 30–60 дней. После смены перезапускайте CCcam: systemctl restart cccam. Клиенты отключатся и переподключатся с новыми credentials (нужно обновить C-line у них).
Backup конфига и cron для перезапуска
Backup конфига:
cp /var/etc/CCcam.cfg /var/etc/CCcam.cfg.bak.$(date +%Y%m%d)
Добавьте в crontab watchdog-скрипт:
# Проверка каждые 10 минут
*/10 * * * * pgrep -x CCcam > /dev/null || systemctl restart cccam
Это страховка на случай если CCcam упал но systemd не среагировал (например, при превышении StartLimitBurst).
Мониторинг uptime через скрипт-watchdog
#!/bin/bash
# /usr/local/bin/cccam-watchdog.sh
if ! pgrep -x CCcam > /dev/null; then
echo "CCcam down at $(date)" >> /var/log/cccam-watchdog.log
systemctl restart cccam
fi
# Проверка что порт слушается
if ! ss -tlnp | grep -q :12000; then
echo "Port 12000 not listening at $(date)" >> /var/log/cccam-watchdog.log
systemctl restart cccam
fi
Запускайте через cron каждые 5 минут. Второй чек важен: иногда процесс живёт, но сокет не открылся из-за конфликта портов — pgrep это не поймает, а проверка ss поймает.
Один нюанс по ARM-архитектуре: если хотите поднять server cccam на Raspberry Pi — не выйдет. CCcam-бинарник существует только для x86/x86_64 (через i386 совместимость). На ARM единственный вариант — OScam, который компилируется нативно под ARM, или эмуляция через qemu-user-static, но это экзотика с плохой производительностью.
Какой порт по умолчанию использует CCcam сервер?
TCP 12000 — для клиентских подключений. Порт 16001 — веб-интерфейс. Порт 16000 — telnet-консоль. Все три настраиваются в CCcam.cfg через директивы SERVER LISTEN PORT, WEBINFO PORT и TELNETINFO PORT. Если 12000 занят другим процессом (например, OScam на той же машине), меняйте на любой свободный и обновляйте C-line у всех клиентов.
Можно ли запустить CCcam сервер без физической карты?
Сам CCcam не эмулирует CAS — ему нужен источник control words. Есть два варианта: OScam с патчем oscam-emu, подключённый как NewCamd-reader (N-line в CCcam.cfg), или upstream C-line с другого сервера. Без любого из этих источников CCcam запустится, будет принимать подключения, но ни одного DCW не выдаст — клиенты подключатся, но каналы не откроются.
Что означают цифры в F-line вида F: user pass 1 0 0?
Три числа после пароля: uphops, reshare, emm. Uphops=1 — клиент видит карты до 1-го хопа включительно (ваша локальная карта). Uphops=2 — видит и карты вашего upstream. Reshare=0 — клиент не может пересылать ваши shares другим серверам. Emm=0 — EMM-пакеты от клиента игнорируются. Фигурные скобки в конце фильтруют CAID:PROVID:SID — { 0:0:1 } означает доступ ко всем картам.
Почему клиент подключается, но каналы не открываются?
Чаще всего проблема в hop-логике: клиенту в F-line разрешён uphops=1, но нужная карта находится на hop 2 (ваш upstream). Решение — поднять uphops до 2 для этого клиента. Другие причины: ECM-таймаут в ресивере слишком мал (ставьте 3000–5000 мс), CAID не совпадает с тем что есть на сервере (проверьте через telnet команду s), или ключи устарели если используется oscam-emu.
Как ограничить количество подключений с одного аккаунта?
Две директивы: ALLOW MULTIPLE CONNECTIONS PER USER: no запрещает несколько одновременных сессий с одними credentials. MAX CONNECTIONS PER LINE: 1 дополнительно ограничивает на уровне конкретной F-line. Вместе они гарантируют что один аккаунт = один ресивер. Без этого один пользователь может раздать C-line друзьям и нагрузить ваш сервер.
Чем CCcam отличается от OScam как сервер?
CCcam — закрытый бинарник, конфигурация через F/C/N-lines, проще для начала. Но разработка заморожена с 2014, нет поддержки новых CAS, бинарник только для x86. OScam — open-source, поддерживает CAMD35, NewCamd, GBox, работает на ARM, активно обновляется сообществом, лучше интегрируется с oscam-emu. Для нового сервера в 2026 OScam предпочтительнее — он живёт и развивается, в отличие от CCcam.
Какое нормальное ECM-время на CCcam сервере?
Для локального reader-а (hop 0): 150–300 мс. Для hop 1 через хороший upstream: 300–500 мс. ECM-время >800 мс — смотрите пинг до клиента и загрузку CPU. Если время скачет от 200 до 1500 мс — скорее всего перегружен upstream, а не ваш сервер. При ECM >1500 мс ресивер начнёт показывать "card not found" и артефакты на видео — для зрителя это выглядит как зависание на 1–2 секунды каждые несколько минут.
Практические советы для стабильного просмотра
Даже самая стабильная линия 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 или внешние мониторы.