Add an entry (RU + EN) explaining why a MAG/STB box gets its IP blocked after a factory reset / firmware change: the portal's MAGSCAN anti-clone check compares the posted serial against the stored mag_devices.sn (and device_id/device_id2/hw_version when lock_device is on) and bans the IP on mismatch (blocked_ips -> iptables). Documents the fix — reset the device's stored sn/device_id in the panel — and how to unblock: the web panel (Tools -> IP Management, /<admin-code>/ips), console.php tools flush, or manual iptables + flood-marker removal.
16 KiB
FAQ - Часто задаваемые вопросы
Здесь собраны ответы на наиболее частые вопросы и проблемы при работе с XC_VM.
Проблемы со стримами
❌ У меня не запускается стрим на MAIN или LB
Диагностика
Подключитесь к консоли сервера и выполните команду:
sudo -u xc_vm /home/xc_vm/console.php monitor 291
🧩 Где
291— это ID вашего стрима (замените на свой).
Что делает команда
Команда monitor попытается запустить стрим вручную и покажет ошибку, если не сможет.
Возможные причины
1️⃣ Отсутствуют системные библиотеки
Если вывод содержит ошибку вида:
error while loading shared libraries: libxyz.so.1: cannot open shared object file
Установите недостающую библиотеку командой:
sudo apt install <имя_библиотеки>
После установки повторите тест.
💬 Сообщите мне, если потребуется добавить библиотеку в установку.
2️⃣ Ошибка не связана с библиотеками
Если ошибка иного типа — также пришлите её вывод, чтобы я помог с диагностикой.
Резюме
- Выполните команду диагностики.
- Проверьте наличие ошибок.
- Установите недостающие библиотеки.
- Сообщите о любых других ошибках для анализа.
❌ Стриминг обрывается с ошибкой «IP_MISMATCH» или «TOKEN_EXPIRED»
Это функции безопасности, а не баги:
- TOKEN_EXPIRED — сессионный токен истёк. Пользователю нужно переподключиться.
- IP_MISMATCH — IP пользователя сменился во время стрима (часто расценивается как шаринг аккаунта).
Связанные настройки:
restrict_same_ip— строгость проверки IPdisallow_2nd_ip_con— блокировка одновременных подключений с разных IP
Если это создаёт проблемы для легитимных пользователей (например, мобильные сети часто меняют IP), скорректируйте уровень ограничений в настройках админ-панели.
Проблемы с входом и доступом
❌ IP заблокирован — не могу войти
Защита от brute-force блокирует IP после превышения лимита неудачных попыток входа. Управляется настройками:
bruteforce_mac_attempts— попыток по MAC за окноbruteforce_username_attempts— попыток по логину за окноflood_limit— общий лимит запросов за окно
Как разблокировать:
- Через админ-панель: Инструменты → Управление IP → удалить из списка блокировки.
- Через CLI:
sudo /home/xc_vm/console.php tools flush— сбрасывает все блокировки. - Если полностью заблокированы: Используйте
console.php tools rescueдля создания кода восстановления доступа (см. CLI-инструменты).
❌ Приставка блокируется после сброса/смены прошивки (изменился serial или device_id, а в панели прописан старый)
Приставка раньше работала, но после сброса к заводским, смены/обновления прошивки, замены железа (или переноса MAC на другой бокс) она начинает присылать другой серийный номер (sn) или device_id, чем записано в панели. При get_profile сервер блокирует её IP и портал отдаёт 404.
Это не баг, а анти-клон защита портала MAGSCAN: она требует серийный номер и сверяет присланный sn с сохранённым в mag_devices.sn. Логика:
- Нет серийного номера в запросе → бан (
[MS] No Serial Number). - Присланный
sn≠ сохранённому у устройства → бан ([MS] Invalid Serial Number).
В обоих случаях IP пишется в таблицу blocked_ips (и далее попадает в iptables), устройство получает 404. Если у устройства включён флаг lock_device, дополнительно сверяются device_id, device_id2, hw_version — при несовпадении устройство не проходит верификацию и показывает «your device is not active» (уже без бана IP).
Как исправить (для легитимной приставки, у которой реально сменились данные):
- Сбросить привязку в панели: в админке откройте это MAG-устройство и очистите сохранённый серийный номер /
device_id(или удалите и заведите устройство заново). После этого условие «snуже записан» перестаёт срабатывать, и при следующем подключении панель привяжет новые значения. - Разблокировать IP. Проще всего — через веб-панель: откройте страницу Инструменты → Управление IP (
/<код_админа>/ips), там виден список заблокированных IP — удалите нужный (или очистите весь список). CLI/ручные способы, если нет доступа к панели:- CLI (сбросить все блокировки):
sudo /home/xc_vm/console.php tools flush; - Вручную по одному IP:
sudo iptables -D INPUT -s <IP> -j DROP && sudo rm -f /home/xc_vm/tmp/flood/block_<IP>.
- CLI (сбросить все блокировки):
⚠️ Настройка
enable_debug_stalkerобходит проверкиlock_device/ образов, но НЕ обходит жёсткий бан MAGSCAN по серийному номеру (он срабатывает раньше) — сохранённыйsnвсё равно нужно сбросить в панели.
❌ Забыл пароль админа / не могу войти вообще
Создайте нового пользователя-администратора через CLI:
sudo /home/xc_vm/console.php tools user
Команда выведет случайный логин и пароль с полными правами. Войдите, смените пароль и удалите rescue-пользователя.
Если не знаете URL админ-панели — создайте код восстановления:
sudo /home/xc_vm/console.php tools rescue
База данных и конфигурация
❌ «Couldn't connect to database» при запуске
Самая частая проблема. Причины:
- Неверные данные в
config.ini— проверьтеhost,port,db_user,db_pass,db_name - MySQL/MariaDB не запущен —
sudo systemctl status mariadb - Сеть недоступна — сервер БД на другом хосте, порт заблокирован файрволом
- Нет прав у пользователя — перевыдайте через
console.php tools mysql
Исправление: Отредактируйте /home/xc_vm/config/config.ini, затем выполните:
sudo /home/xc_vm/console.php status
❌ Миграция базы данных падает при обновлении
SQL-файлы миграций из migrations/ выполняются автоматически при обновлении. Если одна из них падает:
- Миграция записывается со статусом
[WARN]— автоматически не повторяется. - Частые причины: синтаксическая ошибка, таблица уже существует, конфликт внешних ключей, недостаточно привилегий для ALTER.
Отладка:
- Проверьте в консольном выводе, какая миграция упала.
- Откройте файл в
migrations/и изучите SQL. - Исправьте проблему вручную в MySQL — следующее обновление продолжит с места остановки.
Подробности: Миграции БД.
SSL и Nginx
❌ Генерация SSL-сертификата падает
console.php certbot может завершиться с разными кодами ошибки:
| Ошибка | Причина | Решение |
|---|---|---|
| Error 3 | Домен — голый IP-адрес | Certbot требует доменное имя, а не IP |
| Error 4 | Dry run упал — порт 80/443 занят | Остановите конфликтующий сервис: sudo lsof -i :80 |
| Error 0 | Файлы не найдены после генерации | Проверьте /home/xc_vm/bin/certbot/logs/xc_vm.log |
| Error 2 | Неожиданная ошибка certbot | Проверьте логи, убедитесь что DNS ведёт на ваш сервер |
Также: Удалите устаревшие lock-файлы, если certbot был прерван:
sudo rm -f /home/xc_vm/bin/certbot/*/.certbot.lock
❌ Nginx не перезапускается — конфликт портов
XC_VM запускает два инстанса nginx:
- nginx (
bin/nginx/) — HTTP(S)-трафик - nginx_rtmp (
bin/nginx_rtmp/) — RTMP-стриминг
Каждый может упасть, если его порт уже занят.
Диагностика:
sudo netstat -tlnp | grep -E ':80|:443|:1935'
Решение: Измените порт вещания в настройках админ-панели, затем перегенерируйте конфиги:
sudo /home/xc_vm/console.php tools ports
Обновления и сервис
❌ Обновление не скачивается / несовпадение контрольной суммы
Система обновлений скачивает файлы с GitHub Releases. Если не работает:
- Сеть/файрвол блокирует доступ к GitHub
- Частичная загрузка — соединение оборвалось на полпути
- Несовпадение MD5 — файл повреждён (обновление безопасно отменяется)
Обновление никогда не применяется, если контрольная сумма не совпадает. Перезапустите после устранения сетевых проблем:
sudo -u xc_vm /home/xc_vm/console.php update update
❌ Сервис неожиданно останавливается / не завершается чисто
Команда service использует эскалацию сигналов завершения. Если процессы зависли:
# Проверить зависшие процессы
ps -u xc_vm
# Принудительное завершение при необходимости
sudo killall -9 -u xc_vm
# Чистый перезапуск
sudo /home/xc_vm/console.php service start
Частые причины: deadlock в PHP-транзакции, бесконечный цикл в обработке стрима, или сетевой сокет ожидает ответ.
Права и система
❌ Ошибки «Permission denied» возвращаются снова и снова
Запустите команду status — она автоматически исправляет все известные проблемы с правами:
sudo /home/xc_vm/console.php status
Что исправляет:
- Права на сокеты PHP-FPM (
bin/php/sockets/*) - Владельца директорий контента (
content/streams/) - Владельца конфигов (
config/) - Бит исполнения
daemons.sh - Права на сетевые интерфейсы (
/sys/class/net)
Если права ломаются после каждого перезапуска, проверьте что системный пользователь xc_vm существует и является владельцем /home/xc_vm.
❌ Load Balancer показан как offline / не синхронизируется с MAIN
LB-серверы опрашивают MAIN по HTTP и обрабатывают сигналы. Когда синхронизация ломается:
- Сеть: LB не может достучаться до HTTP-порта MAIN — проверьте правила файрвола
- База данных: LB не может подключиться к MySQL на MAIN — перевыдайте привилегии:
sudo /home/xc_vm/console.php tools mysql - Таймаут: Если
last_check_agoпревышает 180 секунд, сервер помечается как offline
Отладка: Запустите на MAIN для проверки связи:
sudo -u xc_vm /home/xc_vm/console.php watchdog
📘 Эта страница обновляется со временем. Если вы нашли новую типовую проблему — предложите её в Issues.