Home Cloud

Как я обновляю Nextcloud и не теряю выходные

· 2 мин. чтения

Nextcloud выпускает мажорную версию примерно три раза в год, а минорные исправления выходят чаще. Пропускать обновления нельзя: в минорных версиях закрывают уязвимости. Но и обновляться в день релиза тоже не стоит. За несколько лет у меня сложился спокойный порядок.

Правило первое: не перепрыгивать через мажорные версии

Nextcloud официально поддерживает обновление только на одну мажорную версию за раз. С 29-й на 31-ю напрямую нельзя: сначала до последней минорной версии 29, потом до 30, потом до 31. В Docker это означает менять тег образа поэтапно, дожидаясь завершения миграций на каждом шаге.

Правило второе: выждать

Мажорную версию я ставлю не раньше выхода второго-третьего минорного релиза, то есть примерно через месяц-полтора. За это время разработчики сторонних приложений обновляют совместимость, а на форуме собираются отчёты о проблемах. Минорные обновления ставлю в течение недели.

Порядок действий

  1. Читаю заметки о выпуске и раздел «critical changes» в документации администратора.
  2. Проверяю на странице приложений, что всё, чем я пользуюсь, поддерживает новую версию.
  3. Делаю внеочередной бэкап базы и config (см. статью о бэкапах).
  4. Меняю тег образа в compose.yaml, затем выполняю docker compose pull и docker compose up -d.
  5. Смотрю логи контейнера, пока не увижу, что миграции закончились.
  6. Выполняю occ upgrade, если он не отработал автоматически, а затем occ db:add-missing-indices и occ maintenance:repair --include-expensive.
  7. Захожу в «Настройки → Обзор» и разбираю новые предупреждения.

Откат

Если что-то пошло не так, откат простой: вернуть старый тег образа, восстановить дамп базы и config.php. Файлы пользователей при обновлении не трогаются, поэтому их восстанавливать обычно не нужно. Главное — не запускать старую версию поверх уже мигрированной базы: Nextcloud это обнаружит и откажется стартовать, и это правильно.

Образы базы и Redis

PostgreSQL я обновляю отдельно от Nextcloud и гораздо реже. Минорные версии внутри одной мажорной ставятся простой сменой тега. Мажорное обновление требует pg_dump и восстановления в новый кластер, потому что формат данных на диске между мажорными версиями несовместим. Redis хранит только кэш и блокировки, его можно смело пересоздавать.

Автоматизация

Полностью автоматические обновления (Watchtower и подобные) я для Nextcloud не использую. Слишком велик шанс, что ночью приедет мажорная версия с несовместимым приложением. Вместо этого меня раз в неделю уведомляют о вышедших тегах, а решение я принимаю сам.

← Все статьи