A versão 10 do Nextcloud, lançada há 3 dias, promete algumas novidades interessantes, pelo que não podia deixar de a testar! Estes foram os passos que segui para atualizar o meu servidor Nextcloud.

Descarregar a atualização

Descarregar os arquivos da aplicação (nextcloud-10.0.0.tar.bz2), de verificação de integridade (nextcloud-10.0.0.tar.bz2.md5) e de verificação de autenticidade (nextcloud-10.0.0.tar.bz2.asc):

root@server:~# wget https://download.nextcloud.com/server/releases/nextcloud-10.0.0.tar.bz2 https://download.nextcloud.com/server/releases/nextcloud-10.0.0.tar.bz2.md5 https://download.nextcloud.com/server/releases/nextcloud-10.0.0.tar.bz2.asc

Verificar a integridade do arquivo

root@server:~# md5sum -c nextcloud-10.0.0.tar.bz2.md5
nextcloud-10.0.0.tar.bz2: OK

Verificar a autenticidade do arquivo

Descarregar chave do pública do nextcloud:

root@server:~# wget https://nextcloud.com/nextcloud.asc

Importar a chave do pública do nextcloud para o nosso keyring:

root@server:~# gpg --import nextcloud.asc
trustdb created
gpg: key A724937A: public key "Nextcloud Security <security@nextcloud.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Verificar a assinatura do arquivo:

root@server:~# gpg --verify nextcloud-10.0.0.tar.bz2.asc
gpg: assuming signed data in `nextcloud-10.0.0.tar.bz2'
gpg: Signature made Thu Aug 25 05:07:06 2016 WEST using RSA key ID A724937A
gpg: Good signature from "Nextcloud Security <security@nextcloud.com>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2880 6A87 8AE4 23A2 8372  792E D758 99B9 A724 937A

Descompactar o arquivo:

root@server:~# tar xjf nextcloud-10.0.0.tar.bz2

Atualizar o servidor

Preparar a atualização

Gerar uma lista das apps instaladas, para referência futura:

root@server:~# sudo -u www-data php /var/www/nextcloud/occ app:list

Colocar o nextcloud em modo de manutenção:

root@server:~# sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
Maintenance mode enabled

Parar o servidor web:

root@server:~# systemctl stop nginx

Instalar a nova versão

Renomear a pasta da instalação antiga do nextcloud:

root@server:~# mv /var/www/nextcloud /var/www/nextcloud.old

Mover a pasta com a nova versão para a localização anterior:

root@server:~# mv nextcloud /var/www/

Verificar o conteúdo de /var/www:

root@server:~# ls -alF /var/www/
total 28
drwxr-xr-x  7 root   root     4096 Aug 27 11:10 ./
drwxr-xr-x 12 root   root     4096 Mar  6 10:58 ../
#[...]
drwxr-xr-x 14 nobody nogroup  4096 Aug 25 05:01 nextcloud/
drwxr-x--- 14 root   www-data 4096 Jul 20 00:16 nextcloud.old/

Configurar a aplicação

Copiar a configuração antiga para a nova instalação:

root@server:~# cp /var/www/nextcloud.old/config/config.php /var/www/nextcloud/config/

Como mantenho a pasta de dados fora da instalação do nextcloud, basta criar uma ligação simbólica para a nova instalação:

root@server:~# ln -sf /home/nextcloud/data /var/www/nextcloud/data

Alterar temporariamente as permissões da pasta nextcloud para facilitar o processo de atualização:

root@server:~# chown -R www-data:www-data /var/www/nextcloud

Reiniciar o servidor web:

root@server:~# systemctl start nginx

Atualizar a instalação

Lançar o processo de atualização do nextcloud:

root@server:~# sudo -u www-data php /var/www/nextcloud/occ upgrade

Este processo poderá levar algum tempo, dependendo do tamanho da base de dados, da quantidade de ficheiros e do desempenho do sistema:

Nextcloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Set log level to debug
Checking whether the database schema can be updated (this can take a long time depending on the database size)
 Done
 27/27 [============================] 100%
 # [...]

No final, uma mensagem assinala se a atualização correu bem ou se ocorreu algum erro:

# [...]
Starting code integrity check...
Finished code integrity check
Update successful
Maintenance mode is kept active
Reset log level

Desativar o modo de manutenção:

root@server:~# sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
Nextcloud is in maintenance mode - no app have been loaded
Maintenance mode disabled

Definir permissões de segurança

Por fim, corrigir as permissões da pasta nextcloud para garantir a segurança da instalação, seguindo as instruções disponíveis aqui.

Verificar a atualização

E pronto, agora é só abrir o browser e apontar para a URL do servidor nextcloud. Possivelmente será necessário instalar e/ou ativar algumas apps, mas tudo deverá funcionar na perfeição.

Referências