Как поддерживать 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

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