Files
XC_VM/docs/ru/administration/update-system.md
T
Divarion-D 040143215a docs: Full Docsify documentation (EN + RU) and migration replacement
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)
2026-03-15 00:02:19 +03:00

6.1 KiB

⚙️ Механизм обновлений в XC_VM

Система обновлений XC_VM реализована как многоуровневый процесс — от веб-интерфейса до системных скриптов. Такой подход обеспечивает надёжность, автоматизацию и целостность данных при обновлении панели.


📚 Навигация


🔁 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

На этом этапе выполняются следующие действия:

  1. Определение текущей версии панели (MAIN или LB).

  2. Получение данных о новой версии с GitHub:

    • Ссылка на архив обновления.
    • Контрольная сумма (хеш) для проверки целостности.
  3. Скачивание архива во временную директорию.

  4. Проверка соответствия хеш-суммы.

  5. Запуск системного обновления с помощью 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

Он выполняет операции на уровне системы:

  1. Повторная проверка контрольной суммы архива.

  2. Остановка панели, чтобы избежать конфликтов при обновлении.

  3. Распаковка обновления в каталог:

    /home/xc_vm/
    
  4. Настройка прав доступа:

    chown -R xc_vm:xc_vm /home/xc_vm/
    
  5. Запуск пост-обновления:

    /home/xc_vm/bin/php/bin/php /home/xc_vm/console.php update post-update
    
  6. Перезапуск панели в рабочем режиме.


🔄 5. Завершение обновления

Финальные действия выполняются в фазе post-update команды UpdateCommand:

  1. Проверка, включено ли автообновление LB:

    • Если обновлялся MAIN, создаются сигналы обновления для всех Load Balancer’ов.
  2. Обновление версии панели в базе данных.

  3. Удаление устаревших файлов.

  4. Повторное выравнивание прав:

    chown -R xc_vm:xc_vm /home/xc_vm/
    
  5. Перезагрузка системных демонов:

    sudo systemctl daemon-reload
    
  6. Проверка статуса панели:

    sudo /home/xc_vm/status
    
  7. Завершение процесса обновления.


✅ 6. Итоговая схема работы

[ Веб-интерфейс ]
        │
        ▼
[ БД: сигнал update ]
        │
        ▼
[ CRON → console.php cron:root_signals ]
        │
        ▼
[ update.php (PHP) ]
        │
        ▼
[ update (Python) ]
        │
        ▼
[ post-update → update.php ]
        │
        ▼
[ Завершение, рестарт демонов, обновление версии ]

🧩 Ключевые особенности

  • 🔒 Двойная проверка целостности (на уровне PHP и Python).
  • 🧠 Автоматическое распространение обновлений между MAIN и LB.
  • 🧹 Очистка устаревших файлов и выравнивание прав доступа.
  • 🔄 Безопасный перезапуск панели после установки.
  • ⚙️ Гибкость и автономность за счёт CRON и сигналов.