Перейти к содержанию

FAQ - Часто задаваемые вопросы

Здесь вы найдете ответы на наиболее распространенные вопросы и проблемы при работе с XC_VM.


Проблемы с потоками

❌ Мой стрим не запускается на MAIN или LB --- ### Диагностика Подключитесь к консоли вашего сервера и выполните следующую команду:
sudo -u xc_vm /home/xc_vm/console.php monitor 291
````

> 🧩 Где `291` - это ваш **идентификатор потока** (замените его на свой собственный).

---

### Что делает команда

Команда **монитор** пытается запустить поток вручную и в случае сбоя выдает сообщение об ошибке.

---

### Возможные причины

#### 1️⃣ Отсутствующие системные библиотеки

Если выходные данные содержат ошибку типа:
error while loading shared libraries: libxyz.so.1: cannot open shared object file
Установите отсутствующую библиотеку с помощью:

```bash
sudo apt install <library_name>
После установки запустите тест повторно. > 💬 Дайте мне знать, нужно ли добавить библиотеку в сценарий установки. --- #### 2️⃣ Ошибка, не связанная с библиотеками Если ошибка другого типа — пришлите ее вывод, чтобы я мог помочь ее диагностировать. --- ### Резюме 1. Запустите диагностическую команду. 2. Проверьте, нет ли каких-либо ошибок. 3. При необходимости установите отсутствующие библиотеки. 4. Сообщайте о любых других ошибках для дальнейшего анализа. ---
❌ Streaming fails with "IP_MISMATCH" or "TOKEN_EXPIRED" --- Это функции безопасности, а не баги: - **ТОКЕН_ИСПОЛЬЗОВАН** — токен сеанса имеет ограничение по времени. Пользователю необходимо повторно пройти аутентификацию. - **IP_MISMATCH СОВПАДЕНИЕ IP_MISMATCH** — IP-адрес пользователя изменился в середине потока (часто определяется как общий доступ к учетным данным). **Relevant settings:** - `restrict_same_ip` — насколько строго соблюдается соответствие IP-адресов - `disallow_2nd_ip_con` — блокирует одновременные подключения с разных IP-адресов. Если это вызывает проблемы у законных пользователей (например, мобильные сети часто меняют IP-адреса), измените уровень ограничений в настройках панели администратора. ---

Проблемы с логином и доступом

❌ Я заблокирован — IP продолжает блокироваться --- XC_VM защита методом перебора блокирует IP-адреса после слишком большого числа неудачных попыток входа в систему. Это контролируется: - `bruteforce_mac_attempts` — количество попыток для каждого MAC за определенный промежуток времени - `bruteforce_username_attempts` — количество попыток для каждого имени пользователя за определенный промежуток времени - `flood_limit` — общее количество запросов в окне **To unblock yourself:** 1. **Из панели администратора:** Инструменты → Управление IP-адресами → удалить из списка заблокированных. 2. **Из CLI:** `sudo /home/xc_vm/console.php tools flush` — удаляет все заблокированные IP-адреса. 3. **Если полностью заблокирован:** Используйте `console.php tools rescue` для создания аварийного кода доступа (см. [CLI Tools](../guides/cli-tools.md)). ---
❌ Set-top box gets blocked after a reset/firmware change (its serial or device_id changed, but the panel has the old one) --- Окно, которое раньше работало, начинает получать значение **Заблокированный IP-адрес** после **сброс настроек, изменение/обновление встроенного ПО, замена оборудования** (или при перемещении MAC в другое поле): теперь оно сообщает значение **другой серийный номер (`sn`) или `device_id`**, отличное от того, которое сохранила панель. На `get_profile` сервер блокирует IP, и портал возвращает 404. Это **это не ошибка** — защита портала от клонирования, **MAGSCAN**. Для этого требуется ввести серийный номер и сравнить опубликованные `sn` данные с сохраненными `mag_devices.sn`: - **Нет серийного номера** в запросе → запретить (`[MS] No Serial Number`). - **Опубликовано `sn` ≠ сохранено на устройстве `sn`** → запретить (`[MS] Invalid Serial Number`). В обоих случаях IP-адрес записывается в таблицу `blocked_ips` (а оттуда в таблицу iptables), и устройство получает код 404. Если на устройстве установлен флаг **`lock_device`**, то `device_id`, `device_id2` и `hw_version` также проверяются — несоответствие не подтверждается, и устройство показывает, что "ваше устройство неактивно" (без запрета IP-адреса). **How to fix (for a legitimate box whose data genuinely changed):** 1. **Сбросьте привязку на панели:** откройте это устройство MAG в admin и **очистите сохраненный серийный номер / `device_id`** (или удалите и повторно добавьте устройство). После этого условие "серийный номер уже записан" больше не срабатывает, и при следующем подключении будут привязаны новые значения. 2. **Разблокируйте IP-адрес.** Самый простой способ — **через веб-панель**: откройте **Инструменты → Управление интеллектуальной собственностью** (`//ips`), в котором перечислены заблокированные IP—адреса - удалите тот, который вам нужен (или очистите весь список). CLI / ручные настройки, если вы не можете добраться до панели: - CLI (clear all blocks): `sudo /home/xc_vm/console.php tools flush`; - Вручную, для каждого IP: `sudo iptables -D INPUT -s -j DROP && sudo rm -f /home/xc_vm/tmp/flood/block_`. > ⚠️ Настройка `enable_debug_stalker` обходит проверку `lock_device` / изображений, но **НЕ** - последовательный жесткий запрет MAGSCAN (который выполняется ранее) — вам все равно придется очистить сохраненные `sn` в панели. ---
❌ Забыли пароль администратора / вообще не можете войти в систему --- Создайте нового пользователя rescue admin с помощью CLI:
sudo /home/xc_vm/console.php tools user
В результате будут введены случайные имя пользователя и пароль с полными правами администратора. Войдите в систему, измените пароль и по завершении удалите пользователя rescue. Если сам URL-адрес панели администратора неизвестен, создайте аварийный код доступа:
sudo /home/xc_vm/console.php tools rescue
---

