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.php
archivo del nextcloud
volumen.
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.php
de 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 occ
Le permite actualizar y desactivar manualmente el modo de mantenimiento.