Full bilingual documentation for XC_VM has been added with Docsify SPA and the outdated database migration has been replaced. ## Docsify - docs/index.html — SPA entry point: en-us/ru-ru routing, search, syntax highlighting (bash, PHP, SQL, nginx, JSON) ## EN Documentation - docs/en/info/faq.md — FAQ (12 questions: streams, access, database, SSL, updates, permissions) - docs/en/info/migration_guide.md — migration guide from other systems - docs/en/info/update.md — step-by-step update via the web panel - docs/en/info/watch_folder.md — Watch Folder: workflow, PTN/guessit parsers, configuration - docs/en/updates_checklist.md — release preparation checklist ## RU Documentation (fully localized) - docs/ru/README.md — Main Page - docs/ru/_sidebar.md — Sidebar Navigation - docs/ru/administration/ssl-generation.md — Self-Signed SSL Generation - docs/ru/administration/update-system.md — Update Mechanism (PHP → Python → Post-Update) - docs/ru/api/playlist.md — Playlist API with Error Codes - docs/ru/api/system_api.md — System API (13 endpoints) - docs/ru/api/xtreamcodes_api.md — XtreamCodes API (Authorization, Live, VOD, TV Series, EPG) - docs/ru/builds/build_binaries.md — nginx build, nginx_rtmp, PHP-FPM, network - docs/ru/builds/build_ffmpeg.md — Building FFmpeg 8.0 with NVENC/CUDA - docs/ru/builds/build_system.md — MAIN vs. LB build system - docs/ru/development/cli-tools.md — CLI: 26 commands, 25 crons, 8 daemons, database migrations - docs/ru/info/faq.md — FAQ (12 questions) - docs/ru/info/migration_guide.md — Migration guide - docs/ru/info/update.md — Updating via the control panel - docs/ru/info/watch_folder.md — Watch Folder - docs/ru/updates_checklist.md — Release checklist ## Migrations - Removed: 001_drop_watch_folders_plex_token.sql (Deprecated) - Added: 001_update_crontab_filenames.sql — removes the .php suffix from filenames in the crontab table (switches to console.php commands)
6.1 KiB
⚙️ Механизм обновлений в XC_VM
Система обновлений XC_VM реализована как многоуровневый процесс — от веб-интерфейса до системных скриптов. Такой подход обеспечивает надёжность, автоматизацию и целостность данных при обновлении панели.
📚 Навигация
- 🔁 1. Инициация обновления
- 🕒 2. Запуск через CRON
- 🧠 3. Управление обновлением (PHP-уровень)
- 🐍 4. Системное обновление (Python-уровень)
- 🔄 5. Завершение обновления
- ✅ 6. Итоговая схема работы
- 🧩 Ключевые особенности
🔁 1. Инициация обновления
Процесс начинается с нажатия кнопки "Обновить" в веб-интерфейсе панели.
- Создаётся сигнал
update, который записывается в таблицуsignalsбазы данных. - Этот сигнал выступает триггером, запускающим дальнейший процесс обновления.
🕒 2. Запуск через CRON
Каждую минуту выполняется системное задание CRON:
/home/xc_vm/bin/php/bin/php /home/xc_vm/console.php cron:root_signals
Крон-задача root_signals проверяет наличие новых сигналов и при обнаружении update запускает:
/home/xc_vm/bin/php/bin/php /home/xc_vm/console.php update update
⚙️ Этот механизм позволяет выполнять обновления автоматически, без ручного вмешательства администратора.
🧠 3. Управление обновлением (PHP-уровень)
Основная логика находится в классе UpdateCommand:
src/cli/Commands/UpdateCommand.php
На этом этапе выполняются следующие действия:
-
Определение текущей версии панели (
MAINилиLB). -
Получение данных о новой версии с GitHub:
- Ссылка на архив обновления.
- Контрольная сумма (хеш) для проверки целостности.
-
Скачивание архива во временную директорию.
-
Проверка соответствия хеш-суммы.
-
Запуск системного обновления с помощью Python:
sudo /usr/bin/python3 /home/xc_vm/update "/home/xc_vm/tmp/.update.tar.gz" "HASH" > /dev/null 2>&1 &
🐍 4. Системное обновление (Python-уровень)
После вызова передача управления переходит к скрипту:
/home/xc_vm/update
Он выполняет операции на уровне системы:
-
Повторная проверка контрольной суммы архива.
-
Остановка панели, чтобы избежать конфликтов при обновлении.
-
Распаковка обновления в каталог:
/home/xc_vm/ -
Настройка прав доступа:
chown -R xc_vm:xc_vm /home/xc_vm/ -
Запуск пост-обновления:
/home/xc_vm/bin/php/bin/php /home/xc_vm/console.php update post-update -
Перезапуск панели в рабочем режиме.
🔄 5. Завершение обновления
Финальные действия выполняются в фазе post-update команды UpdateCommand:
-
Проверка, включено ли автообновление LB:
- Если обновлялся
MAIN, создаются сигналы обновления для всех Load Balancer’ов.
- Если обновлялся
-
Обновление версии панели в базе данных.
-
Удаление устаревших файлов.
-
Повторное выравнивание прав:
chown -R xc_vm:xc_vm /home/xc_vm/ -
Перезагрузка системных демонов:
sudo systemctl daemon-reload -
Проверка статуса панели:
sudo /home/xc_vm/status -
Завершение процесса обновления.
✅ 6. Итоговая схема работы
[ Веб-интерфейс ]
│
▼
[ БД: сигнал update ]
│
▼
[ CRON → console.php cron:root_signals ]
│
▼
[ update.php (PHP) ]
│
▼
[ update (Python) ]
│
▼
[ post-update → update.php ]
│
▼
[ Завершение, рестарт демонов, обновление версии ]
🧩 Ключевые особенности
- 🔒 Двойная проверка целостности (на уровне PHP и Python).
- 🧠 Автоматическое распространение обновлений между MAIN и LB.
- 🧹 Очистка устаревших файлов и выравнивание прав доступа.
- 🔄 Безопасный перезапуск панели после установки.
- ⚙️ Гибкость и автономность за счёт CRON и сигналов.