¿Cómo arreglar un contenedor acoplable de Nextcloud después de omitir una versión principal?

¿Cómo arreglar un contenedor acoplable de Nextcloud después de omitir una versión principal?

Estoy ejecutando mi instancia privada de Nextcloud usando Docker (docker-compose). Intenté actualizar a una versión más nueva de Nextcloud, pero no me di cuenta de que no debía omitir una versión principal (de 21 a 23). Ahora no puedo iniciarlo en absoluto:

  • Cuando intento iniciar el contenedor con la versión 23 y activar la actualización, falla porque no puede actualizar desde la 21:
    leifb@***:~/nextcloud$ sudo docker-compose exec --user www-data app php occ upgrade
    Nextcloud or one of the apps require upgrade - only a limited number of commands are available
    [...]
    Exception: Updates between multiple major versions and downgrades are unsupported.
    Update failed
    [...]
    
  • Cuando intento iniciar el contenedor con la versión <23, falla porque cree que los datos son de la versión 23:
    app_1  | Can't start Nextcloud because the version of the data (23.0.3.2) is higher than the docker image version (22.2.6.2) and downgrading is not supported. Are you sure you have pulled the newest image version?
    

¿Hay alguna manera de forzar una actualización o comenzar con la versión 22?

Aquí está mi archivo docker-compose:

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=***
      - MYSQL_PASSWORD=***
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud:22
    restart: always
    ports:
      - 9009:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    environment:
      - MYSQL_PASSWORD=***
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db
      - OVERWRITEHOST=***
      - OVERWRITEPROTOCOL=https

¡Gracias!

Respuesta1

Pude solucionar el problema cambiando manualmente la versión en el version.phparchivo del nextcloudvolumen.

Esto podría causar problemas irreparables. ¡Haga una copia de seguridad de sus datos si desea hacer lo mismo!

La ruta completa de ese archivo era:/var/lib/docker/volumes/nextcloud_nextcloud/_data/version.php

Tenía un antiguo volumen de nextcloud que creé cuando configuré inicialmente nextcloud. Sólo usé el version.phpde ese volumen, ya que estaba bastante seguro de que tenía la versión correcta.

Esto es lo que cambió:

"incorrecto" version.php:

<?php 
$OC_Version = array(23,0,3,2);
$OC_VersionString = '23.0.3';
$OC_Edition = '';
$OC_Channel = 'stable';
$OC_VersionCanBeUpgradedFrom = array (
  'nextcloud' => 
  array (
    '22.2' => true,
    '23.0' => true,
  ),
  'owncloud' => 
  array (
    '10.5' => true,
  ),
);
$OC_Build = '2022-03-21T13:05:48+00:00 5f6449283b5eb3cd0c96f475ff6f68a6c73a8140';
$vendor = 'nextcloud';

"correcto" version.php:

<?php 
$OC_Version = array(21,0,1,1);
$OC_VersionString = '21.0.1';
$OC_Edition = '';
$OC_Channel = 'stable';
$OC_VersionCanBeUpgradedFrom = array (
  'nextcloud' => 
  array (
    '20.0' => true,
    '21.0' => true,
  ),
  'owncloud' => 
  array (
    '10.5' => true,
  ),
);
$OC_Build = '2021-04-08T13:32:52+00:00 bd555dbe8568b2509bd7d82fabbe38d76c86afbe'
;
$vendor = 'nextcloud';

Después de ese cambio, primero pude iniciar nextcloud en la versión 21, para comprobar si todo seguía ahí. Luego pude iniciar y actualizar a 22 y 23 en pasos muy bien.

PD:

docker-compose exec --user www-data app php occLe permite actualizar y desactivar manualmente el modo de mantenimiento.

información relacionada