Estou executando minha instância privada do Nextcloud usando o docker (docker-compose). Tentei atualizar para uma versão mais recente do Nextcloud, mas não percebi que não deveria pular uma versão principal (de 21 para 23). Agora não consigo começar de jeito nenhum:
- Quando tento iniciar o contêiner com a versão 23 e acionar a atualização, ele falha porque não é possível atualizar a partir da 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 [...]
- Quando tento iniciar o contêiner com a versão <23, ele falha porque pensa que os dados são da versão 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?
Existe uma maneira de forçar uma atualização ou começar com a versão 22?
Aqui está meu arquivo 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
Obrigado!
Responder1
Consegui resolver o problema alterando manualmente a versão no version.php
arquivo do nextcloud
volume.
Isso pode causar problemas irreparáveis. Faça backup dos seus dados se quiser fazer o mesmo!
O caminho completo para esse arquivo era:/var/lib/docker/volumes/nextcloud_nextcloud/_data/version.php
Eu tinha um volume nextcloud antigo que criei quando configurei inicialmente o nextcloud. Acabei de usar o version.php
daquele volume, pois estava bastante confiante de que tinha a versão correta.
Aqui está o que mudou:
"incorreta" 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';
"correto" 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';
Após essa mudança, eu poderia iniciar primeiro o nextcloud na versão 21, para verificar se tudo ainda estava lá. Em seguida, consegui iniciar e atualizar para 22 e 23 em etapas perfeitamente.
PS:
docker-compose exec --user www-data app php occ
Permite atualizar e desativar manualmente o modo de manutenção.