База данных и конфигурация

❌ "Не удалось подключиться к базе данных" при запуске --- Самая распространенная проблема. Причины: 1. **Неверные учетные данные в `config.ini`** — проверить `host`, `port`, `db_user`, `db_pass`, `db_name` 2. **MySQL/MariaDB не запущен** — `sudo systemctl status mariadb` 3. **Сеть недоступна** — Сервер базы данных на другом хосте и порту защищен брандмауэром 4. **Пользователю не хватает привилегий** — повторное предоставление с помощью `console.php tools mysql` **Чинить:** Отредактируйте `/home/xc_vm/config/config.ini`, затем запустите:
sudo /home/xc_vm/console.php status
---
❌ Во время обновления произошел сбой переноса базы данных --- Перенос `.sql` файлов из `migrations/` выполняется автоматически во время обновления. В случае сбоя одного из них: - Перенос зарегистрирован со статусом `[WARN]` — он не будет повторен автоматически. - Распространенные причины: синтаксическая ошибка, таблица уже существует, конфликт внешних ключей, отсутствует привилегия ALTER. **Debug:** 1. Проверьте, какая миграция завершилась неудачно, в выходных данных консоли. 2. Откройте файл в `migrations/` и проверьте SQL-код. 3. Устраните проблему вручную в MySQL, после чего следующее обновление продолжится с того места, где оно было остановлено. Дополнительные сведения см. в разделе [Миграция базы данных](../guides/database-migrations.md). ---

SSL и Nginx

❌ Сбой генерации SSL-сертификата --- `console.php certbot` может произойти сбой с разными кодами ошибок: |Ошибка|Причина|Чинить| |---|---|---| |Ошибка 3|Домен - это простой IP-адрес|Для Certbot требуется доменное имя, а не IP-адрес| |Ошибка 4|Не удалось выполнить пробный запуск — используется порт 80/443| Stop conflicting service: `sudo lsof -i :80` | |Ошибка 0|Файлы, не найденные после генерации|Проверить `/home/xc_vm/bin/certbot/logs/xc_vm.log`| |Ошибка 2|Неожиданная ошибка certbot|Проверьте журналы, убедитесь, что DNS разрешает доступ к вашему серверу| **Также:** Удаление устаревших файлов блокировки, если certbot был прерван:
sudo rm -f /home/xc_vm/bin/certbot/*/.certbot.lock
---
❌ Nginx won't reload — port conflicts --- XC_VM запускает **два** nginx экземпляра: 1. **nginx** (`bin/nginx/`) — HTTP(ы) трафик 2. **nginx_rtmp** (`bin/nginx_rtmp/`) — RTMP потоковое вещание Каждый из них может выйти из строя, если его порт уже используется. **Diagnose:**
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
---
❌ Обслуживание неожиданно прекращается или не завершается полностью --- Сервисная команда использует нарастающие сигналы об остановке. Если процессы зависают:
# Check for stuck processes
ps -u xc_vm

# Force kill if necessary
sudo killall -9 -u xc_vm

# Restart cleanly
sudo /home/xc_vm/console.php service start
Common causes: PHP transaction deadlock, infinite loop in stream processing, or network socket timeout waiting for a response. ---

Разрешения и система

❌ Ошибки, связанные с отказом в разрешении, продолжают появляться --- Запустите команду 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`. ---
❌ Балансировщик нагрузки отображается как автономный / не удается синхронизировать с основным --- Серверы LB опрашивают MAIN по протоколу HTTP и обрабатывают сигналы. При сбое синхронизации: 1. **Сеть:** LB не может связаться с HTTP—портом MAIN - проверьте правила брандмауэра 2. **База данных:** LB не удается подключиться к MySQL — повторно предоставить привилегии MAIN:
sudo /home/xc_vm/console.php tools mysql
3. **Перерыв:** Если `last_check_ago` превышает 180 секунд, сервер помечается как отключенный **Отлаживать:** Запустите на главной, чтобы проверить подключение:
sudo -u xc_vm /home/xc_vm/console.php watchdog
---

📘 Эта страница обновляется с течением времени. Если вы обнаружите новую распространенную проблему, пожалуйста, сообщите об этом в разделе Проблемы.