Як підтримувати Filemote в актуальному стані

Будь-яке встановлення перевіряє оновлення один раз під час старту, а потім раз на добу. Що відбувається далі, залежить від платформи, бо умови в них справді різні: у Windows є вікно, щоб запитати вас, а в сервера на Linux — немає.

Windows: запитує конфігуратор

У Windows оновленнями керує конфігуратор, а агент навмисно мовчить, щоб ви не отримали два запити чи два установники, що працюють водночас.

Коли з'являється новіша версія, ви отримуєте діалог із двома варіантами:

  • Встановити — завантажує випуск з індикатором поступу, потім закриває застосунок, щоб установник міг замінити файли, які інакше заблоковані. Далі все робить установник.
  • Пропустити — запам'ятовує саме цю версію й перестає про неї запитувати. Пізніша версія запитає знову.

Linux і macOS: цим займається агент

Запитувати ніде, тому агент завантажує й застосовує оновлення сам.

Він не заважатиме вам: поки триває передавання файлів, він пише в журнал transfers in progress — deferring to the next check і лишає оновлення до наступного циклу.

Перш ніж щось замінити, агент перевіряє, чи вистачає вільного місця на диску, і звіряє SHA-256 завантаженого файлу. Замінивши бінарник, він запускає новий із --version і порівнює вивід; якщо ця перевірка не проходить, повертається попередній бінарник, а оновлення скасовується.

Коли каталог встановлення належить root

Агент працює від вашого користувача, а /opt/filemote належить root, тому туди він встановити не може. Перевіряє він це, реально намагаючись записати файл — біти прав досить часто брешуть на змонтованих лише для читання розділах і в контейнерах, — і коли каталог недоступний для запису, завантажує й перевіряє оновлення, розпаковує його в /tmp/.filemote-update і записує в журнал єдину команду, яка доводить справу до кінця:

sudo /opt/filemote/apply-update.sh /tmp/.filemote-update

Цей скрипт зупиняє службу, зберігає старий бінарник, доки новий не пройде перевірку запуском, відкочується, якщо той її не пройшов, оновлює джерела AI-сервісу і знову запускає службу.

В архівах аж до 1.11.0 включно apply-update.sh був відсутній, тому на тих встановленнях команда вище вказує на неіснуючий файл. Доки ви не перейшли на новішу збірку, оновлюйтесь повторним запуском скрипта встановлення з нового архіву:

tar xzf filemote-<нова-версія>-linux-x64.tar.gz
cd filemote-<нова-версія>-linux-x64
sudo ./install.sh

Повторний запуск скрипта зберігає ваші налаштування та завантажені моделі.

Що замінює оновлення

Лише дві речі: бінарник агента та джерела AI-сервісу. Правило влаштоване як список дозволеного, а не список винятків, тому жодна майбутня зміна структури архіву не зможе непомітно почати перезаписувати щось інше.

Оновлення ніколи не чіпає:

  • app_settings.json — ваш вхід, прив'язаний токен і відкриті теки;
  • models — завантажені AI-моделі, найдорожчу частину;
  • knowledge_base — усе, що ви проіндексували;
  • маркер, який фіксує, які Python-залежності встановлено.

У Windows та сама гарантія працює з іншої причини: оновлення на місці ніколи не запускає деінсталятор, тому приватний Python, моделі та налаштування лишаються на місці.

Якщо нова версія змінила вимоги до Python, AI-сервіс помітить це й перевстановить залежності під час наступного запуску AI.

Портативна збірка та ClickOnce

  • Портативна збірка не має механізму оновлення. Завантажте новий архів і замініть теку.
  • Збірка ClickOnce оновлює себе під час кожного запуску — заради цього вона й існує.

Як це вимкнути

Встановіть UpdateCheckEnabled у false в app_settings.json, щоб узагалі перестати перевіряти, або перемикайте UpdateChannel між stable і beta. Обидва поля описані у статті налаштування агента вручну.

Зрідка випуск позначається як такий, що перебуває нижче підтримуваного порогу. Такі записуються в журнал із поміткою «встановіть якнайшвидше» — зазвичай це виправлення безпеки — і їх варто ставити, навіть якщо зазвичай ви оновлення відкладаєте.

Оновлено 2026-07-31

Не допомогло — написати в підтримку