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! |
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
0 comentários:
Postar um comentário