Pesquise...

Últimos Posts

Arquivo de Posts

2021 - 2020 - 2019 - 2018 - 2017 - 2016 - 2015 - 2014 - 2013 - 2012

Postagens Populares

Vem Comigo

     
  •    
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Tecnologia do Blogger.

Total de Acessos


Saudações,

Este post deveria ter saído no final do ano passado. Mas a correria do trabalho não permitiu.

Desta feita eu vou compartilhar uma dica de como atualizar um NextCloud 16 via atualização automática.

Automática? Sim, calma você vai entender.


SSL certificate problem: Atualizando o Nextcloud

Quando a cliente me contatou, eu pesei que seria algo do tipo: Backup, atualizações automáticas e fim. 

Mas... é... sempre tem um "mas". 😅 E isto é bom. É uma oportunidade de apender.

Quando eu entrei na área de atualização do Nextcloud, eu me deparei com esta tela...

Nextcloud na versão 16.0.0

Na ocasião, outubro de 2021 se não me engano, a ultima versão do Nextcloud era a 22.2.0...


E, clicando no botão Abrir atualizador, o Nextcloud ficava e não saía desta tela...

Nextcloud Updater

Olhando os logs do servidor web, a seguinte mensagem era exibida...


Pesquisando por "Could not do request to updater server: SSL certificate problem: certificate has expired", vemos que o erro parece está relaciona com o um certificado expirado ( cert.pem ). Vi um caso parecido em um WordPress e seu certificado ( ca-bundle.crt ). Em teoria, em ambas as situações, basta baixar um novo certificado em curl.se/ca/cacert.pem e substituir o conteúdo do cert em questão. Existem outros meios de atualização do Nextcloud, incluindo via FTP. Contudo eu preferi seguir outro caminho para aprender um pouco mais.


Editando o arquivo index.php do diretório updater

Abra o arquivo updater/index.php para edição.

Dentro deste arquivo, localize o primeiro curl_init, e altere...

DE

...
// Download update response
$curl = curl_init();
curl_setopt_array($curl, [
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $updateURL,
        CURLOPT_USERAGENT => 'Nextcloud Updater',
]);
...


PARA

...
// Download update response
$curl = curl_init();
curl_setopt_array($curl, [
        CURLOPT_SSL_VERIFYHOST => 0,
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $updateURL,
        CURLOPT_USERAGENT => 'Nextcloud Updater',
]);
...


CURLOPT_SSL_VERIFYHOST: Quando o valor de verificação é 0 (zero), a conexão é bem-sucedida independentemente dos nomes no certificado. Use essa habilidade com cautela!


Ainda no arquivo updater/index.php localize o segundo curl_init, e altere...

DE

...
$fp = fopen($storageLocation . basename($response['url']), 'w+');
$ch = curl_init($response['url']);
curl_setopt_array($ch, [
        CURLOPT_FILE => $fp,
        CURLOPT_USERAGENT => 'Nextcloud Updater',
]);
...


PARA

...
$fp = fopen($storageLocation . basename($response['url']), 'w+');
$ch = curl_init($response['url']);
curl_setopt_array($ch, [
        CURLOPT_SSL_VERIFYHOST => 0,
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_FILE => $fp,
        CURLOPT_USERAGENT => 'Nextcloud Updater',
]);
...


CURLOPT_SSL_VERIFYPEER: Esta opção determina se o curl verifica a autenticidade do certificado do servidor. 1 significa que o curl verifica; 0 (zero) significa que não.


Feitas as alterações, a atualização iniciou com o CURLOPT_SSL_VERIFYHOST e CURLOPT_SSL_VERIFYPEER desativados...

Verificando atualização


Iniciando atualização



Web updater: desativando modo de manutenção


Sucesso na atualização!

Agora é só continuar na lógica acima, caso necessário, e atualizar o Nextcloud passo-a-passo, uma versão de cada vez!

Nextcloud must be upgraded step by step:
Before you can upgrade to the next major release, Nextcloud upgrades to the latest point release.
Then run the upgrade again to upgrade to the next major release’s latest point release.
You cannot skip major releases. Please re-run the upgrade until you have reached the highest available (or applicable) release.
Example: 18.0.5 -> 18.0.11 -> 19.0.5 -> 20.0.2

Eu atualizei até o Nextcloud 20.0.13. Pois o Nextcloud 21 requer o MariaDB 10.2 ou posterior! O servidor da cliente não suporta esta versão do MariaDB. E atualizar o servidor de banco de dados não estava nos planos da cliente.

Enfim... Nextcloud atualizado na medida do possível e cliente satisfeito com o trabalho.


Paz a todos!