Card Server: настройка CCcam/OScam с нуля (2026)
Card server — это не просто «сервер для карточки». Это сетевой сервис, который принимает зашифрованные ECM-запросы от клиентов, обращается к физической смарт-карте через CAS-ридер и возвращает Control Word обратно по TCP. Если вы разбираетесь с DVB-S2 ресивером и enigma2, но никогда не поднимали шаринг-сервер самостоятельно — эта статья закрывает пробел.
Здесь нет маркетинга и выдуманной статистики. Только конфиги, команды и реальные решения для реальных проблем.
Что такое card server и как он работает
Определение и роль в архитектуре cardsharing
Card server — серверное ПО на Linux-машине, которое выступает посредником между физической смарт-картой и удалёнными клиентами. Клиент не знает, где физически находится карта. Он просто отправляет ECM-запрос по TCP и получает обратно Control Word.
В классической схеме один физический card server может обслуживать десятки клиентов одновременно — при условии, что скорость карты позволяет. Это и есть суть шаринга: одна карта, много клиентов.
Поток данных: ресивер → ECM → card server → CW
Схема выглядит так:
Клиент (oscam-client / enigma2)
↓ ECM-запрос по TCP/12000
Card server (OScam / CCcam)
↓ передаёт ECM на PC/SC ридер
Смарт-карта
↓ возвращает Control Word
Card server → CW обратно клиенту
↓
Клиент расшифровывает поток
ECM-запрос отправляется каждый раз, когда на канале меняется ключ. Для большинства платных пакетов это происходит примерно раз в 10 секунд. Если ответ не пришёл вовремя — экран замерзает.
Отличие card server от обычного STB с картой
Обычный ресивер расшифровывает поток для одного телевизора и не умеет отвечать на сетевые запросы. Card server — это именно сервис: он слушает порт, принимает соединения, разруливает очередь ECM-запросов и выдаёт ответы. Весь этот процесс прозрачен для клиента.
Ещё одно отличие — возможность подключить несколько ридеров с разными картами и автоматически маршрутизировать запросы по CAID. OScam это умеет из коробки.
Протоколы обмена: CCcam, newcamd, CS378x, MGCamd
CCcam — проприетарный протокол, до сих пор широко используется для связи между нодами. Порт по умолчанию TCP 12000 или 16000.
newcamd — более старый, но надёжный протокол. Порт 15000. Используется для reader-to-reader соединений и совместим с большим количеством клиентского ПО.
CS378x (он же camd35) — протокол OScam, порт 12000. Эффективный и хорошо работает в современных конфигурациях.
MGCamd — клиентский протокол для enigma2. Взаимодействует с OScam через newcamd или camd35 listener.
Требования к железу и софту для card server
Минимальные характеристики VPS или железного сервера
Для 30–50 активных клиентов достаточно: 1 vCPU, 512 MB RAM, 10 GB диска. OScam — не ресурсоёмкое приложение. Процессор почти не нагружается. Главное ограничение — скорость физической карты, которая обрабатывает 4–8 ECM в секунду.
Если хочешь больше клиентов — нужен пул карт, а не более мощный сервер.
Поддерживаемые card reader: Phoenix, Smargo, Omnikey
Phoenix — классический USB-ридер, дешёвый и надёжный. Определяется как /dev/ttyUSB0. Требует драйвер pcsc-lite и libccid.
Smargo — поддерживает скорости 0 и 6 МГц, хорошо работает с картами, которые Phoenix иногда не может прочитать.
Omnikey 3121 — USB CCID-ридер, pcsc-совместимый, определяется через pcscd. Более универсальный вариант для современных карт.
Для установки зависимостей на Debian/Ubuntu:
apt install pcscd libpcsclite1 libccid pcsc-tools
Выбор ОС: Debian 12, Ubuntu 22.04 LTS
Debian 12 (Bookworm) — предпочтительный выбор. Стабильное ядро, долгосрочная поддержка, нет лишнего в базовой установке. Ubuntu 22.04 LTS тоже работает без проблем.
CentOS/RHEL-производные можно использовать, но пакеты для сборки OScam там придётся добывать вручную. Время не стоит того.
CCcam vs OScam: что выбрать в 2026
OScam — однозначный выбор. Активно поддерживается, поддерживает все современные CAS, имеет продвинутый WebIF, гибкую настройку EMM-фильтрации и детальное логирование. Ветки OScam-emu и OScam от Streamboard — стабильные и регулярно обновляются.
CCcam — legacy. Разработка фактически остановлена, поддержки новых CAS нет. Единственная причина его использовать в 2026 — если клиентское ПО поддерживает только CCcam-протокол. В таком случае можно поднять OScam с [cccam] listener и обслуживать эти клиенты через него.
Установка и базовая конфигурация OScam
Сборка OScam из исходников через simplebuild
apt install git build-essential libssl-dev libpcsclite-dev
git clone https://github.com/oscam-emu/oscam-emu.git /opt/oscam
cd /opt/oscam
./simplebuild.sh
После сборки бинарник появится в /opt/oscam/Distribution/. Копируем его:
cp /opt/oscam/Distribution/oscam-emu* /usr/local/bin/oscam
chmod +x /usr/local/bin/oscam
mkdir -p /usr/local/etc/oscam /var/log/oscam
Структура конфигов: /usr/local/etc/oscam/
OScam читает конфиги из одной директории. Основные файлы:
oscam.conf— глобальные параметры, WebIF, протоколыoscam.server— описание ридеров и подключений к картамoscam.user— аккаунты клиентовoscam.services— опционально, фильтрация по CAID/SID
Файл oscam.conf — глобальные параметры
[global]
logfile = /var/log/oscam/oscam.log
maxlogsize = 10240
nice = -1
WaitForCards = 1
preferlocalcards = 1
clienttimeout = 5000
fallbacktimeout = 2500
cachedelay = 0
serialreadertimeout = 1500
[webif]
httpport = 8888
httpuser = admin
httppwd = changeme_strong_password
httpallowed = 127.0.0.1
httpsaverestore = 1
httprefresh = 10
[cs378x]
port = 12000
[newcamd]
port = 15000@CAID:IDENT
[cccam]
port = 16000
reshare = 0
version = 2.3.2
Параметр httpallowed = 127.0.0.1 — это не опция, это обязательное правило. WebIF открытый наружу без аутентификации — приглашение к проблемам.
Файл oscam.server — описание ридера и карты
[reader]
label = mycard_reader
protocol = internal
device = /dev/ttyUSB0
group = 1
caid = 0500
boxkey = 00000000000000000000000000000000
rsakey = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
detect = cd
mhz = 357
cardmhz = 357
auprovid = 000000
ident = 0500:000000
services = myservices
Поля boxkey и rsakey заполняются реальными значениями для конкретного CAS. Если карта читается (ATR корректный), но ECM возвращает 0x00 — почти наверняка проблема именно здесь: неправильный boxkey или rsakey.
Для pcsc-ридеров (Omnikey) протокол меняется на protocol = pcsc, device указывается как /dev/null — pcscd сам найдёт карту.
Файл oscam.user — создание клиентских аккаунтов
[account]
user = client1
pwd = secure_password_here
group = 1
caid = 0500
au = 1
uniq = 0
monlevel = 0
expdate =
Параметр au = 1 включает автоматическое обновление карты (EMM) для этого пользователя. uniq = 0 — разрешить несколько одновременных подключений с одного аккаунта. Если хочите ограничить — ставьте uniq = 1.
Запуск как systemd service
# /etc/systemd/system/oscam.service
[Unit]
Description=OScam Card Server
After=network.target pcscd.service
[Service]
Type=forking
ExecStart=/usr/local/bin/oscam -B /var/run/oscam.pid -c /usr/local/etc/oscam -t /tmp/oscam
PIDFile=/var/run/oscam.pid
Restart=on-failure
RestartSec=10
User=root
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable oscam
systemctl start oscam
systemctl status oscam
Параметр Restart=on-failure — OScam автоматически перезапустится при аварийном завершении. Это важно для бесперебойной работы.
Сетевая настройка и безопасность card server
Открытие портов: TCP 12000 (cs378x), 16000 (cccam), 8888 (webif)
Стандартное распределение портов для OScam:
| Протокол | Порт | Назначение |
|---|---|---|
| CS378x (camd35) | TCP 12000 | Основные клиенты |
| CCcam | TCP 16000 | CCcam-совместимые клиенты |
| newcamd | TCP 15000 | MGCamd, старые клиенты |
| WebIF | TCP 8888 | Только localhost |
iptables / nftables правила для ограничения доступа
# Разрешить конкретному клиенту по IP
iptables -A INPUT -p tcp --dport 12000 -s CLIENT_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 12000 -j DROP
# WebIF — только localhost
iptables -A INPUT -p tcp --dport 8888 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 8888 -j DROP
Если клиентов несколько — добавляйте правило для каждого IP. Открывать порт на 0.0.0.0 без whitelist — плохая идея. Сканеры найдут его за несколько часов.
Защита WebIF: httpallowed, httpuser, httppwd
В oscam.conf секция [webif] должна всегда содержать:
httpallowed = 127.0.0.1
httpuser = admin
httppwd = реально_сложный_пароль
Распространённая ошибка: параметр httpallowed указан, но не в секции [webif], а в глобальной. OScam его игнорирует — WebIF всё равно доступен снаружи. Проверьте расположение директивы.
Fail2ban для блокировки брутфорса
# /etc/fail2ban/jail.local
[oscam-webif]
enabled = true
port = 8888
filter = oscam-webif
logpath = /var/log/oscam/oscam.log
maxretry = 5
bantime = 3600
Фильтр для /etc/fail2ban/filter.d/oscam-webif.conf:
[Definition]
failregex = .* \[WEBIF\] .* from .*auth failed
VPN-туннель WireGuard между сервером и клиентами
CCcam и CS378x не шифруют трафик. ECM-запросы и CW идут в открытом виде — провайдер видит всё. WireGuard решает это элегантно: клиент подключается к серверу через зашифрованный UDP-туннель, а шаринг-трафик внутри него выглядит как обычный зашифрованный поток.
# Установка WireGuard на сервере
apt install wireguard
# Генерация ключей
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
После настройки WireGuard меняете IP в oscam.user и iptables на адреса из VPN-подсети (например, 10.0.0.0/24). Порты на публичном интерфейсе можно закрыть полностью — трафик идёт только через туннель.
Отдельный плюс: если у клиента прыгает ECM time с 150ms до 2000ms — проверьте MTU в туннеле. Стандартный MTU 1500 вызывает фрагментацию. Для WireGuard правильный MTU: 1420.
Диагностика и типичные проблемы
Reader инициализируется но карта не читается (ATR fail)
ATR (Answer To Reset) — первый ответ карты при инициализации. Если его нет — проблема либо в физическом контакте, либо в напряжении.
Сначала проверьте права доступа:
ls -la /dev/ttyUSB0
# crw-rw---- 1 root dialout 188, 0 ...
usermod -aG dialout oscam_user
Потом попробуйте другой mhz в oscam.server. Некоторые карты требуют 368 или 600 вместо стандартного 357. Если ридер — Phoenix и карта не читается, попробуйте Smargo с mhz = 0.
Клиент подключается, но freezing/black screen
Клиент подключился, но нет расшифровки — это не проблема подключения. Это проблема ECM-маршрутизации. Проверьте в WebIF: вкладка Users → найдите клиента → смотрите last channel и ecmok/ecmnok.
Если ecmnok высокий — CAID клиента не совпадает с тем, что отдаёт ридер. Проверьте caid в oscam.server и oscam.user.
Высокий ECM time (>500ms) и причины
| ECM time | Оценка | Вероятная причина |
|---|---|---|
| <200ms | Норма | Всё хорошо |
| 200–500ms | Приемлемо | Сетевая задержка, нормально для VPN |
| 500–1000ms | Проблема | Перегрузка карты, медленный ридер, сеть |
| >1000ms | Критично | Фризы гарантированы, нужна диагностика |
| Прыжки 150→2000ms | MTU | Фрагментация в VPN-туннеле (проверить MTU) |
Ошибка card init: no answer from card
Если ATR правильный, но OScam пишет "no answer from card" — карта физически читается, но не отвечает на CAS-запросы. Сначала проверьте boxkey и rsakey в oscam.server. Если значения неверные — карта молча возвращает 0x00.
Второй вариант: карта требует EMM-обновления. Посмотрите в WebIF → Readers → ваш ридер → статус EMM. Если EMM disabled — включите au = 1 для клиентского аккаунта.
Логи: /var/log/oscam/oscam.log и уровни debug
Уровни отладки в oscam.conf задаются через debug:
0— только критические ошибки64— reader events (инициализация, ATR, ECM ответы)128— клиентские соединения255— всё (очень многословно, для кратковременной диагностики)
Для диагностики ATR и card init: debug = 64. Для диагностики клиентских подключений: debug = 128. Оба: debug = 192.
tail -f /var/log/oscam/oscam.log | grep -E "(ATR|ECM|ERROR|WARN)"
Критерии выбора готового card server
На что обращать внимание: uptime, ECM time, локация
Минимальный uptime для нормальной работы — 99%. Это не больше 7 часов даунтайма в месяц. Если провайдер не публикует статистику uptime — это красный флаг.
ECM time ниже 300ms — рабочий порог. Географическая близость к локации спутника имеет значение: card server в той же стране, где принимается сигнал, будет давать меньшую задержку, чем сервер через океан.
Поддерживаемые CAS-системы и пакеты
Уточните, какой именно CAID поддерживается. Поддержка "MPEG2 DVB" — не ответ. Нужны конкретные CAID (Viaccess, Irdeto, Nagravision, Conax, Cryptoworks) и информация о том, что физические карты реально стоят на сервере, а не эмулятор с устаревшими ключами.
Anti-freeze механизмы и резервирование карт
Надёжный провайдер держит минимум две физические карты для каждого CAID в пуле — если одна даёт сбой, OScam автоматически переключается на вторую. Клиент не замечает ничего.
Спросите об этом прямо. Ответ "у нас 100% аптайм" без объяснения механизма — не ответ.
Признаки ненадёжного провайдера
- Нет тестового периода или тест — 1 час без нормальной нагрузки
- Нет логов ECM time в личном кабинете
- Единственная нода без резерва
- Поддержка только через форум или Telegram без SLA
- Цена ниже рыночной в 2–3 раза — обычно означает эмулятор или перепродажу без контроля качества
Мониторинг и поддержка работоспособности
WebIF — реальное состояние подключений и ECM
WebIF OScam на порту 8888 — главный инструмент мониторинга. Что смотреть:
- Status → общая нагрузка, uptime, количество активных клиентов
- Readers → статус карты, ECM time, ecmok/ecmnok за последние N запросов
- Users → каждый клиент: last channel, idle time, байты отправлено/получено
Соотношение ecmok/ecmnok для ридера должно быть близко к 100% ok. Если ecmnok растёт — карта начинает проблемить или CAID не совпадает.
Скрипт автоматического перезапуска при заморозке
#!/bin/bash
# /usr/local/bin/oscam_watchdog.sh
OSCAM_PID=$(pgrep -x oscam)
LOG="/var/log/oscam/watchdog.log"
if [ -z "$OSCAM_PID" ]; then
echo "$(date): OScam not running, restarting..." >> $LOG
systemctl start oscam
else
# Проверка через WebIF что oscam реально отвечает
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
--user admin:changeme_strong_password \
http://127.0.0.1:8888/status.html)
if [ "$HTTP_STATUS" != "200" ]; then
echo "$(date): OScam WebIF не отвечает ($HTTP_STATUS), перезапуск..." >> $LOG
systemctl restart oscam
fi
fi
chmod +x /usr/local/bin/oscam_watchdog.sh
crontab -e
# Добавить:
* * * * * /usr/local/bin/oscam_watchdog.sh
Скрипт проверяет не только процесс, но и WebIF. OScam бывает "жив" в ps, но не отвечает на запросы — процесс завис. Эта проверка ловит и такой случай.
Если OScam падает раз в сутки без записи в лог — проверьте OOM killer:
dmesg | grep -i "oom\|killed process" | tail -20
На 512 MB VPS при высокой нагрузке OScam может убиваться ядром. Решение: увеличить RAM или добавить swap.
Резервное копирование конфигов и базы пользователей
# Инициализация git-репозитория для конфигов
cd /usr/local/etc/oscam
git init
git add oscam.conf oscam.server oscam.user oscam.services
git commit -m "initial config backup"
После каждого изменения конфигов — коммит. Так можно быстро откатиться, если что-то сломалось после редактирования. Файлы небольшие, история не займёт места.
Не забудьте добавить .gitignore с исключением oscam.log и временных файлов.
Обновление OScam: когда и как
Обновлять OScam нужно при двух условиях: вышло исправление критической уязвимости или добавлена поддержка нового CAS, который вам нужен. Обновлять "просто потому что вышло" — лишний риск.
Перед обновлением — сохраните конфиги и текущий бинарник:
cp /usr/local/bin/oscam /usr/local/bin/oscam.bak
cp -r /usr/local/etc/oscam /usr/local/etc/oscam.bak.$(date +%Y%m%d)
После обновления изредка меняется формат oscam.user — проверьте лог на ошибки парсинга. Если клиенты отвалились сразу после обновления — сначала смотрите именно туда.
Часто задаваемые вопросы
Чем card server отличается от обычного ресивера со смарт-картой?
Обычный ресивер расшифровывает поток для одного телевизора и не слушает сетевые подключения. Card server — это именно сетевой сервис: он принимает ECM-запросы от множества клиентов по TCP/IP и возвращает Control Word, используя одну физическую карту для всех одновременно. Разница — как между локальным принтером и сетевым принт-сервером.
Какой порт по умолчанию использует card server?
Зависит от протокола. CCcam — TCP 12000 или 16000. OScam CS378x — TCP 12000. newcamd — TCP 15000. WebIF OScam — TCP 8888. Все порты настраиваются в oscam.conf — значения по умолчанию можно менять без ограничений.
Можно ли запустить card server на VPS без физической карты?
Технически да — через OScam-emu с soft-CAM ключами или через подключение к удалённому ридеру по протоколу newcamd (reader-to-reader схема). Классическая производственная схема всё же предполагает физическую карту через USB-ридер на сервере. Эмуляция зависит от актуальности ключей и не даёт EMM-обновления карты.
Что такое ECM time и какое значение считается нормальным?
ECM time — время от отправки запроса дешифровки до получения Control Word. Норма — до 200ms. До 500ms приемлемо. Выше 500ms — начнутся заметные фризы при смене ключа каждые ~10 секунд. Прыжки от 150ms до 2000ms обычно указывают на MTU mismatch в VPN-туннеле, а не на проблему с картой.
OScam или CCcam — что выбрать в 2026?
OScam. Без вариантов. Активная разработка, поддержка всех современных CAS, продвинутый WebIF, EMM-фильтрация. CCcam больше не обновляется. Если клиентское ПО требует CCcam-протокол — поднимите OScam с [cccam] listener, он полностью совместим.
Как защитить card server от сканирования и DDoS?
Никогда не открывайте клиентские порты на 0.0.0.0 без whitelist. Используйте iptables с разрешением только конкретных IP клиентов. Лучший вариант — WireGuard-туннель: клиенты подключаются через VPN, публичные порты закрыты полностью. WebIF ограничьте localhost через httpallowed = 127.0.0.1. Fail2ban на порт 8888 для защиты от брутфорса паролей.
Сколько клиентов выдержит card server на слабом VPS?
На 1 vCPU / 512 MB RAM — реально 30–50 активных клиентов. CPU не является узким местом. Ограничение — скорость физической смарт-карты: большинство обрабатывают 4–8 ECM в секунду. Для 100+ клиентов нужен пул из нескольких карт, которые OScam использует параллельно через load balancing.
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.